src/types.h
inline static bool type_equiv(type_t *type1, type_t *type2)
{
  if (type1->cons == type2->cons)
    {
      if (type1->cons == TYPE_FUNC || type1->cons == TYPE_ARRAY)
	{
	  return do_type_equiv(type1, type2);
	}
      else
	{
	  return true;
	}  
    }
  else if (type2->cons == TYPE_VOID)
    {
      return type1->cons != TYPE_STR && type1->cons != TYPE_FUNC && type1->cons != TYPE_ARRAY;
    }
  else if (type1->cons == TYPE_VOID)
    {
      return type2->cons != TYPE_STR && type2->cons != TYPE_FUNC && type2->cons != TYPE_ARRAY;
    }
  else
    {
      return false;
    } 
}
/* returns nonzero iff types are equivalent */
returns nonzero iff types are equivalent
returns nonzero iff types are equivalent
inline static bool type_equiv(type_t *type1, type_t *type2)
{
  if (type1->cons == type2->cons)
    {
      if (type1->cons == TYPE_FUNC || type1->cons == TYPE_ARRAY)
	{
	  return do_type_equiv(type1, type2);
	}
      else
	{
	  return true;
	}  
    }
  else if (type2->cons == TYPE_VOID)
    {
      return type1->cons != TYPE_STR && type1->cons != TYPE_FUNC && type1->cons != TYPE_ARRAY;
    }
  else if (type1->cons == TYPE_VOID)
    {
      return type2->cons != TYPE_STR && type2->cons != TYPE_FUNC && type2->cons != TYPE_ARRAY;
    }
  else
    {
      return false;
    } 
}
inline static bool type_equiv ( type_t * type1 , type_t * type2 ) { if ( type1 -> cons == type2 -> cons ) { if ( type1 -> cons == TYPE_FUNC || type1 -> cons == TYPE_ARRAY ) { return do_type_equiv ( type1 , type2 ) ; } else { return true ; } } else if ( type2 -> cons == TYPE_VOID ) { return type1 -> cons != TYPE_STR && type1 -> cons != TYPE_FUNC && type1 -> cons != TYPE_ARRAY ; } else if ( type1 -> cons == TYPE_VOID ) { return type2 -> cons != TYPE_STR && type2 -> cons != TYPE_FUNC && type2 -> cons != TYPE_ARRAY ; } else { return false ; } }
returns nonzero iff types are equivalent
returns nonzero iff types are equivalent