Fixed a problem with declarations for libraries not being compatible with

some C90 compilers.


git-svn-id: http://picoc.googlecode.com/svn/trunk@449 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
zik.saleeba 2010-07-01 19:48:04 +00:00
parent b313de2aa1
commit 5efb924e6a
3 changed files with 15 additions and 15 deletions

View file

@ -1,7 +1,7 @@
#include "picoc.h" #include "picoc.h"
/* initialise a library */ /* initialise a library */
void LibraryInit(struct Table *GlobalTable, const char *LibraryName, struct LibraryFunction (*FuncList)[]) void LibraryInit(struct Table *GlobalTable, const char *LibraryName, struct LibraryFunction *FuncList)
{ {
struct ParseState Parser; struct ParseState Parser;
int Count; int Count;
@ -11,13 +11,13 @@ void LibraryInit(struct Table *GlobalTable, const char *LibraryName, struct Libr
void *Tokens; void *Tokens;
const char *IntrinsicName = TableStrRegister("c library"); const char *IntrinsicName = TableStrRegister("c library");
for (Count = 0; (*FuncList)[Count].Prototype != NULL; Count++) for (Count = 0; FuncList[Count].Prototype != NULL; Count++)
{ {
Tokens = LexAnalyse(IntrinsicName, (*FuncList)[Count].Prototype, strlen((char *)(*FuncList)[Count].Prototype), NULL); Tokens = LexAnalyse(IntrinsicName, FuncList[Count].Prototype, strlen((char *)FuncList[Count].Prototype), NULL);
LexInitParser(&Parser, (*FuncList)[Count].Prototype, Tokens, IntrinsicName, TRUE); LexInitParser(&Parser, FuncList[Count].Prototype, Tokens, IntrinsicName, TRUE);
TypeParse(&Parser, &ReturnType, &Identifier); TypeParse(&Parser, &ReturnType, &Identifier);
NewValue = ParseFunctionDefinition(&Parser, ReturnType, Identifier); NewValue = ParseFunctionDefinition(&Parser, ReturnType, Identifier);
NewValue->Val->FuncDef.Intrinsic = (*FuncList)[Count].Func; NewValue->Val->FuncDef.Intrinsic = FuncList[Count].Func;
HeapFreeMem(Tokens); HeapFreeMem(Tokens);
} }
} }

View file

@ -7,7 +7,7 @@ struct IncludeLibrary
{ {
const char *IncludeName; const char *IncludeName;
void (*SetupFunction)(void); void (*SetupFunction)(void);
struct LibraryFunction (*FuncList)[]; struct LibraryFunction *FuncList;
const char *SetupCSource; const char *SetupCSource;
struct IncludeLibrary *NextLib; struct IncludeLibrary *NextLib;
}; };
@ -18,13 +18,13 @@ struct IncludeLibrary *IncludeLibList = NULL;
/* initialise the built-in include libraries */ /* initialise the built-in include libraries */
void IncludeInit() void IncludeInit()
{ {
IncludeRegister("ctype.h", NULL, &StdCtypeFunctions, NULL); IncludeRegister("ctype.h", NULL, &StdCtypeFunctions[0], NULL);
IncludeRegister("errno.h", &StdErrnoSetupFunc, NULL, NULL); IncludeRegister("errno.h", &StdErrnoSetupFunc, NULL, NULL);
IncludeRegister("stdio.h", &StdioSetupFunc, &StdioFunctions, StdioDefs); IncludeRegister("stdio.h", &StdioSetupFunc, &StdioFunctions[0], StdioDefs);
IncludeRegister("math.h", &MathSetupFunc, &MathFunctions, NULL); IncludeRegister("math.h", &MathSetupFunc, &MathFunctions[0], NULL);
IncludeRegister("string.h", &StringSetupFunc, &StringFunctions, NULL); IncludeRegister("string.h", &StringSetupFunc, &StringFunctions[0], NULL);
IncludeRegister("stdlib.h", &StdlibSetupFunc, &StdlibFunctions, NULL); IncludeRegister("stdlib.h", &StdlibSetupFunc, &StdlibFunctions[0], NULL);
IncludeRegister("time.h", &StdTimeSetupFunc, &StdTimeFunctions, StdTimeDefs); IncludeRegister("time.h", &StdTimeSetupFunc, &StdTimeFunctions[0], StdTimeDefs);
} }
/* clean up space used by the include system */ /* clean up space used by the include system */
@ -42,7 +42,7 @@ void IncludeCleanup()
} }
/* register a new build-in include file */ /* register a new build-in include file */
void IncludeRegister(const char *IncludeName, void (*SetupFunction)(void), struct LibraryFunction (*FuncList)[], const char *SetupCSource) void IncludeRegister(const char *IncludeName, void (*SetupFunction)(void), struct LibraryFunction *FuncList, const char *SetupCSource)
{ {
struct IncludeLibrary *NewLib = HeapAllocMem(sizeof(struct IncludeLibrary)); struct IncludeLibrary *NewLib = HeapAllocMem(sizeof(struct IncludeLibrary));
NewLib->IncludeName = TableStrRegister(IncludeName); NewLib->IncludeName = TableStrRegister(IncludeName);

View file

@ -381,7 +381,7 @@ void *VariableDereferencePointer(struct ParseState *Parser, struct Value *Pointe
/* clibrary.c */ /* clibrary.c */
void BasicIOInit(); void BasicIOInit();
void LibraryInit(struct Table *GlobalTable, const char *LibraryName, struct LibraryFunction (*FuncList)[]); void LibraryInit(struct Table *GlobalTable, const char *LibraryName, struct LibraryFunction *FuncList);
void CLibraryInit(); void CLibraryInit();
void PrintCh(char OutCh, IOFILE *Stream); void PrintCh(char OutCh, IOFILE *Stream);
void PrintSimpleInt(long Num, FILE *Stream); void PrintSimpleInt(long Num, FILE *Stream);
@ -411,7 +411,7 @@ void Cleanup();
/* include.c */ /* include.c */
void IncludeInit(); void IncludeInit();
void IncludeCleanup(); void IncludeCleanup();
void IncludeRegister(const char *IncludeName, void (*SetupFunction)(void), struct LibraryFunction (*FuncList)[], const char *SetupCSource); void IncludeRegister(const char *IncludeName, void (*SetupFunction)(void), struct LibraryFunction *FuncList, const char *SetupCSource);
void IncludeFile(char *Filename); void IncludeFile(char *Filename);
/* stdio.c */ /* stdio.c */