1
0
mirror of https://github.com/cc65/cc65.git synced 2024-08-08 02:29:11 +00:00
cc65/src/ca65/spool.c
cuz 76e67e2f97 Changed the object file and library format. There is now an additional
string table in the object file that (currently) holds all identifiers
from the import, export and debug info sections. The plan is to put all
strings into this table, so we have them in a central place and don't
waste memory. Apart from that, the indices are unique, so comparing strings
should be a lot easier than before (as soon as the programs take advantage
of this fact, which is currently not the case).


git-svn-id: svn://svn.cc65.org/cc65/trunk@2169 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-05-25 17:57:50 +00:00

83 lines
3.6 KiB
C

/*****************************************************************************/
/* */
/* spool.c */
/* */
/* Id and message pool for the ca65 macroassembler */
/* */
/* */
/* */
/* (C) 2003 Ullrich von Bassewitz */
/* Römerstrasse 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. */
/* */
/*****************************************************************************/
/* ca65 */
#include "objfile.h"
#include "spool.h"
/*****************************************************************************/
/* Data */
/*****************************************************************************/
StringPool StrPool = STATIC_STRINGPOOL_INITIALIZER;
/*****************************************************************************/
/* Code */
/*****************************************************************************/
void WriteStrPool (void)
/* Write the string pool to the object file */
{
unsigned I;
/* Get the number of strings in the string pool */
unsigned Count = SP_GetCount (&StrPool);
/* Tell the object file module that we're about to start the string pool */
ObjStartStrPool ();
/* Write the string count to the list */
ObjWriteVar (Count);
/* Write the strings in id order */
for (I = 0; I < Count; ++I) {
ObjWriteStr (SP_Get (&StrPool, I));
}
/* Done writing the string pool */
ObjEndStrPool ();
}