Author: jonathan
Date: Wed Jan 11 16:42:48 2006
New Revision: 11108
Modified:
trunk/include/parrot/key.h
trunk/include/parrot/library.h
trunk/include/parrot/list.h
trunk/include/parrot/longopt.h
trunk/include/parrot/memory.h
trunk/include/parrot/method_util.h
trunk/include/parrot/misc.h
trunk/include/parrot/mmd.h
trunk/include/parrot/objects.h
Log:
PARROT_API marking #3: include/parrot/*.h starting with letters k to o.
Modified: trunk/include/parrot/key.h
==============================================================================
--- trunk/include/parrot/key.h (original)
+++ trunk/include/parrot/key.h Wed Jan 11 16:42:48 2006
@@ -36,30 +36,30 @@ typedef enum {
} KEY_flags;
-PMC *key_new(Interp *interpreter);
-PMC *key_new_integer(Interp *interpreter, INTVAL value);
-PMC *key_new_number(Interp *interpreter, FLOATVAL value);
-PMC *key_new_string(Interp *interpreter, STRING *value);
-PMC *key_new_cstring(Interp *interpreter, const char *value);
-PMC *key_new_pmc(Interp *interpreter, PMC *value);
-
-void key_set_integer(Interp *interpreter, PMC *key, INTVAL value);
-void key_set_number(Interp *interpreter, PMC *key, FLOATVAL value);
-void key_set_register(Interp *interpreter, PMC *key, INTVAL value,
+PARROT_API PMC *key_new(Interp *interpreter);
+PARROT_API PMC *key_new_integer(Interp *interpreter, INTVAL value);
+PARROT_API PMC *key_new_number(Interp *interpreter, FLOATVAL value);
+PARROT_API PMC *key_new_string(Interp *interpreter, STRING *value);
+PARROT_API PMC *key_new_cstring(Interp *interpreter, const char *value);
+PARROT_API PMC *key_new_pmc(Interp *interpreter, PMC *value);
+
+PARROT_API void key_set_integer(Interp *interpreter, PMC *key, INTVAL value);
+PARROT_API void key_set_number(Interp *interpreter, PMC *key, FLOATVAL value);
+PARROT_API void key_set_register(Interp *interpreter, PMC *key, INTVAL value,
INTVAL flag);
-void key_set_string(Interp *interpreter, PMC *key, STRING *value);
-void key_set_pmc(Interp *interpreter, PMC *key, PMC *value);
+PARROT_API void key_set_string(Interp *interpreter, PMC *key, STRING *value);
+PARROT_API void key_set_pmc(Interp *interpreter, PMC *key, PMC *value);
-INTVAL key_type(Interp *interpreter, PMC *key);
-INTVAL key_integer(Interp *interpreter, PMC *key);
-FLOATVAL key_number(Interp *interpreter, PMC *key);
-STRING *key_string(Interp *interpreter, PMC *key);
-PMC *key_pmc(Interp *interpreter, PMC *key);
-PMC *key_next(Interp *interpreter, PMC *key);
+PARROT_API INTVAL key_type(Interp *interpreter, PMC *key);
+PARROT_API INTVAL key_integer(Interp *interpreter, PMC *key);
+PARROT_API FLOATVAL key_number(Interp *interpreter, PMC *key);
+PARROT_API STRING *key_string(Interp *interpreter, PMC *key);
+PARROT_API PMC *key_pmc(Interp *interpreter, PMC *key);
+PARROT_API PMC *key_next(Interp *interpreter, PMC *key);
-PMC *key_append(Interp *interpreter, PMC *key1, PMC *key2);
+PARROT_API PMC *key_append(Interp *interpreter, PMC *key1, PMC *key2);
-void key_mark(Interp *interpreter, PMC *key);
+PARROT_API void key_mark(Interp *interpreter, PMC *key);
#endif /* PARROT_KEY_H_GUARD */
Modified: trunk/include/parrot/library.h
==============================================================================
--- trunk/include/parrot/library.h (original)
+++ trunk/include/parrot/library.h Wed Jan 11 16:42:48 2006
@@ -33,13 +33,13 @@ typedef enum {
PARROT_LIB_PATH_SIZE
} enum_lib_paths;
-char* Parrot_locate_runtime_file(Interp *, const char *file_name,
+PARROT_API char* Parrot_locate_runtime_file(Interp *, const char *file_name,
enum_runtime_ft);
-STRING* Parrot_locate_runtime_file_str(Interp *, STRING *file_name,
+PARROT_API STRING* Parrot_locate_runtime_file_str(Interp *, STRING *file_name,
enum_runtime_ft);
-void Parrot_autoload_class(Interp *, STRING *class);
-const char* Parrot_get_runtime_prefix(Interp *, STRING **prefix);
+PARROT_API void Parrot_autoload_class(Interp *, STRING *class);
+PARROT_API const char* Parrot_get_runtime_prefix(Interp *, STRING **prefix);
void parrot_init_library_paths(Interp *);
STRING * parrot_split_path_ext(Interp* , STRING *in,
STRING **wo_ext, STRING **ext);
Modified: trunk/include/parrot/list.h
==============================================================================
--- trunk/include/parrot/list.h (original)
+++ trunk/include/parrot/list.h Wed Jan 11 16:42:48 2006
@@ -75,25 +75,25 @@ typedef enum {
* 10^6 list_get, MAX_ITEMS 1024: 0.34s, 2048: 0.33s
*/
-List * list_new(Interp *interpreter, INTVAL type);
-List * list_new_init(Interp *interpreter, INTVAL type, PMC *init);
-void list_pmc_new(Interp *interpreter, PMC *container);
-void list_pmc_new_init(Interp *interpreter, PMC *container, PMC *init);
-List * list_clone(Interp *interpreter, List *other);
-void list_mark(Interp* interpreter, List* list);
-void list_visit(Interp* interpreter, List* list, void*);
-INTVAL list_length(Interp* interpreter, List* list);
-void list_set_length(Interp* interpreter, List* list, INTVAL len);
-void list_push(Interp *interpreter, List *list, void *item, int type);
-void list_unshift(Interp *interpreter, List *list, void *item, int type);
-void * list_pop(Interp *interpreter, List *list, int type);
-void * list_shift(Interp *interpreter, List *list, int type);
-void list_assign(Interp *interpreter, List *list, INTVAL idx,
+PARROT_API List * list_new(Interp *interpreter, INTVAL type);
+PARROT_API List * list_new_init(Interp *interpreter, INTVAL type, PMC *init);
+PARROT_API void list_pmc_new(Interp *interpreter, PMC *container);
+PARROT_API void list_pmc_new_init(Interp *interpreter, PMC *container, PMC
*init);
+PARROT_API List * list_clone(Interp *interpreter, List *other);
+PARROT_API void list_mark(Interp* interpreter, List* list);
+PARROT_API void list_visit(Interp* interpreter, List* list, void*);
+PARROT_API INTVAL list_length(Interp* interpreter, List* list);
+PARROT_API void list_set_length(Interp* interpreter, List* list, INTVAL len);
+PARROT_API void list_push(Interp *interpreter, List *list, void *item, int
type);
+PARROT_API void list_unshift(Interp *interpreter, List *list, void *item, int
type);
+PARROT_API void * list_pop(Interp *interpreter, List *list, int type);
+PARROT_API void * list_shift(Interp *interpreter, List *list, int type);
+PARROT_API void list_assign(Interp *interpreter, List *list, INTVAL idx,
void *item, int type);
-void * list_get(Interp *interpreter, List *list, INTVAL idx, int type);
-void list_insert(Interp *interpreter, List *list, INTVAL idx, INTVAL n_items);
-void list_delete(Interp *interpreter, List *list, INTVAL idx, INTVAL n_items);
-void list_splice(Interp *interpreter, List *list, List* value, INTVAL offset,
+PARROT_API void * list_get(Interp *interpreter, List *list, INTVAL idx, int
type);
+PARROT_API void list_insert(Interp *interpreter, List *list, INTVAL idx,
INTVAL n_items);
+PARROT_API void list_delete(Interp *interpreter, List *list, INTVAL idx,
INTVAL n_items);
+PARROT_API void list_splice(Interp *interpreter, List *list, List* value,
INTVAL offset,
INTVAL count);
#endif /* PARROT_LIST_H_GUARD */
Modified: trunk/include/parrot/longopt.h
==============================================================================
--- trunk/include/parrot/longopt.h (original)
+++ trunk/include/parrot/longopt.h Wed Jan 11 16:42:48 2006
@@ -44,7 +44,7 @@ struct longopt_opt_info {
#define LONGOPT_OPT_INFO_INIT { 1, 0, NULL, NULL, NULL }
-int longopt_get(Parrot_Interp, int argc, char* argv[],
+PARROT_API int longopt_get(Parrot_Interp, int argc, char* argv[],
const struct longopt_opt_decl options[],
struct longopt_opt_info* info_buf);
Modified: trunk/include/parrot/memory.h
==============================================================================
--- trunk/include/parrot/memory.h (original)
+++ trunk/include/parrot/memory.h Wed Jan 11 16:42:48 2006
@@ -13,13 +13,13 @@
#if !defined(PARROT_MEMORY_H_GUARD)
#define PARROT_MEMORY_H_GUARD
#include <assert.h>
-void *mem_sys_allocate(size_t);
+PARROT_API void *mem_sys_allocate(size_t);
-void *mem_sys_allocate_zeroed(size_t);
+PARROT_API void *mem_sys_allocate_zeroed(size_t);
-void *mem__sys_realloc(void *, size_t);
+PARROT_API void *mem__sys_realloc(void *, size_t);
#define mem_sys_realloc(x,y) (assert(x!=NULL), mem__sys_realloc(x,y))
-void mem_sys_free(void *);
+PARROT_API void mem_sys_free(void *);
void *mem__internal_allocate(size_t, const char *, int);
#define mem_internal_allocate(x) mem__internal_allocate(x, __FILE__, __LINE__)
Modified: trunk/include/parrot/method_util.h
==============================================================================
--- trunk/include/parrot/method_util.h (original)
+++ trunk/include/parrot/method_util.h Wed Jan 11 16:42:48 2006
@@ -17,26 +17,26 @@
#include "parrot/pmc.h"
#include "parrot/config.h"
-void Parrot_push_argv(Interp * interp, INTVAL argc, PMC * argv[]);
-INTVAL Parrot_pop_argv(Interp * interp, PMC *** argv);
-void Parrot_push_proto(Interp * interp,
+PARROT_API void Parrot_push_argv(Interp * interp, INTVAL argc, PMC * argv[]);
+PARROT_API INTVAL Parrot_pop_argv(Interp * interp, PMC *** argv);
+PARROT_API void Parrot_push_proto(Interp * interp,
INTVAL intc, INTVAL * intv,
INTVAL numc, FLOATVAL * numv,
INTVAL strc, STRING ** strv,
INTVAL pmcc, PMC ** pmcv);
typedef INTVAL (*Parrot_csub_t)(Interp * , PMC * );
-PMC * Parrot_new_csub(Interp * interp, Parrot_csub_t func);
+PARROT_API PMC * Parrot_new_csub(Interp * interp, Parrot_csub_t func);
struct method_rec_t {
char * name;
Parrot_csub_t sub;
};
-void Parrot_init_stash(Interp * interp, struct method_rec_t * recp,
+PARROT_API void Parrot_init_stash(Interp * interp, struct method_rec_t * recp,
struct Stash * stash);
-PMC * Parrot_find_method(Interp * interp, struct Stash * stash,
+PARROT_API PMC * Parrot_find_method(Interp * interp, struct Stash * stash,
PMC * key);
Modified: trunk/include/parrot/misc.h
==============================================================================
--- trunk/include/parrot/misc.h (original)
+++ trunk/include/parrot/misc.h Wed Jan 11 16:42:48 2006
@@ -29,20 +29,20 @@
INTVAL intval_mod(INTVAL i2, INTVAL i3);
FLOATVAL floatval_mod(FLOATVAL n2, FLOATVAL n3);
-FLOATVAL Parrot_float_rand(INTVAL how_random);
-INTVAL Parrot_uint_rand(INTVAL how_random);
-INTVAL Parrot_int_rand(INTVAL how_random);
-INTVAL Parrot_range_rand(INTVAL from, INTVAL to, INTVAL how_random);
-void Parrot_srand(INTVAL seed);
+PARROT_API FLOATVAL Parrot_float_rand(INTVAL how_random);
+PARROT_API INTVAL Parrot_uint_rand(INTVAL how_random);
+PARROT_API INTVAL Parrot_int_rand(INTVAL how_random);
+PARROT_API INTVAL Parrot_range_rand(INTVAL from, INTVAL to, INTVAL how_random);
+PARROT_API void Parrot_srand(INTVAL seed);
-void *Parrot_make_la(Interp *, PMC *);
-void *Parrot_make_cpa(Interp *, PMC *);
-void Parrot_destroy_la(long *);
-void Parrot_destroy_cpa(char **);
+PARROT_API void *Parrot_make_la(Interp *, PMC *);
+PARROT_API void *Parrot_make_cpa(Interp *, PMC *);
+PARROT_API void Parrot_destroy_la(long *);
+PARROT_API void Parrot_destroy_cpa(char **);
PMC* tm_to_array(Parrot_Interp interpreter, struct tm *tm);
-INTVAL Parrot_byte_index(Interp *interpreter, const STRING *base,
+PARROT_API INTVAL Parrot_byte_index(Interp *interpreter, const STRING *base,
const STRING *search, UINTVAL start_offset);
-INTVAL Parrot_byte_rindex(Interp *interpreter, const STRING *base,
+PARROT_API INTVAL Parrot_byte_rindex(Interp *interpreter, const STRING *base,
const STRING *search, UINTVAL start_offset);
/*
* misc.c
Modified: trunk/include/parrot/mmd.h
==============================================================================
--- trunk/include/parrot/mmd.h (original)
+++ trunk/include/parrot/mmd.h Wed Jan 11 16:42:48 2006
@@ -14,19 +14,19 @@
#define PARROT_MMD_H_GUARD
/* inplace */
-void mmd_dispatch_v_pp(Parrot_Interp, PMC *, PMC *, INTVAL);
-void mmd_dispatch_v_pi(Parrot_Interp, PMC *, INTVAL, INTVAL);
-void mmd_dispatch_v_pn(Parrot_Interp, PMC *, FLOATVAL, INTVAL);
-void mmd_dispatch_v_ps(Parrot_Interp, PMC *, STRING *, INTVAL);
+PARROT_API void mmd_dispatch_v_pp(Parrot_Interp, PMC *, PMC *, INTVAL);
+PARROT_API void mmd_dispatch_v_pi(Parrot_Interp, PMC *, INTVAL, INTVAL);
+PARROT_API void mmd_dispatch_v_pn(Parrot_Interp, PMC *, FLOATVAL, INTVAL);
+PARROT_API void mmd_dispatch_v_ps(Parrot_Interp, PMC *, STRING *, INTVAL);
/* return result */
-PMC* mmd_dispatch_p_ppp(Parrot_Interp, PMC *, PMC *, PMC *, INTVAL);
-PMC* mmd_dispatch_p_pip(Parrot_Interp, PMC *, INTVAL, PMC *, INTVAL);
-PMC* mmd_dispatch_p_pnp(Parrot_Interp, PMC *, FLOATVAL, PMC *, INTVAL);
-PMC* mmd_dispatch_p_psp(Parrot_Interp, PMC *, STRING *, PMC *, INTVAL);
+PARROT_API PMC* mmd_dispatch_p_ppp(Parrot_Interp, PMC *, PMC *, PMC *, INTVAL);
+PARROT_API PMC* mmd_dispatch_p_pip(Parrot_Interp, PMC *, INTVAL, PMC *,
INTVAL);
+PARROT_API PMC* mmd_dispatch_p_pnp(Parrot_Interp, PMC *, FLOATVAL, PMC *,
INTVAL);
+PARROT_API PMC* mmd_dispatch_p_psp(Parrot_Interp, PMC *, STRING *, PMC *,
INTVAL);
/* compare */
-INTVAL mmd_dispatch_i_pp(Parrot_Interp, PMC *, PMC *, INTVAL);
+PARROT_API INTVAL mmd_dispatch_i_pp(Parrot_Interp, PMC *, PMC *, INTVAL);
/* function typedefs */
typedef PMC* (*mmd_f_p_ppp)(Interp *, PMC *, PMC *, PMC *);
@@ -41,13 +41,13 @@ typedef void (*mmd_f_v_ps)(Interp *,
typedef INTVAL (*mmd_f_i_pp) (Interp *, PMC *, PMC *);
-void mmd_add_by_class(Parrot_Interp, INTVAL, STRING *, STRING *, funcptr_t);
-void mmd_register(Parrot_Interp, INTVAL, INTVAL, INTVAL, funcptr_t);
-void mmd_register_sub(Parrot_Interp, INTVAL, INTVAL, INTVAL, PMC*);
-void mmd_add_function(Parrot_Interp, INTVAL, funcptr_t);
-void mmd_add_function_sub(Parrot_Interp, INTVAL, PMC*);
-void mmd_destroy(Parrot_Interp);
-PMC *mmd_vtfind(Parrot_Interp, INTVAL, INTVAL, INTVAL);
+PARROT_API void mmd_add_by_class(Parrot_Interp, INTVAL, STRING *, STRING *,
funcptr_t);
+PARROT_API void mmd_register(Parrot_Interp, INTVAL, INTVAL, INTVAL, funcptr_t);
+PARROT_API void mmd_register_sub(Parrot_Interp, INTVAL, INTVAL, INTVAL, PMC*);
+PARROT_API void mmd_add_function(Parrot_Interp, INTVAL, funcptr_t);
+PARROT_API void mmd_add_function_sub(Parrot_Interp, INTVAL, PMC*);
+PARROT_API void mmd_destroy(Parrot_Interp);
+PARROT_API PMC *mmd_vtfind(Parrot_Interp, INTVAL, INTVAL, INTVAL);
typedef struct _MMD_init {
INTVAL func_nr;
@@ -55,10 +55,10 @@ typedef struct _MMD_init {
funcptr_t func_ptr;
} MMD_init;
-void Parrot_mmd_register_table(Interp*, INTVAL, const MMD_init *, INTVAL);
-void Parrot_mmd_rebuild_table(Interp*, INTVAL class_enum, INTVAL func_nr);
+PARROT_API void Parrot_mmd_register_table(Interp*, INTVAL, const MMD_init *,
INTVAL);
+PARROT_API void Parrot_mmd_rebuild_table(Interp*, INTVAL class_enum, INTVAL
func_nr);
-funcptr_t get_mmd_dispatch_type(Interp *interpreter,
+PARROT_API funcptr_t get_mmd_dispatch_type(Interp *interpreter,
INTVAL function, INTVAL left_type, INTVAL right_type, int *is_pmc);
typedef struct _MMD_table {
@@ -68,21 +68,21 @@ typedef struct _MMD_table {
} MMD_table;
-PMC *Parrot_MMD_search_default_func(Interp *, STRING *meth);
-PMC *Parrot_MMD_search_default_inline(Interp *, STRING *meth,
+PARROT_API PMC *Parrot_MMD_search_default_func(Interp *, STRING *meth);
+PARROT_API PMC *Parrot_MMD_search_default_inline(Interp *, STRING *meth,
STRING *signature, ...);
-PMC *Parrot_MMD_dispatch_func(Interp *, PMC *multi, STRING *meth);
-PMC *Parrot_MMD_search_default_infix(Interp *, STRING *meth,
+PARROT_API PMC *Parrot_MMD_dispatch_func(Interp *, PMC *multi, STRING *meth);
+PARROT_API PMC *Parrot_MMD_search_default_infix(Interp *, STRING *meth,
INTVAL left_type, INTVAL right_type);
-int Parrot_run_maybe_mmd_meth(Interp*, PMC *object, STRING *meth);
-int Parrot_run_maybe_mmd_func(Interp*, STRING *meth);
+PARROT_API int Parrot_run_maybe_mmd_meth(Interp*, PMC *object, STRING *meth);
+PARROT_API int Parrot_run_maybe_mmd_func(Interp*, STRING *meth);
/*
* in src/objects.c :
*/
-const char* Parrot_MMD_method_name(Interp* i, INTVAL idx);
-INTVAL Parrot_MMD_method_idx(Interp* interpreter, char *name);
+PARROT_API const char* Parrot_MMD_method_name(Interp* i, INTVAL idx);
+PARROT_API INTVAL Parrot_MMD_method_idx(Interp* interpreter, char *name);
#endif /* PARROT_MMD_H_GUARD */
Modified: trunk/include/parrot/objects.h
==============================================================================
--- trunk/include/parrot/objects.h (original)
+++ trunk/include/parrot/objects.h Wed Jan 11 16:42:48 2006
@@ -35,33 +35,33 @@ typedef enum {
POD_FIRST_ATTRIB /* attributes start here */
} PARROT_OBJECT_DATA_ENUM;
-PMC *Parrot_single_subclass(Parrot_Interp, PMC *, STRING *);
-void Parrot_new_class(Parrot_Interp, PMC *, STRING *);
-PMC *Parrot_class_lookup(Parrot_Interp, STRING *);
-PMC *Parrot_add_parent(Parrot_Interp, PMC *, PMC *);
-PMC *Parrot_remove_parent(Parrot_Interp, PMC *, PMC *);
-PMC *Parrot_multi_subclass(Parrot_Interp, PMC *, STRING *);
-void Parrot_instantiate_object(Parrot_Interp, PMC *);
-void Parrot_instantiate_object_init(Parrot_Interp, PMC *, PMC *);
-INTVAL Parrot_object_isa(Parrot_Interp interpreter, PMC *, PMC *);
-PMC *Parrot_new_method_cache(Parrot_Interp);
-PMC *Parrot_find_method_with_cache(Parrot_Interp, PMC *, STRING *);
-PMC *Parrot_find_method_direct(Parrot_Interp, PMC *, STRING *);
-INTVAL Parrot_add_attribute(Parrot_Interp, PMC*, STRING*);
-void Parrot_note_method_offset(Parrot_Interp, UINTVAL, PMC *);
-PMC *Parrot_get_attrib_by_num(Parrot_Interp, PMC *, INTVAL);
-void Parrot_set_attrib_by_num(Parrot_Interp, PMC *, INTVAL, PMC *);
-PMC *Parrot_get_attrib_by_str(Parrot_Interp, PMC *, STRING*);
-void Parrot_set_attrib_by_str(Parrot_Interp, PMC *, STRING*, PMC *);
-INTVAL Parrot_get_attrib_num(Parrot_Interp, PMC *, STRING *);
-INTVAL Parrot_class_offset(Parrot_Interp, PMC *, STRING *);
-PMC *Parrot_find_class_constructor(Parrot_Interp, STRING *, INTVAL);
-PMC *Parrot_find_class_destructor(Parrot_Interp, STRING *, INTVAL);
-PMC *Parrot_find_class_fallback(Parrot_Interp, STRING *, INTVAL);
-void Parrot_set_class_constructor(Parrot_Interp, STRING *, INTVAL, STRING *);
-void Parrot_set_class_destructor(Parrot_Interp, STRING *, INTVAL, STRING *);
-void Parrot_set_class_fallback(Parrot_Interp, STRING *, INTVAL, STRING *);
-void Parrot_invalidate_method_cache(Interp*, STRING *class, STRING *meth);
+PARROT_API PMC *Parrot_single_subclass(Parrot_Interp, PMC *, STRING *);
+PARROT_API void Parrot_new_class(Parrot_Interp, PMC *, STRING *);
+PARROT_API PMC *Parrot_class_lookup(Parrot_Interp, STRING *);
+PARROT_API PMC *Parrot_add_parent(Parrot_Interp, PMC *, PMC *);
+PARROT_API PMC *Parrot_remove_parent(Parrot_Interp, PMC *, PMC *);
+PARROT_API PMC *Parrot_multi_subclass(Parrot_Interp, PMC *, STRING *);
+PARROT_API void Parrot_instantiate_object(Parrot_Interp, PMC *);
+PARROT_API void Parrot_instantiate_object_init(Parrot_Interp, PMC *, PMC *);
+PARROT_API INTVAL Parrot_object_isa(Parrot_Interp interpreter, PMC *, PMC *);
+PARROT_API PMC *Parrot_new_method_cache(Parrot_Interp);
+PARROT_API PMC *Parrot_find_method_with_cache(Parrot_Interp, PMC *, STRING *);
+PARROT_API PMC *Parrot_find_method_direct(Parrot_Interp, PMC *, STRING *);
+PARROT_API INTVAL Parrot_add_attribute(Parrot_Interp, PMC*, STRING*);
+PARROT_API void Parrot_note_method_offset(Parrot_Interp, UINTVAL, PMC *);
+PARROT_API PMC *Parrot_get_attrib_by_num(Parrot_Interp, PMC *, INTVAL);
+PARROT_API void Parrot_set_attrib_by_num(Parrot_Interp, PMC *, INTVAL, PMC *);
+PARROT_API PMC *Parrot_get_attrib_by_str(Parrot_Interp, PMC *, STRING*);
+PARROT_API void Parrot_set_attrib_by_str(Parrot_Interp, PMC *, STRING*, PMC *);
+PARROT_API INTVAL Parrot_get_attrib_num(Parrot_Interp, PMC *, STRING *);
+PARROT_API INTVAL Parrot_class_offset(Parrot_Interp, PMC *, STRING *);
+PARROT_API PMC *Parrot_find_class_constructor(Parrot_Interp, STRING *, INTVAL);
+PARROT_API PMC *Parrot_find_class_destructor(Parrot_Interp, STRING *, INTVAL);
+PARROT_API PMC *Parrot_find_class_fallback(Parrot_Interp, STRING *, INTVAL);
+PARROT_API void Parrot_set_class_constructor(Parrot_Interp, STRING *, INTVAL,
STRING *);
+PARROT_API void Parrot_set_class_destructor(Parrot_Interp, STRING *, INTVAL,
STRING *);
+PARROT_API void Parrot_set_class_fallback(Parrot_Interp, STRING *, INTVAL,
STRING *);
+PARROT_API void Parrot_invalidate_method_cache(Interp*, STRING *class, STRING
*meth);
/* Objects, classes and PMCarrays all use the same data scheme:
* PMC_data() holds a malloced array, PMC_int_val() is the size of it