1
0
mirror of https://github.com/cc65/cc65.git synced 2025-08-15 06:27:36 +00:00

Implementation of StringPool has changed.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5242 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2011-08-21 13:21:11 +00:00
parent 4461988fd1
commit 77110021ab
3 changed files with 26 additions and 12 deletions

View File

@@ -863,6 +863,9 @@ int main (int argc, char* argv [])
/* Initialize the cmdline module */ /* Initialize the cmdline module */
InitCmdLine (&argc, &argv, "ca65"); InitCmdLine (&argc, &argv, "ca65");
/* Initialize the string pool */
InitStrPool ();
/* Initialize the include search paths */ /* Initialize the include search paths */
InitIncludePaths (); InitIncludePaths ();

View File

@@ -45,7 +45,7 @@
StringPool StrPool = STATIC_STRINGPOOL_INITIALIZER; StringPool* StrPool = 0;
@@ -61,7 +61,7 @@ void WriteStrPool (void)
unsigned I; unsigned I;
/* Get the number of strings in the string pool */ /* Get the number of strings in the string pool */
unsigned Count = SP_GetCount (&StrPool); unsigned Count = SP_GetCount (StrPool);
/* Tell the object file module that we're about to start the string pool */ /* Tell the object file module that we're about to start the string pool */
ObjStartStrPool (); ObjStartStrPool ();
@@ -71,7 +71,7 @@ void WriteStrPool (void)
/* Write the strings in id order */ /* Write the strings in id order */
for (I = 0; I < Count; ++I) { for (I = 0; I < Count; ++I) {
ObjWriteBuf (SP_Get (&StrPool, I)); ObjWriteBuf (SP_Get (StrPool, I));
} }
/* Done writing the string pool */ /* Done writing the string pool */
@@ -80,3 +80,11 @@ void WriteStrPool (void)
void InitStrPool (void)
/* Initialize the string pool */
{
StrPool = NewStringPool (1103);
}

View File

@@ -49,7 +49,7 @@
extern StringPool StrPool; extern StringPool* StrPool;
@@ -63,45 +63,48 @@ extern StringPool StrPool;
INLINE unsigned GetStrBufId (const StrBuf* S) INLINE unsigned GetStrBufId (const StrBuf* S)
/* Return the id of the given string buffer */ /* Return the id of the given string buffer */
{ {
return SP_Add (&StrPool, S); return SP_Add (StrPool, S);
} }
#else #else
# define GetStrBufId(S) SP_Add (&StrPool, (S)) # define GetStrBufId(S) SP_Add (StrPool, (S))
#endif #endif
#if defined(HAVE_INLINE) #if defined(HAVE_INLINE)
INLINE unsigned GetStringId (const char* S) INLINE unsigned GetStringId (const char* S)
/* Return the id of the given string */ /* Return the id of the given string */
{ {
return SP_AddStr (&StrPool, S); return SP_AddStr (StrPool, S);
} }
#else #else
# define GetStringId(S) SP_AddStr (&StrPool, (S)) # define GetStringId(S) SP_AddStr (StrPool, (S))
#endif #endif
#if defined(HAVE_INLINE) #if defined(HAVE_INLINE)
INLINE const StrBuf* GetStrBuf (unsigned Index) INLINE const StrBuf* GetStrBuf (unsigned Index)
/* Convert a string index into a string */ /* Convert a string index into a string */
{ {
return SP_Get (&StrPool, Index); return SP_Get (StrPool, Index);
} }
#else #else
# define GetStrBuf(Index) SP_Get (&StrPool, (Index)) # define GetStrBuf(Index) SP_Get (StrPool, (Index))
#endif #endif
#if defined(HAVE_INLINE) #if defined(HAVE_INLINE)
INLINE const char* GetString (unsigned Index) INLINE const char* GetString (unsigned Index)
/* Convert a string index into a string */ /* Convert a string index into a string */
{ {
return SB_GetConstBuf (SP_Get (&StrPool, Index)); return SB_GetConstBuf (SP_Get (StrPool, Index));
} }
#else #else
# define GetString(Index) SB_GetConstBuf (SP_Get (&StrPool, (Index))) # define GetString(Index) SB_GetConstBuf (SP_Get (StrPool, (Index)))
#endif #endif
void WriteStrPool (void); void WriteStrPool (void);
/* Write the string pool to the object file */ /* Write the string pool to the object file */
void InitStrPool (void);
/* Initialize the string pool */
/* End of spool.h */ /* End of spool.h */