X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fdeclare.h;h=96cdc40d92e605af4e1fc05328bf8ca8268bc763;hb=77bfcc1ff0a88e0430f077d22b6fad07c7d0c86b;hp=5195456c38f5812692cca947337661cee4ee18e8;hpb=c123666d24e5dda1e7242b0c31b90c8cea769f82;p=cc65 diff --git a/src/cc65/declare.h b/src/cc65/declare.h index 5195456c3..96cdc40d9 100644 --- a/src/cc65/declare.h +++ b/src/cc65/declare.h @@ -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" @@ -58,25 +61,29 @@ /* 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. */