From: uz Date: Sun, 31 Jul 2011 14:01:11 +0000 (+0000) Subject: Move scope type definitions to common/ X-Git-Tag: V2.13.3~367 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4191eb771878e678121e22748475e81778d0e820;p=cc65 Move scope type definitions to common/ git-svn-id: svn://svn.cc65.org/cc65/trunk@5095 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/ca65/enum.c b/src/ca65/enum.c index ee76e4632..ebb1173d7 100644 --- a/src/ca65/enum.c +++ b/src/ca65/enum.c @@ -35,6 +35,7 @@ /* common */ #include "addrsize.h" +#include "scopedefs.h" /* ca65 */ #include "condasm.h" @@ -66,7 +67,7 @@ void DoEnum (void) int Anon = (CurTok.Tok != TOK_IDENT); if (!Anon) { /* Enter a new scope, then skip the name */ - SymEnterLevel (&CurTok.SVal, ST_ENUM, ADDR_SIZE_ABS, 0); + SymEnterLevel (&CurTok.SVal, SCOPETYPE_ENUM, ADDR_SIZE_ABS, 0); NextTok (); } diff --git a/src/ca65/main.c b/src/ca65/main.c index c09beed12..2d1cd5432 100644 --- a/src/ca65/main.c +++ b/src/ca65/main.c @@ -44,6 +44,7 @@ #include "cmdline.h" #include "mmodel.h" #include "print.h" +#include "scopedefs.h" #include "strbuf.h" #include "target.h" #include "tgttrans.h" @@ -868,7 +869,7 @@ int main (int argc, char* argv []) /* Enter the base lexical level. We must do that here, since we may * define symbols using -D. */ - SymEnterLevel (&GlobalNameSpace, ST_GLOBAL, ADDR_SIZE_DEFAULT, 0); + SymEnterLevel (&GlobalNameSpace, SCOPETYPE_FILE, ADDR_SIZE_DEFAULT, 0); /* Initialize the line infos. Must be done here, since we need line infos * for symbol definitions. diff --git a/src/ca65/pseudo.c b/src/ca65/pseudo.c index c1736d9da..e900f8861 100644 --- a/src/ca65/pseudo.c +++ b/src/ca65/pseudo.c @@ -47,6 +47,7 @@ #include "cddefs.h" #include "coll.h" #include "intstack.h" +#include "scopedefs.h" #include "symdefs.h" #include "tgttrans.h" #include "xmalloc.h" @@ -816,7 +817,7 @@ static void DoEnd (void) static void DoEndProc (void) /* Leave a lexical level */ { - if (GetCurrentSymTabType () != ST_PROC) { + if (GetCurrentSymTabType () != SCOPETYPE_PROC) { /* No local scope */ ErrorSkip ("No open .PROC"); } else { @@ -829,7 +830,7 @@ static void DoEndProc (void) static void DoEndScope (void) /* Leave a lexical level */ { - if ( GetCurrentSymTabType () != ST_SCOPE) { + if ( GetCurrentSymTabType () != SCOPETYPE_SCOPE) { /* No local scope */ ErrorSkip ("No open .SCOPE"); } else { @@ -1538,7 +1539,7 @@ static void DoProc (void) } /* Enter a new scope */ - SymEnterLevel (&Name, ST_PROC, AddrSize, Sym); + SymEnterLevel (&Name, SCOPETYPE_PROC, AddrSize, Sym); /* Free memory for Name */ SB_Done (&Name); @@ -1665,7 +1666,7 @@ static void DoScope (void) AddrSize = OptionalAddrSize (); /* Enter the new scope */ - SymEnterLevel (&Name, ST_SCOPE, AddrSize, 0); + SymEnterLevel (&Name, SCOPETYPE_SCOPE, AddrSize, 0); /* Free memory for Name */ SB_Done (&Name); @@ -1759,7 +1760,7 @@ static void DoTag (void) ErrorSkip ("Unknown struct"); return; } - if (GetSymTabType (Struct) != ST_STRUCT) { + if (GetSymTabType (Struct) != SCOPETYPE_STRUCT) { ErrorSkip ("Not a struct"); return; } diff --git a/src/ca65/struct.c b/src/ca65/struct.c index 6e854727c..6418e7228 100644 --- a/src/ca65/struct.c +++ b/src/ca65/struct.c @@ -35,6 +35,7 @@ /* common */ #include "addrsize.h" +#include "scopedefs.h" /* ca65 */ #include "condasm.h" @@ -107,7 +108,7 @@ static long DoStructInternal (long Offs, unsigned Type) int Anon = (CurTok.Tok != TOK_IDENT); if (!Anon) { /* Enter a new scope, then skip the name */ - SymEnterLevel (&CurTok.SVal, ST_STRUCT, ADDR_SIZE_ABS, 0); + SymEnterLevel (&CurTok.SVal, SCOPETYPE_STRUCT, ADDR_SIZE_ABS, 0); NextTok (); /* Start at zero offset in the new scope */ Offs = 0; @@ -194,7 +195,7 @@ static long DoStructInternal (long Offs, unsigned Type) Struct = ParseScopedSymTable (); if (Struct == 0) { ErrorSkip ("Unknown struct/union"); - } else if (GetSymTabType (Struct) != ST_STRUCT) { + } else if (GetSymTabType (Struct) != SCOPETYPE_STRUCT) { ErrorSkip ("Not a struct/union"); } else { SymEntry* SizeSym = GetSizeOfScope (Struct); diff --git a/src/ca65/symtab.c b/src/ca65/symtab.c index 70fcdf42e..e592d06d4 100644 --- a/src/ca65/symtab.c +++ b/src/ca65/symtab.c @@ -40,6 +40,7 @@ #include "check.h" #include "hashstr.h" #include "mmodel.h" +#include "scopedefs.h" #include "symdefs.h" #include "xmalloc.h" @@ -117,7 +118,7 @@ static SymTable* NewSymTable (SymTable* Parent, const StrBuf* Name) S->SegRanges = AUTO_COLLECTION_INITIALIZER; S->Flags = ST_NONE; S->AddrSize = ADDR_SIZE_DEFAULT; - S->Type = ST_UNDEF; + S->Type = SCOPETYPE_UNDEF; S->Level = Level; S->TableSlots = Slots; S->TableEntries = 0; @@ -223,7 +224,7 @@ void SymEnterLevel (const StrBuf* ScopeName, unsigned char Type, * does not allocate memory for useless data (unhandled types here don't * occupy space in any segment). */ - if (CurrentScope->Type <= ST_SCOPE_HAS_DATA) { + if (CurrentScope->Type <= SCOPETYPE_HAS_DATA) { AddSegRanges (&CurrentScope->SegRanges); } } @@ -913,7 +914,7 @@ void WriteScopes (void) while (S) { /* Type must be defined */ - CHECK (S->Type != ST_UNDEF); + CHECK (S->Type != SCOPETYPE_UNDEF); /* Id of scope */ ObjWriteVar (S->Id); diff --git a/src/ca65/symtab.h b/src/ca65/symtab.h index 96873e061..18469cc65 100644 --- a/src/ca65/symtab.h +++ b/src/ca65/symtab.h @@ -60,17 +60,6 @@ #define ST_NONE 0x00 /* No flags */ #define ST_DEFINED 0x01 /* Scope has been defined */ -/* Symbol table types */ -enum { - ST_GLOBAL, /* Root level */ - ST_PROC, /* .PROC */ - ST_SCOPE, /* .SCOPE */ - ST_SCOPE_HAS_DATA = ST_SCOPE, /* Last scope that contains data */ - ST_STRUCT, /* .STRUCT/.UNION */ - ST_ENUM, /* .ENUM */ - ST_UNDEF = 0xFF -}; - /* A symbol table */ typedef struct SymTable SymTable; struct SymTable { diff --git a/src/common/scopedefs.h b/src/common/scopedefs.h new file mode 100644 index 000000000..94abe06c2 --- /dev/null +++ b/src/common/scopedefs.h @@ -0,0 +1,66 @@ +/*****************************************************************************/ +/* */ +/* symdefs.h */ +/* */ +/* Scope definitions for the bin65 binary utils */ +/* */ +/* */ +/* */ +/* (C) 2011, 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. */ +/* */ +/*****************************************************************************/ + + + +#ifndef SCOPEDEFS_H +#define SCOPEDEFS_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Scope types */ +enum { + SCOPETYPE_GLOBAL, /* Global level */ + SCOPETYPE_FILE, /* File level */ + SCOPETYPE_PROC, /* .PROC */ + SCOPETYPE_SCOPE, /* .SCOPE */ + SCOPETYPE_HAS_DATA = SCOPETYPE_SCOPE, /* Last scope that contains data */ + SCOPETYPE_STRUCT, /* .STRUCT/.UNION */ + SCOPETYPE_ENUM, /* .ENUM */ + SCOPETYPE_UNDEF = 0xFF +}; + + + +/* End of scopedefs.h */ + +#endif + + +