75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
/**
|
|
* See Copyright Notice in picrin.h
|
|
*/
|
|
|
|
#include "picrin.h"
|
|
|
|
int
|
|
pic_type(pic_state PIC_UNUSED(*pic), pic_value v)
|
|
{
|
|
int tt = pic_vtype(pic, v);
|
|
|
|
if (tt < PIC_IVAL_END) {
|
|
return tt;
|
|
}
|
|
return ((struct pic_basic *)pic_obj_ptr(v))->tt;
|
|
}
|
|
|
|
const char *
|
|
pic_typename(pic_state *pic, int type)
|
|
{
|
|
switch (type) {
|
|
case PIC_TYPE_NIL:
|
|
return "null";
|
|
case PIC_TYPE_TRUE:
|
|
case PIC_TYPE_FALSE:
|
|
return "boolean";
|
|
case PIC_TYPE_FLOAT:
|
|
return "float";
|
|
case PIC_TYPE_INT:
|
|
return "int";
|
|
case PIC_TYPE_SYMBOL:
|
|
return "symbol";
|
|
case PIC_TYPE_CHAR:
|
|
return "char";
|
|
case PIC_TYPE_EOF:
|
|
return "eof-object";
|
|
case PIC_TYPE_UNDEF:
|
|
return "undefined";
|
|
case PIC_TYPE_INVALID:
|
|
return "invalid";
|
|
case PIC_TYPE_PAIR:
|
|
return "pair";
|
|
case PIC_TYPE_STRING:
|
|
return "string";
|
|
case PIC_TYPE_VECTOR:
|
|
return "vector";
|
|
case PIC_TYPE_BLOB:
|
|
return "bytevector";
|
|
case PIC_TYPE_PORT:
|
|
return "port";
|
|
case PIC_TYPE_ERROR:
|
|
return "error";
|
|
case PIC_TYPE_ID:
|
|
return "identifier";
|
|
case PIC_TYPE_CXT:
|
|
return "context";
|
|
case PIC_TYPE_PROC:
|
|
return "procedure";
|
|
case PIC_TYPE_ENV:
|
|
return "environment";
|
|
case PIC_TYPE_DATA:
|
|
return "data";
|
|
case PIC_TYPE_DICT:
|
|
return "dictionary";
|
|
case PIC_TYPE_WEAK:
|
|
return "ephemeron";
|
|
case PIC_TYPE_RECORD:
|
|
return "record";
|
|
case PIC_TYPE_CP:
|
|
return "checkpoint";
|
|
default:
|
|
pic_errorf(pic, "pic_typename: invalid type given %d", type);
|
|
}
|
|
}
|