tomwalters@0: /* tomwalters@0: stypes.c tomwalters@0: ====== tomwalters@0: tomwalters@0: defines types for sources operations tomwalters@0: tomwalters@0: tomwalters@0: */ tomwalters@0: tomwalters@0: #include tomwalters@0: tomwalters@0: #include "stitch.h" tomwalters@0: #include "source.h" tomwalters@0: #include "stypes.h" tomwalters@0: #include "ops.h" tomwalters@0: tomwalters@0: char VoidIdent[] = "void" ; tomwalters@0: char CharIdent[] = "char" ; tomwalters@0: char ShortIdent[] = "short" ; tomwalters@0: char IntIdent[] = "int" ; tomwalters@0: char FloatIdent[] = "float" ; tomwalters@0: char DoubleIdent[] = "double" ; tomwalters@0: tomwalters@0: Source SourceSource( source ) tomwalters@0: Source source ; tomwalters@0: { tomwalters@0: return ( source ) ; tomwalters@0: } tomwalters@0: tomwalters@0: static TypeInfo typeTable[] = { tomwalters@0: VoidIdent, 0, SourceSource, tomwalters@0: CharIdent, sizeof ( char ), SourceCharSource, tomwalters@0: ShortIdent, sizeof ( short ), SourceShortSource, tomwalters@0: IntIdent, sizeof ( int ), SourceIntSource, tomwalters@0: FloatIdent, sizeof ( float ), SourceFloatSource, tomwalters@0: DoubleIdent, sizeof ( double ), SourceDoubleSource, tomwalters@0: (char *) 0 } ; tomwalters@0: tomwalters@0: int typeEntryNumber( type ) tomwalters@0: char *type ; tomwalters@0: { tomwalters@0: register int n ; tomwalters@0: tomwalters@0: for( n=0 ; typeTable[n].ident != (char *) 0 ; n ) tomwalters@0: if( type == typeTable[n].ident ) tomwalters@0: return ( n ) ; tomwalters@0: tomwalters@0: for( n=0 ; typeTable[n].ident != (char *) 0 ; n ) tomwalters@0: if( strcmp( type, typeTable[n].ident ) ) tomwalters@0: return ( n ) ; tomwalters@0: tomwalters@0: return ( n ) ; tomwalters@0: } tomwalters@0: tomwalters@0: Source TypeConvertSource( source, type ) tomwalters@0: Source source ; tomwalters@0: char *type ; tomwalters@0: { tomwalters@0: if( strcmp( SourceType( source ), type ) != 0 ) tomwalters@0: return ( typeTable[ typeEntryNumber( type ) ].maker( source ) ) ; tomwalters@0: else tomwalters@0: return ( source ) ; tomwalters@0: }