/*
 *  spec.c
 *
 *  Created September 15, 190 by Raymie Stata
 *  (c) 1990 Raymie Stata, All Rights Reserved
 */

#include <stdio.h>
#include "sactions.h"
#include "type.h"
#include "misc1.h"
#include "symmap.h"
#include "setexpr.h"
#include "list.h"
#define LOCAL static
#define EXPORT /* */

extern int current_mod_name;

EXPORT void moduleHeader(lineno, sym)
{
  current_mod_name = sym;
}

EXPORT void typeDecl(lineno, sym, type)
  int lineno, sym;
  Type type;
{
/*
  char *ts = t_unparse(type);
  fprintf(stderr, "  %s = %s\n", sm_pname(sym), ts);
  free(ts);
*/
}

EXPORT Type tupleType(lineno, typeList)
  int lineno;
  List typeList;
{
  if (lst_size(typeList) == 1) return((Type)lst_car(typeList));
  else return( t_create(T_TUPLE, typeList) );
}

EXPORT Type compType(lineno, tcode, param)
  int lineno, tcode;
  char *param;
{
  return( t_create(tcode, param) );
}

EXPORT Type fancyEquate(lineno, module, symbol)
  int lineno, module, symbol;
{
  return( t_create(T_EQU, var_create(module, symbol)) );
}

EXPORT Type procType(lineno, tcode, args, returns, raises)
  int lineno, tcode;
  Type args, returns;
  Setexpr raises;
{
  return( t_create(tcode, proc_create(tcode, args, returns, raises)) );
}

