Main Page | Class List | Directories | File List | Class Members | File Members

pike_types.h File Reference

#include "svalue.h"
#include "block_alloc_h.h"

Go to the source code of this file.

Classes

struct  pike_type

Defines

#define PIKE_TYPE_STACK_SIZE   100000
#define TYPE_STACK_DEBUG(X)
#define CAR_TO_INT(TYPE)   ((char *) (TYPE)->car - (char *) 0)
#define CDR_TO_INT(TYPE)   ((char *) (TYPE)->cdr - (char *) 0)
#define PT_FLAG_MARKER   1
#define copy_pike_type(D, S)   add_ref(D = (S))
#define CONSTTYPE(X)   make_pike_type(X)
#define free_type   debug_free_type
#define CONSTTYPE(X)   make_pike_type(X)
#define MAKE_CONSTANT_TYPE(T, X)
#define init_type_stack   type_stack_mark
#define exit_type_stack   pop_stack_mark
#define push_type   debug_push_type
#define push_reverse_type   debug_push_reverse_type
#define type_stack_mark()
#define reset_type_stack()
#define make_pike_type   debug_make_pike_type
#define pop_type   debug_pop_type
#define compiler_pop_type   debug_compiler_pop_type
#define pop_unfinished_type   debug_pop_unfinished_type
#define pop_type_stack   debug_pop_type_stack
#define push_int_type   debug_push_int_type
#define push_object_type   debug_push_object_type
#define push_object_type_backwards   debug_push_object_type_backwards
#define push_scope_type   debug_push_scope_type
#define push_type_name   debug_push_type_name
#define push_unfinished_type   debug_push_unfinished_type
#define push_assign_type   debug_push_assign_type
#define push_finished_type   debug_push_finished_type
#define push_finished_type_with_markers   debug_push_finished_type_with_markers
#define push_finished_type_backwards   debug_push_finished_type_backwards
#define check_type_string(X)

Functions

 BLOCK_ALLOC (pike_type, n/a)
void debug_free_type (struct pike_type *t)
void debug_push_type (unsigned int type)
void debug_push_reverse_type (unsigned int type)
void debug_check_type_string (struct pike_type *s)
void init_types (void)
ptrdiff_t pop_stack_mark (void)
void debug_pop_type_stack (unsigned int expected)
void type_stack_pop_to_mark (void)
void type_stack_reverse (void)
pike_typedebug_peek_type_stack (void)
void debug_push_int_type (INT_TYPE min, INT_TYPE max)
void debug_push_object_type (int flag, INT32 id)
void debug_push_object_type_backwards (int flag, INT32 id)
void debug_push_type_name (struct pike_string *name)
INT32 extract_type_int (char *p)
void debug_push_unfinished_type (char *s)
void debug_push_assign_type (int marker)
void debug_push_finished_type (struct pike_type *type)
void debug_push_finished_type_backwards (struct pike_type *type)
pike_typedebug_pop_unfinished_type (void)
pike_typedebug_pop_type (void)
pike_typedebug_compiler_pop_type (void)
pike_typeparse_type (const char *s)
void stupid_describe_type (char *a, ptrdiff_t len)
void simple_describe_type (struct pike_type *s)
void my_describe_type (struct pike_type *type)
pike_stringdescribe_type (struct pike_type *type)
TYPE_T compile_type_to_runtime_type (struct pike_type *s)
pike_typeor_pike_types (struct pike_type *a, struct pike_type *b, int zero_implied)
pike_typeand_pike_types (struct pike_type *a, struct pike_type *b)
int strict_check_call (struct pike_type *fun_type, struct pike_type *arg_type)
int check_soft_cast (struct pike_type *to, struct pike_type *from)
int match_types (struct pike_type *a, struct pike_type *b)
int pike_types_le (struct pike_type *a, struct pike_type *b)
pike_typeindex_type (struct pike_type *type, struct pike_type *type_of_index, node *n)
pike_typerange_type (struct pike_type *type, struct pike_type *index1_type, struct pike_type *index2_type)
pike_typearray_value_type (struct pike_type *array_type)
pike_typekey_type (struct pike_type *type, node *n)
int check_indexing (struct pike_type *type, struct pike_type *type_of_index, node *n)
int count_arguments (struct pike_type *s)
int minimum_arguments (struct pike_type *s)
pike_typecheck_call (struct pike_type *args, struct pike_type *type, int strict)
pike_typezzap_function_return (struct pike_type *t, INT32 id)
pike_typeget_type_of_svalue (struct svalue *s)
pike_typeobject_type_to_program_type (struct pike_type *obj_t)
char * get_name_of_type (TYPE_T t)
void cleanup_pike_types (void)
void cleanup_pike_type_table (void)
int type_may_overload (struct pike_type *type, int lfun)
void yyexplain_nonmatching_types (struct pike_type *type_a, struct pike_type *type_b, int flags)
pike_typedebug_make_pike_type (const char *t)
pike_stringtype_to_string (struct pike_type *t)
int pike_type_allow_premature_toss (struct pike_type *type)

