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 ) ;
+}