/*
** !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
**
** This file is generated automatically from 'vtable.tbl' by
** tools/build/vtable_extend.pl
*/

/*
Copyright (C) 2005, The Perl Foundation.
*/
#if !defined(PARROT_EXTEND_VTABLE_H_GUARD)
#define PARROT_EXTEND_VTABLE_H_GUARD

/* Need size_t  */
#include <stddef.h>

extern void Parrot_PMC_init( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_init_pmc( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC initializer );
extern Parrot_PMC Parrot_PMC_instantiate( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC sig );
extern Parrot_PMC Parrot_PMC_new_from_string( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING rep, Parrot_Int flags );
extern void Parrot_PMC_morph( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int type );
extern void Parrot_PMC_mark( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_destroy( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_namespace( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_getprop( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern void Parrot_PMC_setprop( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_PMC value );
extern void Parrot_PMC_delprop( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_PMC Parrot_PMC_getprops( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_type( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_type_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_Int Parrot_PMC_type_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_Int Parrot_PMC_type_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_Int Parrot_PMC_subtype( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int type );
extern Parrot_STRING Parrot_PMC_name( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_clone( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_find_method( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING method_name );
extern Parrot_Int Parrot_PMC_hash( Parrot_INTERP interp, Parrot_PMC pmc, size_t seed );
extern Parrot_Int Parrot_PMC_get_integer( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_get_integer_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_Int Parrot_PMC_get_integer_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_Int Parrot_PMC_get_integer_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_Float Parrot_PMC_get_number( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Float Parrot_PMC_get_number_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_Float Parrot_PMC_get_number_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_Float Parrot_PMC_get_number_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_PMC Parrot_PMC_get_bignum( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_STRING Parrot_PMC_get_string( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_STRING Parrot_PMC_get_repr( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_STRING Parrot_PMC_get_string_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_STRING Parrot_PMC_get_string_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_STRING Parrot_PMC_get_string_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_Int Parrot_PMC_get_bool( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_get_pmc( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_get_pmc_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_PMC Parrot_PMC_get_pmc_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_PMC Parrot_PMC_get_pmc_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_PMC Parrot_PMC_slice( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_Int flag );
extern void* Parrot_PMC_get_pointer( Parrot_INTERP interp, Parrot_PMC pmc );
extern void* Parrot_PMC_get_pointer_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern void* Parrot_PMC_get_pointer_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern void* Parrot_PMC_get_pointer_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern void Parrot_PMC_set_integer_native( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int value );
extern void Parrot_PMC_set_integer_same( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_set_integer_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_Int value );
extern void Parrot_PMC_set_integer_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, Parrot_Int value );
extern void Parrot_PMC_set_integer_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_Int value );
extern void Parrot_PMC_set_number_native( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Float value );
extern void Parrot_PMC_set_number_same( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_set_number_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_Float value );
extern void Parrot_PMC_set_number_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, Parrot_Float value );
extern void Parrot_PMC_set_number_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_Float value );
extern void Parrot_PMC_set_bignum_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int value );
extern void Parrot_PMC_set_bignum_num( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Float value );
extern void Parrot_PMC_set_bignum_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING value );
extern void Parrot_PMC_set_string_native( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING value );
extern void Parrot_PMC_assign_string_native( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING value );
extern void Parrot_PMC_set_string_same( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_set_string_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_STRING value );
extern void Parrot_PMC_set_string_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, Parrot_STRING value );
extern void Parrot_PMC_set_string_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_STRING value );
extern void Parrot_PMC_set_bool( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int value );
extern void Parrot_PMC_set_pmc( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_assign_pmc( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_set_pmc_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_PMC value );
extern void Parrot_PMC_set_pmc_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, Parrot_PMC value );
extern void Parrot_PMC_set_pmc_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_PMC value );
extern void Parrot_PMC_set_pointer( Parrot_INTERP interp, Parrot_PMC pmc, void* value );
extern void Parrot_PMC_set_pointer_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, void* value );
extern void Parrot_PMC_set_pointer_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, void* value );
extern void Parrot_PMC_set_pointer_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, void* value );
extern Parrot_Int Parrot_PMC_elements( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_pop_integer( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Float Parrot_PMC_pop_float( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_STRING Parrot_PMC_pop_string( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_pop_pmc( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_push_integer( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int value );
extern void Parrot_PMC_push_float( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Float value );
extern void Parrot_PMC_push_string( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING value );
extern void Parrot_PMC_push_pmc( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern Parrot_Int Parrot_PMC_shift_integer( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Float Parrot_PMC_shift_float( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_STRING Parrot_PMC_shift_string( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_shift_pmc( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_unshift_integer( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int value );
extern void Parrot_PMC_unshift_float( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Float value );
extern void Parrot_PMC_unshift_string( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING value );
extern void Parrot_PMC_unshift_pmc( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern void Parrot_PMC_splice( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value, Parrot_Int offset, Parrot_Int count );
extern void Parrot_PMC_increment( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_decrement( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_absolute( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC dest );
extern void Parrot_PMC_i_absolute( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_neg( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC dest );
extern void Parrot_PMC_i_neg( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_bitwise_not( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC dest );
extern void Parrot_PMC_i_bitwise_not( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_bitwise_nots( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC dest );
extern void Parrot_PMC_i_bitwise_nots( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_is_same( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC value );
extern Parrot_PMC Parrot_PMC_logical_not( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC dest );
extern void Parrot_PMC_i_logical_not( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_substr( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int offset, Parrot_Int length, Parrot_PMC dest );
extern Parrot_STRING Parrot_PMC_substr_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int offset, Parrot_Int length );
extern Parrot_Int Parrot_PMC_exists_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_Int Parrot_PMC_exists_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_Int Parrot_PMC_exists_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_Int Parrot_PMC_defined( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_Int Parrot_PMC_defined_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern Parrot_Int Parrot_PMC_defined_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern Parrot_Int Parrot_PMC_defined_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern void Parrot_PMC_delete_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key );
extern void Parrot_PMC_delete_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key );
extern void Parrot_PMC_delete_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key );
extern Parrot_PMC Parrot_PMC_nextkey_keyed( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC key, Parrot_Int what );
extern Parrot_PMC Parrot_PMC_nextkey_keyed_int( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int key, Parrot_Int what );
extern Parrot_PMC Parrot_PMC_nextkey_keyed_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING key, Parrot_Int what );
extern Parrot_PMC Parrot_PMC_get_iter( Parrot_INTERP interp, Parrot_PMC pmc );
extern void* Parrot_PMC_invoke( Parrot_INTERP interp, Parrot_PMC pmc, void* next );
extern Parrot_Int Parrot_PMC_can( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING method );
extern Parrot_Int Parrot_PMC_does( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING method );
extern Parrot_Int Parrot_PMC_isa( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING _class );
extern Parrot_PMC Parrot_PMC_subclass( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC name );
extern Parrot_PMC Parrot_PMC_get_attr( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int idx );
extern Parrot_PMC Parrot_PMC_get_attr_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING idx );
extern void Parrot_PMC_set_attr( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int idx, Parrot_PMC value );
extern void Parrot_PMC_set_attr_str( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING idx, Parrot_PMC value );
extern Parrot_PMC Parrot_PMC_get_class( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_add_parent( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC parent );
extern void Parrot_PMC_become_parent( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_PMC class );
extern Parrot_Int Parrot_PMC_class_type( Parrot_INTERP interp, Parrot_PMC pmc );
extern void Parrot_PMC_add_method( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING method, Parrot_PMC sub_pmc );
extern void Parrot_PMC_remove_method( Parrot_INTERP interp, Parrot_PMC pmc, Parrot_STRING method );
extern Parrot_PMC Parrot_PMC_new_singleton( Parrot_INTERP interp, Parrot_PMC pmc );
extern Parrot_PMC Parrot_PMC_get_anonymous_subclass( Parrot_INTERP interp, Parrot_PMC pmc );

#endif
