-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 * );
-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 * );
-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 checkType ( sym_link *, sym_link * );
-int checkFunction ( symbol * );
-void cleanUpLevel ( bucket **,int );
-void cleanUpBlock ( bucket **,int );
-int funcInChain ( sym_link * );
-void addSymChain ( symbol * );
-sym_link *structElemType ( sym_link *, value * , value ** );
-symbol *getStructElement ( structdef *, symbol *) ;
-sym_link *computeType ( sym_link *, sym_link *);
-void processFuncArgs (symbol *,int);
-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);
-void deleteSym ( bucket ** , void *, char *);
-void *findSym ( bucket ** , void *, const 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 *);
+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 *);
+void cleanUpLevel (bucket **, int);
+void cleanUpBlock (bucket **, int);
+int funcInChain (sym_link *);
+void addSymChain (symbol *);
+sym_link *structElemType (sym_link *, value *, value **);
+symbol *getStructElement (structdef *, symbol *);
+sym_link *computeType (sym_link *, sym_link *);
+void processFuncArgs (symbol *, int);
+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);
+/* noun strings */
+extern char *nounName(sym_link *);