CACAO
Macros | Functions
typeinfo.cpp File Reference

Go to the source code of this file.

Macros

#define CLASSINFO_IS_ARRAY(clsinfo)   ((clsinfo)->vftbl->arraydesc != NULL)
 
#define CLASSINFO_IMPLEMENTS_INTERFACE(cls, index)
 
#define TYPEINFO_ASSERT(cond)   assert(cond)
 
#define TYPEINFO_ALLOCMERGED(mergedlist, count)
 
#define TYPEINFO_FREEMERGED(mergedlist)
 
#define TYPEINFO_FREEMERGED_IF_ANY(mergedlist)
 
#define TYPEINFO_TEST_BUFLEN   4000
 
#define TYPEINFO_TEST_MAXDIM   10
 
#define TYPEINFO_MAXINDENT   80
 

Functions

varinfotypevector_copy (varinfo *src, int size)
 
void typevector_copy_inplace (varinfo *src, varinfo *dst, int size)
 
bool typevector_checktype (varinfo *vec, int index, int type)
 
bool typevector_checkreference (varinfo *vec, int index)
 
bool typevector_checkretaddr (varinfo *vec, int index)
 
void typevector_store (varinfo *vec, int index, Type type, typeinfo_t *info)
 
void typevector_store_retaddr (varinfo *vec, int index, typeinfo_t *info)
 
bool typevector_init_object (varinfo *set, void *ins, classref_or_classinfo initclass, int size)
 
typecheck_result typevector_merge (methodinfo *m, varinfo *dst, varinfo *y, int size)
 
static bool interface_extends_interface (classinfo *cls, classinfo *interf)
 
static typecheck_result classinfo_implements_interface (classinfo *cls, classinfo *interf)
 
static typecheck_result mergedlist_implements_interface (typeinfo_mergedlist_t *merged, classinfo *interf)
 
static typecheck_result merged_implements_interface (classinfo *typeclass, typeinfo_mergedlist_t *merged, classinfo *interf)
 
static typecheck_result merged_is_subclass (classinfo *typeclass, typeinfo_mergedlist_t *merged, classinfo *cls)
 
static bool typedescriptor_init_from_typedesc (typedescriptor_t *td, typedesc *desc)
 
static bool typeinfo_init_varinfo_from_typedesc (varinfo *var, typedesc *desc)
 
bool typeinfo_init_varinfos_from_methoddesc (varinfo *vars, methoddesc *desc, int buflen, int startindex, s4 *map, typedescriptor_t *returntype)
 
int typedescriptors_init_from_methoddesc (typedescriptor_t *td, methoddesc *desc, int buflen, bool twoword, int startindex, typedescriptor_t *returntype)
 
static void typeinfo_merge_error (methodinfo *m, const char *str, const typeinfo_t *x, const typeinfo_t *y)
 
static bool typeinfo_merge_two (typeinfo_t *dest, classref_or_classinfo clsx, classref_or_classinfo clsy)
 
static bool typeinfo_merge_add (typeinfo_t *dest, typeinfo_mergedlist_t *m, classref_or_classinfo cls)
 
static bool typeinfo_merge_mergedlists (typeinfo_t *dest, typeinfo_mergedlist_t *x, typeinfo_mergedlist_t *y)
 
static typecheck_result typeinfo_merge_nonarrays (typeinfo_t *dest, classref_or_classinfo *result, classref_or_classinfo x, classref_or_classinfo y, typeinfo_mergedlist_t *mergedx, typeinfo_mergedlist_t *mergedy)
 
static bool typeinfo_equal (typeinfo_t *x, typeinfo_t *y)
 
static void typeinfo_testmerge (typeinfo_t *a, typeinfo_t *b, typeinfo_t *result, int *failed)
 
static void typeinfo_testrun (const char *filename)
 
void typeinfo_test ()
 
void typeinfo_print_class (FILE *file, classref_or_classinfo c)
 
void typeinfo_print (FILE *file, const typeinfo_t *info, int indent)
 
void typeinfo_print_short (FILE *file, const typeinfo_t *info)
 
void typeinfo_print_type (FILE *file, int type, const typeinfo_t *info)
 
void typedescriptor_print (FILE *file, const typedescriptor_t *td)
 
void typevector_print (FILE *file, const varinfo *vec, int size)
 

Macro Definition Documentation

#define CLASSINFO_IMPLEMENTS_INTERFACE (   cls,
  index 
)
Value:
( ((index) < (cls)->vftbl->interfacetablelength) \
&& ( (cls)->vftbl->interfacetable[-(index)] != NULL ) )
std::size_t index

Definition at line 53 of file typeinfo.cpp.

#define CLASSINFO_IS_ARRAY (   clsinfo)    ((clsinfo)->vftbl->arraydesc != NULL)

Definition at line 50 of file typeinfo.cpp.

#define TYPEINFO_ALLOCMERGED (   mergedlist,
  count 
)
Value:
+ ((count)-1)*sizeof(classinfo*));} while(0)
static void * allocate(size_t size)
Definition: dumpmemory.hpp:251

Definition at line 765 of file typeinfo.cpp.

#define TYPEINFO_ASSERT (   cond)    assert(cond)

Definition at line 62 of file typeinfo.cpp.

#define TYPEINFO_FREEMERGED (   mergedlist)

Definition at line 769 of file typeinfo.cpp.

#define TYPEINFO_FREEMERGED_IF_ANY (   mergedlist)

Definition at line 771 of file typeinfo.cpp.

#define TYPEINFO_MAXINDENT   80

Definition at line 2116 of file typeinfo.cpp.

#define TYPEINFO_TEST_BUFLEN   4000

