]> git.sur5r.net Git - cc65/commitdiff
Implementation of StringPool has changed.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 21 Aug 2011 13:21:11 +0000 (13:21 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 21 Aug 2011 13:21:11 +0000 (13:21 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5242 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/main.c
src/ca65/spool.c
src/ca65/spool.h

index 7364891bc7208c54fac12eed9fbde5f7bd8c7678..8dc77a38d28f856f2dd5035ef654d49497861d8a 100644 (file)
@@ -863,6 +863,9 @@ int main (int argc, char* argv [])
     /* Initialize the cmdline module */
     InitCmdLine (&argc, &argv, "ca65");
 
+    /* Initialize the string pool */
+    InitStrPool ();
+
     /* Initialize the include search paths */
     InitIncludePaths ();
 
index 7d5bd98eab59455afe4d34a8e589cc14305e7f82..0b77ef6157d83206f930e7066e3eb607907e9322 100644 (file)
@@ -45,7 +45,7 @@
 
 
 
-StringPool StrPool = STATIC_STRINGPOOL_INITIALIZER;
+StringPool* StrPool = 0;
 
 
 
@@ -61,7 +61,7 @@ void WriteStrPool (void)
     unsigned I;
 
     /* 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 */
     ObjStartStrPool ();
@@ -71,7 +71,7 @@ void WriteStrPool (void)
 
     /* Write the strings in id order */
     for (I = 0; I < Count; ++I) {
-        ObjWriteBuf (SP_Get (&StrPool, I));
+        ObjWriteBuf (SP_Get (StrPool, I));
     }
 
     /* Done writing the string pool */
@@ -80,3 +80,11 @@ void WriteStrPool (void)
 
 
 
+void InitStrPool (void)
+/* Initialize the string pool */
+{
+    StrPool = NewStringPool (1103);
+}
+
+
+
index 517320e0d8aedc838bfd1fbf7fc552d6cc54e620..050e63abbe6b898d27bc7f747aed2f4c9cbe6932 100644 (file)
@@ -49,7 +49,7 @@
 
 
 
-extern StringPool StrPool;
+extern StringPool* StrPool;
 
 
 
@@ -63,45 +63,48 @@ extern StringPool StrPool;
 INLINE unsigned GetStrBufId (const StrBuf* S)
 /* Return the id of the given string buffer */
 {
-    return SP_Add (&StrPool, S);
+    return SP_Add (StrPool, S);
 }
 #else
-#  define GetStrBufId(S)        SP_Add (&StrPool, (S))
+#  define GetStrBufId(S)        SP_Add (StrPool, (S))
 #endif
 
 #if defined(HAVE_INLINE)
 INLINE unsigned GetStringId (const char* S)
 /* Return the id of the given string */
 {
-    return SP_AddStr (&StrPool, S);
+    return SP_AddStr (StrPool, S);
 }
 #else
-#  define GetStringId(S)        SP_AddStr (&StrPool, (S))
+#  define GetStringId(S)        SP_AddStr (StrPool, (S))
 #endif
 
 #if defined(HAVE_INLINE)
 INLINE const StrBuf* GetStrBuf (unsigned Index)
 /* Convert a string index into a string */
 {
-    return SP_Get (&StrPool, Index);
+    return SP_Get (StrPool, Index);
 }
 #else
-#  define GetStrBuf(Index)      SP_Get (&StrPool, (Index))
+#  define GetStrBuf(Index)      SP_Get (StrPool, (Index))
 #endif
 
 #if defined(HAVE_INLINE)
 INLINE const char* GetString (unsigned Index)
 /* Convert a string index into a string */
 {
-    return SB_GetConstBuf (SP_Get (&StrPool, Index));
+    return SB_GetConstBuf (SP_Get (StrPool, Index));
 }
 #else
-#  define GetString(Index)      SB_GetConstBuf (SP_Get (&StrPool, (Index)))
+#  define GetString(Index)      SB_GetConstBuf (SP_Get (StrPool, (Index)))
 #endif
 
 void WriteStrPool (void);
 /* Write the string pool to the object file */
 
+void InitStrPool (void);
+/* Initialize the string pool */
+
 
 
 /* End of spool.h */