-void initSymt ( );
-symbol *newSymbol ( char *, int );
-link *newLink ( );
-structdef *newStruct ( char * );
-void addDecl ( symbol *, int , link * );
-link *mergeSpec ( link *, link * );
-link *cloneSpec ( link * );
-symbol *reverseSyms ( symbol * );
-link *reverseLink ( link * );
-symbol *copySymbol ( symbol * );
-symbol *copySymbolChain ( symbol * );
-void printSymChain ( symbol *, int );
-void printStruct ( structdef *, int );
-char *genSymName ( int );
-link *getSpec ( link * );
-char *genSymName ( int );
-int compStructSize ( int ,structdef * );
-link *copyLinkChain ( link * );
-int checkDecl ( symbol * );
-void checkBasic ( link *, link * );
-value *checkPointerIval ( link *, value * );
-value *checkStructIval ( symbol *, value * );
-value *checkArrayIval ( link *, value * );
-value *checkIval ( link *, value * );
-unsigned int getSize ( link * );
-unsigned int bitsForType ( link * );
-link *newIntLink ( );
-link *newCharLink ( );
-link *newLongLink ( );
-int checkType ( link *, link * );
-int checkFunction ( symbol * );
-void cleanUpLevel ( bucket **,int );
-void cleanUpBlock ( bucket **,int );
-int funcInChain ( link * );
-void addSymChain ( symbol * );
-link *structElemType ( link *, value * , value ** );
-symbol *getStructElement ( structdef *, symbol *) ;
-link *computeType ( link *, link *);
-void processFuncArgs (symbol *,int);
-int isSymbolEqual (symbol *, symbol *);
-int powof2 (unsigned long );
-void printTypeChain (link *,FILE *);
-void initCSupport ();
-void pointerTypes (link *, link * );
-void cdbTypeInfo (link *,FILE *);
-void cdbSymbol (symbol *,FILE *,int,int);
-void cdbStructBlock (int ,FILE *);
-void initHashT ( );
-bucket *newBucket ( );
-void addSym ( bucket ** , void *, char *, int, int);
-void deleteSym ( bucket ** , void *, char *);
-void *findSym ( bucket ** , void *, char *);
-void *findSymWithLevel ( bucket ** , struct symbol * );
-void *findSymWithBlock ( bucket ** , struct symbol *,int );
-#include "SDCCmem.h"
+void initSymt ();
+symbol *newSymbol (char *, int);
+sym_link *newLink ();
+sym_link *newFloatLink ();
+structdef *newStruct (char *);
+void addDecl (symbol *, int, sym_link *);
+sym_link *mergeSpec (sym_link *, sym_link *, char *name);
+sym_link *cloneSpec (sym_link *);
+symbol *reverseSyms (symbol *);
+sym_link *reverseLink (sym_link *);
+symbol *copySymbol (symbol *);
+symbol *copySymbolChain (symbol *);
+void printSymChain (symbol *, int);
+void printStruct (structdef *, int);
+char *genSymName (int);
+sym_link *getSpec (sym_link *);
+char *genSymName (int);
+int compStructSize (int, structdef *);
+sym_link *copyLinkChain (sym_link *);
+int checkDecl (symbol *, int);
+void checkBasic (sym_link *, sym_link *);
+value *checkPointerIval (sym_link *, value *);
+value *checkStructIval (symbol *, value *);
+value *checkArrayIval (sym_link *, value *);
+value *checkIval (sym_link *, value *);
+unsigned int getSize (sym_link *);
+unsigned int bitsForType (sym_link *);
+sym_link *newIntLink ();
+sym_link *newCharLink ();
+sym_link *newLongLink ();
+int compareType (sym_link *, sym_link *);
+int checkFunction (symbol *, symbol *);
+void cleanUpLevel (bucket **, int);
+void cleanUpBlock (bucket **, int);
+int funcInChain (sym_link *);
+void addSymChain (symbol *);
+sym_link *structElemType (sym_link *, value *);
+symbol *getStructElement (structdef *, symbol *);
+sym_link *computeType (sym_link *, sym_link *);
+void processFuncArgs (symbol *);
+int isSymbolEqual (symbol *, symbol *);
+int powof2 (unsigned long);
+void printTypeChain (sym_link *, FILE *);
+void initCSupport ();
+void pointerTypes (sym_link *, sym_link *);
+void cdbTypeInfo (sym_link *, FILE *);
+void cdbSymbol (symbol *, FILE *, int, int);
+void cdbStructBlock (int, FILE *);
+void initHashT ();
+bucket *newBucket ();
+void addSym (bucket **, void *, char *, int, int, int checkType);
+void deleteSym (bucket **, void *, char *);
+void *findSym (bucket **, void *, const char *);
+void *findSymWithLevel (bucket **, struct symbol *);
+void *findSymWithBlock (bucket **, struct symbol *, int);
+void changePointer (symbol * sym);
+void checkTypeSanity(sym_link *etype, char *name);
+
+extern char *nounName(sym_link *); /* noun strings */
+extern void printFromToType (sym_link *, sym_link *);