Definition at line 1948 of file typeinfo.cpp.

#define TYPEINFO_TEST_MAXDIM   10

Definition at line 2032 of file typeinfo.cpp.

Function Documentation

static typecheck_result classinfo_implements_interface ( classinfo cls,
classinfo interf 
)
static

Definition at line 390 of file typeinfo.cpp.

static bool interface_extends_interface ( classinfo cls,
classinfo interf 
)
static

Definition at line 349 of file typeinfo.cpp.

static typecheck_result merged_implements_interface ( classinfo typeclass,
typeinfo_mergedlist_t merged,
classinfo interf 
)
static

Definition at line 483 of file typeinfo.cpp.

static typecheck_result merged_is_subclass ( classinfo typeclass,
typeinfo_mergedlist_t merged,
classinfo cls 
)
static

Definition at line 530 of file typeinfo.cpp.

static typecheck_result mergedlist_implements_interface ( typeinfo_mergedlist_t merged,
classinfo interf 
)
static

Definition at line 433 of file typeinfo.cpp.

static bool typedescriptor_init_from_typedesc ( typedescriptor_t td,
typedesc desc 
)
static

Definition at line 928 of file typeinfo.cpp.

void typedescriptor_print ( FILE *  file,
const typedescriptor_t td 
)

Definition at line 2283 of file typeinfo.cpp.

int typedescriptors_init_from_methoddesc ( typedescriptor_t td,
methoddesc desc,
int  buflen,
bool  twoword,
int  startindex,
typedescriptor_t returntype 
)

Definition at line 1088 of file typeinfo.cpp.

static bool typeinfo_equal ( typeinfo_t x,
typeinfo_t y 
)
static

Definition at line 1951 of file typeinfo.cpp.

static bool typeinfo_init_varinfo_from_typedesc ( varinfo var,
typedesc desc 
)
static

Definition at line 960 of file typeinfo.cpp.

bool typeinfo_init_varinfos_from_methoddesc ( varinfo vars,
methoddesc desc,
int  buflen,
int  startindex,
s4 map,
typedescriptor_t returntype 
)

Definition at line 1008 of file typeinfo.cpp.

static bool typeinfo_merge_add ( typeinfo_t dest,
typeinfo_mergedlist_t m,
classref_or_classinfo  cls 
)
static

Definition at line 1258 of file typeinfo.cpp.

static void typeinfo_merge_error ( methodinfo m,
const char *  str,
const typeinfo_t x,
const typeinfo_t y 
)
static

Definition at line 1217 of file typeinfo.cpp.

static bool typeinfo_merge_mergedlists ( typeinfo_t dest,
typeinfo_mergedlist_t x,
typeinfo_mergedlist_t y 
)
static

Definition at line 1315 of file typeinfo.cpp.

static typecheck_result typeinfo_merge_nonarrays ( typeinfo_t dest,
classref_or_classinfo result,
classref_or_classinfo  x,
classref_or_classinfo  y,
typeinfo_mergedlist_t mergedx,
typeinfo_mergedlist_t mergedy 
)
static

Definition at line 1439 of file typeinfo.cpp.

static bool typeinfo_merge_two ( typeinfo_t dest,
classref_or_classinfo  clsx,
classref_or_classinfo  clsy 
)
static

Definition at line 1234 of file typeinfo.cpp.

void typeinfo_print ( FILE *  file,
const typeinfo_t info,
int  indent 
)

Definition at line 2138 of file typeinfo.cpp.

void typeinfo_print_class ( FILE *  file,
classref_or_classinfo  c 
)

Definition at line 2119 of file typeinfo.cpp.

void typeinfo_print_short ( FILE *  file,
const typeinfo_t info 
)

Definition at line 2212 of file typeinfo.cpp.

void typeinfo_print_type ( FILE *  file,
int  type,
const typeinfo_t info 
)

Definition at line 2264 of file typeinfo.cpp.

void typeinfo_test ( )

Definition at line 2101 of file typeinfo.cpp.

static void typeinfo_testmerge ( typeinfo_t a,
typeinfo_t b,
typeinfo_t result,
int *  failed 
)
static

Definition at line 1977 of file typeinfo.cpp.

static void typeinfo_testrun ( const char *  filename)
static

Definition at line 2035 of file typeinfo.cpp.

bool typevector_checkreference ( varinfo vec,
int  index 
)

Definition at line 154 of file typeinfo.cpp.

bool typevector_checkretaddr ( varinfo vec,
int  index 
)

Definition at line 175 of file typeinfo.cpp.

bool typevector_checktype ( varinfo vec,
int  index,
int  type 
)

Definition at line 132 of file typeinfo.cpp.

varinfo* typevector_copy ( varinfo src,
int  size 
)

Definition at line 87 of file typeinfo.cpp.

void typevector_copy_inplace ( varinfo src,
varinfo dst,
int  size 
)

Definition at line 111 of file typeinfo.cpp.

bool typevector_init_object ( varinfo set,
void ins,
classref_or_classinfo  initclass,
int  size 
)

Definition at line 245 of file typeinfo.cpp.

typecheck_result typevector_merge ( methodinfo m,
varinfo dst,
varinfo y,
int  size 
)

Definition at line 285 of file typeinfo.cpp.

void typevector_print ( FILE *  file,
const varinfo vec,
int  size 
)

Definition at line 2289 of file typeinfo.cpp.

void typevector_store ( varinfo vec,
int  index,
Type  type,
typeinfo_t info 
)

Definition at line 195 of file typeinfo.cpp.

void typevector_store_retaddr ( varinfo vec,
int  index,
typeinfo_t info 
)

Definition at line 216 of file typeinfo.cpp.