// Type information and methods for TypeInfos (i.e. runtime representations of types) #include #include #include #include #include #include "util.h" #include "array.h" #include "pointer.h" #include "table.h" #include "types.h" public CORD Type$as_text(const void *typeinfo, bool colorize, const TypeInfo *type) { if (!typeinfo) return "TypeInfo"; if (!colorize) return type->TypeInfoInfo.type_str; CORD c; CORD_sprintf(&c, "\x1b[36;1m%s\x1b[m", type->TypeInfoInfo.type_str); return c; } public const TypeInfo $TypeInfo = { .size=sizeof(TypeInfo), .align=__alignof__(TypeInfo), .tag=CustomInfo, .TypeInfoInfo.type_str="TypeInfo", }; public const TypeInfo $Void = {.size=0, .align=0}; public const TypeInfo $Abort = {.size=0, .align=0}; public CORD Func$as_text(const void *fn, bool colorize, const TypeInfo *type) { (void)fn; CORD c = type->FunctionInfo.type_str; if (fn && colorize) CORD_sprintf(&c, "\x1b[32;1m%r\x1b[m", c); return c; } // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0