Exemple #1
0
static void
generate_type_header (const Symbol *s)
{
    fprintf (headerfile, "/*\n");
    fprintf (headerfile, "%s ::= ", s->name);
    define_asn1 (0, s->type);
    fprintf (headerfile, "\n*/\n\n");

    fprintf (headerfile, "typedef ");
    define_type (0, s->gen_name, s->type, TRUE);

    fprintf (headerfile, "\n");
}
Exemple #2
0
void form_mem ()
{
	unsigned long size;
	int type;
	char type_name[32];
	
	init_mem ((unsigned long) N_OBJECTS);
	if (error()) return;
	
	type = MSSCENE;
	size = sizeof (struct msscene);
	strcpy (type_name, "msscene");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = SPHERE;
	size = sizeof (struct sphere);
	strcpy (type_name, "sphere");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = TORUS;
	size = sizeof (struct torus);
	strcpy (type_name, "torus");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PROBE;
	size = sizeof (struct probe);
	strcpy (type_name, "probe");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CENTRAL;
	size = sizeof (struct central);
	strcpy (type_name, "central");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = VERTEX;
	size = sizeof (struct vertex);
	strcpy (type_name, "vertex");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CIRCLE;
	size = sizeof (struct circle);
	strcpy (type_name, "circle");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = ARC;
	size = sizeof (struct arc);
	strcpy (type_name, "arc");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = FACE;
	size = sizeof (struct face);
	strcpy (type_name, "face");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CYCLE;
	size = sizeof (struct cycle);
	strcpy (type_name, "cycle");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = EDGE;
	size = sizeof (struct edge);
	strcpy (type_name, "edge");
	define_type (type, size, type_name);
	if (error()) return;
		
	type = COMPONENT;
	size = sizeof (struct component);
	strcpy (type_name, "component");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CHUNK;
	size = sizeof (struct chunk);
	strcpy (type_name, "chunk");
	define_type (type, size, type_name);
	if (error()) return;

	type = SURFACE;
	size = sizeof (struct surface);
	strcpy (type_name, "surface");
	define_type (type, size, type_name);
	if (error()) return;

	type = VARIETY;
	size = sizeof (struct variety);
	strcpy (type_name, "variety");
	define_type (type, size, type_name);
	if (error()) return;

	type = PHNVTX;
	size = phnvtx_size ();
	strcpy (type_name, "phnvtx");
	define_type (type, size, type_name);

	type = PHNEDG;
	size = phnedg_size ();
	strcpy (type_name, "phnedg");
	define_type (type, size, type_name);

	type = PHNTRI;
	size = phntri_size ();
	strcpy (type_name, "phntri");
	define_type (type, size, type_name);

	type = POLYGON;
	size = sizeof (struct polygon);
	strcpy (type_name, "polygon");
	define_type (type, size, type_name);

	type = HEDVTX;
	size = sizeof (struct hedvtx);
	strcpy (type_name, "hedvtx");
	define_type (type, size, type_name);
	if (error()) return;

	type = HEDEDG;
	size = sizeof (struct hededg);
	strcpy (type_name, "hededg");
	define_type (type, size, type_name);
	if (error()) return;

	type = HEDTRI;
	size = sizeof (struct hedtri);
	strcpy (type_name, "hedtri");
	define_type (type, size, type_name);
	if (error()) return;

	type = VTXGRP;
	size = sizeof (struct vtxgrp);
	strcpy (type_name, "vtxgrp");
	define_type (type, size, type_name);
	if (error()) return;

	type = HEDRON;
	size = sizeof (struct hedron);
	strcpy (type_name, "hedron");
	define_type (type, size, type_name);
	if (error()) return;

	type = OBJECT_SCHEME;
	size = sizeof (struct object_scheme);
	strcpy (type_name, "object_scheme");
	define_type (type, size, type_name);

	type = MOLECULE;
	size = sizeof (struct molecule);
	strcpy (type_name, "molecule");
	define_type (type, size, type_name);

	type = EVALPNT;
	size = sizeof (struct evalpnt);
	strcpy (type_name, "evalpnt");
	define_type (type, size, type_name);
	if (error()) return;

	type = SOLID_ANGLE;
	size = sizeof (struct solid_angle);
	strcpy (type_name, "solid_angle");
	define_type (type, size, type_name);
	if (error()) return;

	type = COLOR_RAMP;
	size = sizeof (struct color_ramp);
	strcpy (type_name, "color_ramp");
	define_type (type, size, type_name);
	if (error()) return;

	type = PLEXLINK;
	size = sizeof (struct PlexLink);
	strcpy (type_name, "PlexLink");
	define_type (type, size, type_name);
	if (error()) return;

	type = SUBEDGE;
	size = sizeof (struct subedge);
	strcpy (type_name, "subedge");
	define_type (type, size, type_name);
	if (error()) return;

	type = SUBPOLYGON;
	size = sizeof (struct subpolygon);
	strcpy (type_name, "subpolygon");
	define_type (type, size, type_name);
	if (error()) return;

	type = ORINGE;
	size = sizeof (struct oringe);
	strcpy (type_name, "oringe");
	define_type (type, size, type_name);
	if (error()) return;

	type = SECTOR;
	size = sizeof (struct sector);
	strcpy (type_name, "sector");
	define_type (type, size, type_name);
	if (error()) return;

	type = TERM;
	size = sizeof (struct term);
	strcpy (type_name, "term");
	define_type (type, size, type_name);
	if (error()) return;

	type = BAR;
	size = sizeof (struct bar);
	strcpy (type_name, "bar");
	define_type (type, size, type_name);
	if (error()) return;

	type = RECORD;
	size = sizeof (struct record);
	strcpy (type_name, "record");
	define_type (type, size, type_name);
	if (error()) return;

	type = TOKEN;
	size = sizeof (struct token);
	strcpy (type_name, "token");
	define_type (type, size, type_name);
	if (error()) return;

	type = EDGER;
	size = sizeof (struct edger);
	strcpy (type_name, "edger");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEX;
	size = sizeof (struct Plex);
	strcpy (type_name, "Plex");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXI;
	size = sizeof (struct Plexi);
	strcpy (type_name, "Plexi");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXVERTEX;
	size = sizeof (struct PlexVertex);
	strcpy (type_name, "PlexVertex");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXEDGE;
	size = sizeof (struct PlexEdge);
	strcpy (type_name, "PlexEdge");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXTRIANGLE;
	size = sizeof (struct PlexTriangle);
	strcpy (type_name, "PlexTriangle");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXCUBE;
	size = sizeof (struct PlexCube);
	strcpy (type_name, "PlexCube");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PLEXJOIN;
	size = sizeof (struct PlexJoin);
	strcpy (type_name, "PlexJoin");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = PROVINCE;
	size = sizeof (struct Province);
	strcpy (type_name, "Province");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = GLASS;
	size = sizeof (struct Glass);
	strcpy (type_name, "Glass");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = GLASS_BLOCK;
	size = sizeof (struct GlassBlock);
	strcpy (type_name, "GlassBlock");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = VANITY;
	size = sizeof (struct vanity);
	strcpy (type_name, "vanity");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = DENVTX;
	size = sizeof (struct denvtx);
	strcpy (type_name, "denvtx");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = MSDATA;
	size = sizeof (struct msdata);
	strcpy (type_name, "msdata");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CRITLINK;
	size = sizeof (struct critlink);
	strcpy (type_name, "critlink");
	define_type (type, size, type_name);
	if (error()) return;
	
	type = CEPT;
	size = sizeof (struct cept);
	strcpy (type_name, "cept");
	define_type (type, size, type_name);
	if (error()) return;
	
}
Exemple #3
0
static void
define_type (int level, const char *name, Type *t, int typedefp)
{
    switch (t->type) {
    case TType:
        space(level);
        fprintf (headerfile, "%s %s;\n", t->symbol->gen_name, name);
        break;
    case TInteger:
        space(level);
        if(t->members == NULL) {
            fprintf (headerfile, "int %s;\n", name);
        } else {
            Member *m;
            int tag = -1;
            fprintf (headerfile, "enum %s {\n", typedefp ? name : "");
            for (m = t->members; m && m->val != tag; m = m->next) {
                if(tag == -1)
                    tag = m->val;
                space (level + 1);
                fprintf(headerfile, "%s = %d%s\n", m->gen_name, m->val,
                        m->next->val == tag ? "" : ",");
            }
            fprintf (headerfile, "} %s;\n", name);
        }
        break;
    case TUInteger:
        space(level);
        fprintf (headerfile, "unsigned int %s;\n", name);
        break;
    case TOctetString:
        space(level);
        fprintf (headerfile, "heim_octet_string %s;\n", name);
        break;
    case TOID :
        space(level);
        fprintf (headerfile, "heim_oid %s;\n", name);
        break;
    case TBitString: {
        Member *m;
        Type i;
        int tag = -1;

        i.type = TUInteger;
        space(level);
        fprintf (headerfile, "struct %s {\n", typedefp ? name : "");
        for (m = t->members; m && m->val != tag; m = m->next) {
            char *n;

            asprintf (&n, "%s:1", m->gen_name);
            define_type (level + 1, n, &i, FALSE);
            free (n);
            if (tag == -1)
                tag = m->val;
        }
        space(level);
        fprintf (headerfile, "} %s;\n\n", name);
        break;
    }
    case TEnumerated: {
        Member *m;
        int tag = -1;

        space(level);
        fprintf (headerfile, "enum %s {\n", typedefp ? name : "");
        for (m = t->members; m && m->val != tag; m = m->next) {
            if (tag == -1)
                tag = m->val;
            space(level + 1);
            fprintf (headerfile, "%s = %d%s\n", m->gen_name, m->val,
                     m->next->val == tag ? "" : ",");
        }
        space(level);
        fprintf (headerfile, "} %s;\n\n", name);
        break;
    }
    case TSequence: {
        Member *m;
        int tag = -1;

        space(level);
        fprintf (headerfile, "struct %s {\n", typedefp ? name : "");
        for (m = t->members; m && m->val != tag; m = m->next) {
            if (m->optional) {
                char *n;

                asprintf (&n, "*%s", m->gen_name);
                define_type (level + 1, n, m->type, FALSE);
                free (n);
            } else
                define_type (level + 1, m->gen_name, m->type, FALSE);
            if (tag == -1)
                tag = m->val;
        }
        space(level);
        fprintf (headerfile, "} %s;\n", name);
        break;
    }
    case TSequenceOf: {
        Type i;

        i.type = TUInteger;
        i.application = 0;

        space(level);
        fprintf (headerfile, "struct %s {\n", typedefp ? name : "");
        define_type (level + 1, "len", &i, FALSE);
        define_type (level + 1, "*val", t->subtype, FALSE);
        space(level);
        fprintf (headerfile, "} %s;\n", name);
        break;
    }
    case TGeneralizedTime:
        space(level);
        fprintf (headerfile, "time_t %s;\n", name);
        break;
    case TGeneralString:
        space(level);
        fprintf (headerfile, "heim_general_string %s;\n", name);
        break;
    case TUTF8String:
        space(level);
        fprintf (headerfile, "heim_utf8_string %s;\n", name);
        break;
    case TBoolean:
        space(level);
        fprintf (headerfile, "int %s;\n", name);
        break;
    case TNull:
        space(level);
        fprintf (headerfile, "NULL %s;\n", name);
        break;
    case TApplication:
        define_type (level, name, t->subtype, FALSE);
        break;
    default:
        abort ();
    }
}