]> de.git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - parser.h
Use C++ naming for structures
[xonotic/gmqcc.git] / parser.h
index eb77effe8e5e046c4f248cc96da39d6be9b054b3..7f07bdf404c5e746bec00091421fe912bbbf617a 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -1,52 +1,29 @@
-/*
- * Copyright (C) 2012, 2013, 2014
- *     Wolfgang Bumiller
- *     Dale Weiler
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
 #ifndef GMQCC_PARSER_HDR
 #define GMQCC_PARSER_HDR
 #include "gmqcc.h"
 #include "lexer.h"
 #include "ast.h"
 
 #ifndef GMQCC_PARSER_HDR
 #define GMQCC_PARSER_HDR
 #include "gmqcc.h"
 #include "lexer.h"
 #include "ast.h"
 
-typedef struct intrin_s intrin_t;
-typedef struct parser_s parser_t;
+struct parser_t;
+struct intrin_t;
 
 
-typedef struct {
-    struct parser_s *parser;
-    ast_value      **imm_float;              /* vector<ast_value*> */
-    ast_value      **imm_vector;             /* vector<ast_value*> */
-    ast_value      **imm_string;             /* vector<ast_value*> */
-    hash_table_t    *imm_string_untranslate; /* map<string, ast_value*> */
-    hash_table_t    *imm_string_dotranslate; /* map<string, ast_value*> */
-} fold_t;
+struct fold_t {
+    parser_t *parser;
+    ast_value **imm_float;              /* vector<ast_value*> */
+    ast_value **imm_vector;             /* vector<ast_value*> */
+    ast_value **imm_string;             /* vector<ast_value*> */
+    hash_table_t *imm_string_untranslate; /* map<string, ast_value*> */
+    hash_table_t *imm_string_dotranslate; /* map<string, ast_value*> */
+};
 
 
-typedef struct {
+struct intrin_func_t {
     ast_expression *(*intrin)(intrin_t *);
     ast_expression *(*intrin)(intrin_t *);
-    const char       *name;
-    const char       *alias;
-    size_t            args;
-} intrin_func_t;
+    const char *name;
+    const char *alias;
+    size_t args;
+};
 
 
-struct intrin_s {
+struct intrin_t {
     intrin_func_t  *intrinsics;              /* vector<intrin_func_t>   */
     ast_expression **generated;              /* vector<ast_expression*> */
     parser_t       *parser;
     intrin_func_t  *intrinsics;              /* vector<intrin_func_t>   */
     ast_expression **generated;              /* vector<ast_expression*> */
     parser_t       *parser;
@@ -55,7 +32,7 @@ struct intrin_s {
 
 #define parser_ctx(p) ((p)->lex->tok.ctx)
 
 
 #define parser_ctx(p) ((p)->lex->tok.ctx)
 
-struct parser_s {
+struct parser_t {
     lex_file *lex;
     int      tok;
 
     lex_file *lex;
     int      tok;
 
@@ -81,10 +58,10 @@ struct parser_s {
     /* All the labels the function defined...
      * Should they be in ast_function instead?
      */
     /* All the labels the function defined...
      * Should they be in ast_function instead?
      */
-    ast_label  **labels;
-    ast_goto   **gotos;
-    const char **breaks;
-    const char **continues;
+    std::vector<ast_label*> labels;
+    std::vector<ast_goto*> gotos;
+    std::vector<const char *> breaks;
+    std::vector<const char *> continues;
 
     /* A list of hashtables for each scope */
     ht *variables;
 
     /* A list of hashtables for each scope */
     ht *variables;
@@ -92,10 +69,6 @@ struct parser_s {
     ht htglobals;
     ht *typedefs;
 
     ht htglobals;
     ht *typedefs;
 
-    /* same as above but for the spelling corrector */
-    correct_trie_t  **correct_variables;
-    size_t         ***correct_variables_score;  /* vector of vector of size_t* */
-
     /* not to be used directly, we use the hash table */
     ast_expression **_locals;
     size_t          *_blocklocals;
     /* not to be used directly, we use the hash table */
     ast_expression **_locals;
     size_t          *_blocklocals;