/* */
/* */
/* */
-/* (C) 1998-2006 Ullrich von Bassewitz */
-/* Römerstrasse 52 */
+/* (C) 1998-2008 Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
/* */
/* Result of ParseDecl */
typedef struct Declaration Declaration;
struct Declaration {
- ident Ident; /* The identifier if any, else empty */
+ unsigned StorageClass; /* A set of SC_xxx flags */
Type Type[MAXTYPELEN]; /* The type */
+ ident Ident; /* The identifier if any, else empty */
/* Working variables */
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;
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);