X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fdeclare.h;h=96cdc40d92e605af4e1fc05328bf8ca8268bc763;hb=c6ee5a841878ccdbf9ab85d3dafdd088648b93ba;hp=606ca36d4fb2bd4829f8ee291eaff98d7afa4dac;hpb=f196e7c5c93c3f29f1bb672d70be20e120d68729;p=cc65 diff --git a/src/cc65/declare.h b/src/cc65/declare.h index 606ca36d4..96cdc40d9 100644 --- a/src/cc65/declare.h +++ b/src/cc65/declare.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (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" @@ -58,25 +61,29 @@ /* Result of ParseDeclSpec */ typedef struct DeclSpec DeclSpec; struct DeclSpec { - unsigned StorageClass; /* One of the SC_xxx flags */ + unsigned StorageClass; /* One of the SC_xxx flags */ Type Type[MAXTYPELEN]; /* Type of the declaration spec */ - unsigned Flags; /* Bitmapped flags */ + unsigned Flags; /* Bitmapped flags */ }; /* 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*/ + 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; @@ -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. - */ + */