]> git.sur5r.net Git - cc65/blobdiff - src/cc65/declare.h
Change the OptStackOps function so that it adjusts the instruction pointer
[cc65] / src / cc65 / declare.h
index 5195456c38f5812692cca947337661cee4ee18e8..96cdc40d92e605af4e1fc05328bf8ca8268bc763 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2003 Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
-/*               D-70794 Filderstadt                                         */
-/* EMail:        uz@cc65.org                                                 */
+/* (C) 1998-2009, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
@@ -38,6 +38,9 @@
 
 
 
+/* common */
+#include "coll.h"
+
 /* cc65 */
 #include "scanner.h"
 #include "symtab.h"
 /* Result of ParseDeclSpec */
 typedef struct DeclSpec DeclSpec;
 struct DeclSpec {
-    unsigned   StorageClass;           /* One of the SC_xxx flags      */
-    type       Type [MAXTYPELEN];      /* Type of the declaration spec */
-    unsigned   Flags;                  /* Bitmapped flags              */
+    unsigned   StorageClass;           /* One of the SC_xxx flags      */
+    Type               Type[MAXTYPELEN];       /* Type of the declaration spec */
+    unsigned   Flags;                  /* Bitmapped flags              */
 };
 
 /* Result of ParseDecl */
 typedef struct Declaration Declaration;
 struct Declaration {
-    ident      Ident;                  /* The identifier if any, else empty */
-    type       Type [MAXTYPELEN];      /* The type */
+    unsigned    StorageClass;           /* A set of SC_xxx flags */
+    Type       Type[MAXTYPELEN];       /* The type */
+    ident      Ident;                  /* The identifier, if any*/
+    Collection* Attributes;             /* Attributes if any */
 
     /* Working variables */
-    type*      T;                      /* Used to build Type */
+    unsigned   Index;              /* Used to build Type */
 };
 
 /* Modes for ParseDecl */
-#define DM_NEED_IDENT  0U              /* We must have an identifier */
-#define DM_NO_IDENT    1U              /* We won't read an identifier */
-#define DM_ACCEPT_IDENT        2U              /* We will accept an id if there is one */
+typedef enum {
+    DM_NEED_IDENT,                      /* We must have an identifier */
+    DM_NO_IDENT,                        /* We won't read an identifier */
+    DM_ACCEPT_IDENT,                    /* We will accept an id if there is one */
+} declmode_t;
 
 
 
@@ -86,13 +93,13 @@ struct Declaration {
 
 
 
-type* ParseType (type* Type);
+Type* ParseType (Type* Type);
 /* Parse a complete type specification */
 
-void ParseDecl (const DeclSpec* Spec, Declaration* D, unsigned Mode);
+void ParseDecl (const DeclSpec* Spec, Declaration* D, declmode_t Mode);
 /* Parse a variable, type or function declaration */
 
-void ParseDeclSpec (DeclSpec* D, unsigned DefStorage, int DefType);
+void ParseDeclSpec (DeclSpec* D, unsigned DefStorage, long DefType);
 /* Parse a declaration specification */
 
 void CheckEmptyDecl (const DeclSpec* D);
@@ -101,8 +108,8 @@ void CheckEmptyDecl (const DeclSpec* D);
  * warning if not.
  */
 
-unsigned ParseInit (type* T);
-/* Parse initialization of variables. Return the number of initialized data 
+unsigned ParseInit (Type* T);
+/* Parse initialization of variables. Return the number of initialized data
  * bytes.
  */