Variables

pike_type ** pike_type_hash
size_t pike_type_hash_size
pike_typetype_stack [PIKE_TYPE_STACK_SIZE]
pike_type ** pike_type_mark_stack [PIKE_TYPE_STACK_SIZE/4]
int max_correct_args
PMOD_EXPORT struct pike_typestring_type_string
PMOD_EXPORT struct pike_typeint_type_string
PMOD_EXPORT struct pike_typefloat_type_string
PMOD_EXPORT struct pike_typeobject_type_string
PMOD_EXPORT struct pike_typefunction_type_string
PMOD_EXPORT struct pike_typeprogram_type_string
PMOD_EXPORT struct pike_typearray_type_string
PMOD_EXPORT struct pike_typemultiset_type_string
PMOD_EXPORT struct pike_typemapping_type_string
PMOD_EXPORT struct pike_typetype_type_string
PMOD_EXPORT struct pike_typemixed_type_string
PMOD_EXPORT struct pike_typevoid_type_string
PMOD_EXPORT struct pike_typezero_type_string
PMOD_EXPORT struct pike_typeany_type_string
PMOD_EXPORT struct pike_typeweak_type_string


Define Documentation

#define CAR_TO_INT TYPE   )     ((char *) (TYPE)->car - (char *) 0)
 

#define CDR_TO_INT TYPE   )     ((char *) (TYPE)->cdr - (char *) 0)
 

#define check_type_string  ) 
 

#define compiler_pop_type   debug_compiler_pop_type
 

#define CONSTTYPE  )     make_pike_type(X)
 

#define CONSTTYPE  )     make_pike_type(X)
 

#define copy_pike_type D,
 )     add_ref(D = (S))
 

#define exit_type_stack   pop_stack_mark
 

#define free_type   debug_free_type
 

#define init_type_stack   type_stack_mark
 

#define MAKE_CONSTANT_TYPE T,
 ) 
 

Value:

do {    \
    static struct pike_type *type_;     \
    if (!type_) {                       \
      type_ = CONSTTYPE(X);             \
    }                                   \
    copy_pike_type((T), type_);         \
  } while(0)

#define make_pike_type   debug_make_pike_type
 

#define PIKE_TYPE_STACK_SIZE   100000
 

#define pop_type   debug_pop_type
 

#define pop_type_stack   debug_pop_type_stack
 

#define pop_unfinished_type   debug_pop_unfinished_type
 

#define PT_FLAG_MARKER   1
 

#define push_assign_type   debug_push_assign_type
 

#define push_finished_type   debug_push_finished_type
 

#define push_finished_type_backwards   debug_push_finished_type_backwards
 

#define push_finished_type_with_markers   debug_push_finished_type_with_markers
 

#define push_int_type   debug_push_int_type
 

#define push_object_type   debug_push_object_type
 

#define push_object_type_backwards   debug_push_object_type_backwards
 

#define push_reverse_type   debug_push_reverse_type
 

#define push_scope_type   debug_push_scope_type
 

#define push_type   debug_push_type
 

#define push_type_name   debug_push_type_name
 

#define push_unfinished_type   debug_push_unfinished_type
 

 
#define reset_type_stack  ) 
 

Value:

do {                    \
   type_stack_pop_to_mark();                    \
  type_stack_mark();                            \
} while(0)

#define TYPE_STACK_DEBUG  ) 
 

 
#define type_stack_mark  ) 
 

Value:

do {                            \
  if(Pike_compiler->pike_type_mark_stackp >= pike_type_mark_stack + NELEM(pike_type_mark_stack))        \
    Pike_fatal("Type mark stack overflow.\n");          \
  else {                                                \
    *Pike_compiler->pike_type_mark_stackp=Pike_compiler->type_stackp;                           \
    Pike_compiler->pike_type_mark_stackp++;                                     \
  }                                                     \
  TYPE_STACK_DEBUG("type_stack_mark");                  \
} while(0)


Function Documentation

struct pike_type* and_pike_types struct pike_type a,
struct pike_type b
 

struct pike_type* array_value_type struct pike_type array_type  ) 
 

BLOCK_ALLOC pike_type  ,
n/  a
 

struct pike_type* check_call struct pike_type args,
struct pike_type type,
int  strict
 

