]> git.sur5r.net Git - cc65/blobdiff - src/cc65/declare.h
Added dummy classification macros for the remaining targets - even for those that...
[cc65] / src / cc65 / declare.h
index 5ff18ce0a2952013052c418644ee3d37b9a4b5dd..96cdc40d92e605af4e1fc05328bf8ca8268bc763 100644 (file)
@@ -1,8 +1,35 @@
-/*
- * declare.h
- *
- * Ullrich von Bassewitz, 20.06.1998
- */
+/*****************************************************************************/
+/*                                                                           */
+/*                                declare.h                                 */
+/*                                                                           */
+/*                Parse variable and function declarations                  */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (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       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
 
 
 
 
 
 
+/* common */
+#include "coll.h"
+
+/* cc65 */
 #include "scanner.h"
 #include "symtab.h"
 
 
 
 /*****************************************************************************/
-/*                                  Data                                    */
+/*                                  Data                                    */
 /*****************************************************************************/
 
 
 /* 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;
 
 
 
@@ -58,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);
@@ -73,8 +108,10 @@ void CheckEmptyDecl (const DeclSpec* D);
  * warning if not.
  */
 
-void ParseInit (type* tptr);
-/* Parse initialization of variables */
+unsigned ParseInit (Type* T);
+/* Parse initialization of variables. Return the number of initialized data
+ * bytes.
+ */