Mercurial > hg > aim92
diff stitch/stypes.c @ 0:5242703e91d3 tip
Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author | tomwalters |
---|---|
date | Fri, 20 May 2011 15:19:45 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stitch/stypes.c Fri May 20 15:19:45 2011 +0100 @@ -0,0 +1,63 @@ +/* + stypes.c + ====== + + defines types for sources operations + + +*/ + +#include <string.h> + +#include "stitch.h" +#include "source.h" +#include "stypes.h" +#include "ops.h" + +char VoidIdent[] = "void" ; +char CharIdent[] = "char" ; +char ShortIdent[] = "short" ; +char IntIdent[] = "int" ; +char FloatIdent[] = "float" ; +char DoubleIdent[] = "double" ; + +Source SourceSource( source ) +Source source ; +{ + return ( source ) ; +} + +static TypeInfo typeTable[] = { + VoidIdent, 0, SourceSource, + CharIdent, sizeof ( char ), SourceCharSource, + ShortIdent, sizeof ( short ), SourceShortSource, + IntIdent, sizeof ( int ), SourceIntSource, + FloatIdent, sizeof ( float ), SourceFloatSource, + DoubleIdent, sizeof ( double ), SourceDoubleSource, + (char *) 0 } ; + +int typeEntryNumber( type ) +char *type ; +{ + register int n ; + + for( n=0 ; typeTable[n].ident != (char *) 0 ; n ) + if( type == typeTable[n].ident ) + return ( n ) ; + + for( n=0 ; typeTable[n].ident != (char *) 0 ; n ) + if( strcmp( type, typeTable[n].ident ) ) + return ( n ) ; + + return ( n ) ; +} + +Source TypeConvertSource( source, type ) +Source source ; +char *type ; +{ + if( strcmp( SourceType( source ), type ) != 0 ) + return ( typeTable[ typeEntryNumber( type ) ].maker( source ) ) ; + else + return ( source ) ; +}