Logo Search packages:      
Sourcecode: nawm version File versions  Download package

dtype.c

/* dtype.c: Code to deal with data types. */

/* Copyright (C) 1999 by the Massachusetts Institute of Technology.
 *
 * Permission to use, copy, modify, and distribute this
 * software and its documentation for any purpose and without
 * fee is hereby granted, provided that the above copyright
 * notice appear in all copies and that both that copyright
 * notice and this permission notice appear in supporting
 * documentation, and that the name of M.I.T. not be used in
 * advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.
 * M.I.T. makes no representations about the suitability of
 * this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 */

#include "nawm.h"
#include "lang.h"
#include "parser.h"

static int nexttag;
static char **typenames;

void inittypes(void)
{
  nexttag = 5;
  typenames = xmalloc(nexttag * sizeof(char *));
  typenames[0] = "void";
  typenames[T_INT] = "int";
  typenames[T_STR] = "string";
  typenames[T_WIN] = "window";
  typenames[T_ARRAY] = NULL;
}

int newtype(char *name)
{
  typenames = xrealloc(typenames, (nexttag + 1) * sizeof(char *));
  typenames[nexttag] = name;
  define(DTYPE, name, (void *)nexttag);
  return nexttag++;
}

char *typename(dtype t)
{
  if (t > nexttag)
    t = *(int *)t;

  if (t == T_ARRAY)
    return array_typename(t);
  else
    return typenames[t];
}

int is_array_type(dtype t)
{
  return t > nexttag && *(int *)t == T_ARRAY;
}

nawmval initial_value(dtype t)
{
  if (t < nexttag)
    return 0;
  else
    return (nawmval)create_array(t, 5);
}

Generated by  Doxygen 1.6.0   Back to index