int check_indexing struct pike_type type,
struct pike_type type_of_index,
node n
 

int check_soft_cast struct pike_type to,
struct pike_type from
 

void cleanup_pike_type_table void   ) 
 

void cleanup_pike_types void   ) 
 

TYPE_T compile_type_to_runtime_type struct pike_type s  ) 
 

int count_arguments struct pike_type s  ) 
 

void debug_check_type_string struct pike_type s  ) 
 

struct pike_type* debug_compiler_pop_type void   ) 
 

void debug_free_type struct pike_type t  ) 
 

struct pike_type* debug_make_pike_type const char *  t  ) 
 

struct pike_type* debug_peek_type_stack void   ) 
 

struct pike_type* debug_pop_type void   ) 
 

void debug_pop_type_stack unsigned int  expected  ) 
 

struct pike_type* debug_pop_unfinished_type void   ) 
 

void debug_push_assign_type int  marker  ) 
 

void debug_push_finished_type struct pike_type type  ) 
 

void debug_push_finished_type_backwards struct pike_type type  ) 
 

void debug_push_int_type INT_TYPE  min,
INT_TYPE  max
 

void debug_push_object_type int  flag,
INT32  id
 

void debug_push_object_type_backwards int  flag,
INT32  id
 

void debug_push_reverse_type unsigned int  type  ) 
 

void debug_push_type unsigned int  type  ) 
 

void debug_push_type_name struct pike_string name  ) 
 

void debug_push_unfinished_type char *  s  ) 
 

struct pike_string* describe_type struct pike_type type  ) 
 

INT32 extract_type_int char *  p  ) 
 

char* get_name_of_type TYPE_T  t  ) 
 

struct pike_type* get_type_of_svalue struct svalue s  ) 
 

struct pike_type* index_type struct pike_type type,
struct pike_type type_of_index,
node n
 

void init_types void   ) 
 

struct pike_type* key_type struct pike_type type,
node n
 

int match_types struct pike_type a,
struct pike_type b
 

int minimum_arguments struct pike_type s  ) 
 

void my_describe_type struct pike_type type  ) 
 

struct pike_type* object_type_to_program_type struct pike_type obj_t  ) 
 

struct pike_type* or_pike_types struct pike_type a,
struct pike_type b,
int  zero_implied
 

struct pike_type* parse_type const char *  s  ) 
 

int pike_type_allow_premature_toss struct pike_type type  ) 
 

int pike_types_le struct pike_type a,
struct pike_type b
 

ptrdiff_t pop_stack_mark void   ) 
 

struct pike_type* range_type struct pike_type type,
struct pike_type index1_type,
struct pike_type index2_type
 

void simple_describe_type struct pike_type s  ) 
 

int strict_check_call struct pike_type fun_type,
struct pike_type arg_type
 

void stupid_describe_type char *  a,
ptrdiff_t  len
 

int type_may_overload struct pike_type type,
int  lfun
 

void type_stack_pop_to_mark void   ) 
 

void type_stack_reverse void   ) 
 

struct pike_string* type_to_string struct pike_type t  ) 
 

void yyexplain_nonmatching_types struct pike_type type_a,
struct pike_type type_b,
int  flags
 

struct pike_type* zzap_function_return struct pike_type t,
INT32  id
 


Variable Documentation

PMOD_EXPORT struct pike_type* any_type_string
 

PMOD_EXPORT struct pike_type* array_type_string
 

PMOD_EXPORT struct pike_type* float_type_string
 

PMOD_EXPORT struct pike_type* function_type_string
 

PMOD_EXPORT struct pike_type* int_type_string
 

PMOD_EXPORT struct pike_type* mapping_type_string
 

int max_correct_args
 

PMOD_EXPORT struct pike_type* mixed_type_string
 

PMOD_EXPORT struct pike_type* multiset_type_string
 

PMOD_EXPORT struct pike_type* object_type_string
 

struct pike_type** pike_type_hash
 

size_t pike_type_hash_size
 

struct pike_type** pike_type_mark_stack[PIKE_TYPE_STACK_SIZE/4]
 

PMOD_EXPORT struct pike_type* program_type_string
 

PMOD_EXPORT struct pike_type* string_type_string
 

struct pike_type* type_stack[PIKE_TYPE_STACK_SIZE]
 

PMOD_EXPORT struct pike_type* type_type_string
 

PMOD_EXPORT struct pike_type* void_type_string
 

PMOD_EXPORT struct pike_type* weak_type_string
 

PMOD_EXPORT struct pike_type* zero_type_string
 


Generated on Fri Jul 22 23:44:30 2005 for Pike by  doxygen 1.3.9.1