X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fdeclare.h;h=c079a1a0d28f4a9c55bab97a3671b66355b7384b;hb=6628389d8564506a9b9d8af679083f132d237c64;hp=57bf41516501a923ca5d3d9be6cb9988d0ef6887;hpb=53dd513176425872128ef26031d00952ef7a0628;p=cc65 diff --git a/src/cc65/declare.h b/src/cc65/declare.h index 57bf41516..c079a1a0d 100644 --- a/src/cc65/declare.h +++ b/src/cc65/declare.h @@ -1,8 +1,35 @@ -/* - * declare.h - * - * Ullrich von Bassewitz, 20.06.1998 - */ +/*****************************************************************************/ +/* */ +/* declare.h */ +/* */ +/* Parse variable and function declarations */ +/* */ +/* */ +/* */ +/* (C) 1998-2001 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* 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. */ +/* */ +/*****************************************************************************/ @@ -11,27 +38,29 @@ +/* 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_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 */ @@ -41,7 +70,7 @@ struct Declaration { type Type [MAXTYPELEN]; /* The type */ /* Working variables */ - type* T; /* Used to build Type */ + type* T; /* Used to build Type */ }; /* Modes for ParseDecl */ @@ -66,8 +95,14 @@ void ParseDecl (const DeclSpec* Spec, Declaration* D, unsigned Mode); void ParseDeclSpec (DeclSpec* D, unsigned DefStorage, int DefType); /* Parse a declaration specification */ -void ParseInit (type* tptr); -/* Parse initialization of variables */ +void CheckEmptyDecl (const DeclSpec* D); +/* Called after an empty type declaration (that is, a type declaration without + * a variable). Checks if the declaration does really make sense and issues a + * warning if not. + */ + +void ParseInit (type* T); +/* Parse initialization of variables. */