]> git.sur5r.net Git - cc65/blobdiff - src/cc65/declare.h
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / src / cc65 / declare.h
index 606ca36d4fb2bd4829f8ee291eaff98d7afa4dac..3a21a59d98b9fddd309bfe956d90db59b448979b 100644 (file)
@@ -1,15 +1,15 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                                declare.h                                 */
+/*                                 declare.h                                 */
 /*                                                                           */
-/*                Parse variable and function declarations                  */
+/*                 Parse variable and function declarations                  */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2006 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"
 
 
 /*****************************************************************************/
-/*                                  Data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
 
 /* Masks for the Flags field in DeclSpec */
-#define DS_DEF_STORAGE         0x0001U /* Default storage class used   */
-#define DS_DEF_TYPE            0x0002U /* Default type used            */
-#define DS_EXTRA_TYPE          0x0004U /* Extra type declared          */
+#define DS_DEF_STORAGE          0x0001U /* Default storage class used   */
+#define DS_DEF_TYPE             0x0002U /* Default type used            */
+#define DS_EXTRA_TYPE           0x0004U /* Extra type declared          */
 
 /* 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 */
-    unsigned   Index;                  /* 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;
 
 
 
 /*****************************************************************************/
-/*                                  Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
@@ -89,7 +96,7 @@ struct Declaration {
 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, long DefType);
@@ -104,7 +111,7 @@ void CheckEmptyDecl (const DeclSpec* D);
 unsigned ParseInit (Type* T);
 /* Parse initialization of variables. Return the number of initialized data
  * bytes.
- */                                                        
+ */