+#ifndef PERL_CALLCONV
+# define PERL_CALLCONV
+#endif
+
#ifdef PERL_OBJECT
-#define VIRTUAL virtual
+#define VIRTUAL virtual PERL_CALLCONV
#else
-#define VIRTUAL
+#define VIRTUAL PERL_CALLCONV
START_EXTERN_C
#endif
+/* NOTE!!! When new virtual functions are added, they must be added at
+ * the end of this file to maintain binary compatibility with PERL_OBJECT
+ */
+
+
#ifndef NEXT30_NO_ATTRIBUTE
#ifndef HASATTRIBUTE /* disable GNU-cc attribute checking? */
#ifdef __attribute__ /* Avoid possible redefinition errors */
VIRTUAL void boot_core_UNIVERSAL _((void));
VIRTUAL void call_list _((I32 oldscope, AV* av_list));
VIRTUAL I32 cando _((I32 bit, I32 effective, Stat_t* statbufp));
-#ifndef CASTNEGFLOAT
VIRTUAL U32 cast_ulong _((double f));
-#endif
+VIRTUAL I32 cast_i32 _((double f));
+VIRTUAL IV cast_iv _((double f));
+VIRTUAL UV cast_uv _((double f));
#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
VIRTUAL I32 my_chsize _((int fd, Off_t length));
#endif
-VIRTUAL OP* ck_gvconst _((OP* o));
-VIRTUAL OP* ck_retarget _((OP* o));
+
#ifdef USE_THREADS
VIRTUAL MAGIC * condpair_magic _((SV *sv));
#endif
VIRTUAL char * get_no_modify _((void));
VIRTUAL U32 * get_opargs _((void));
VIRTUAL I32 cxinc _((void));
-VIRTUAL void deb _((const char* pat,...)) __attribute__((format(printf,1,2)));
+VIRTUAL void deb _((const char* pat,...));
VIRTUAL void deb_growlevel _((void));
VIRTUAL void debprofdump _((void));
VIRTUAL I32 debop _((OP* o));
VIRTUAL bool do_print _((SV* sv, PerlIO* fp));
VIRTUAL OP* do_readline _((void));
VIRTUAL I32 do_chomp _((SV* sv));
-VIRTUAL bool do_seek _((GV* gv, long pos, int whence));
+VIRTUAL bool do_seek _((GV* gv, Off_t pos, int whence));
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
I32 do_semop _((SV** mark, SV** sp));
I32 do_shmio _((I32 optype, SV** mark, SV** sp));
#endif
VIRTUAL void do_sprintf _((SV* sv, I32 len, SV** sarg));
-VIRTUAL long do_sysseek _((GV* gv, long pos, int whence));
-VIRTUAL long do_tell _((GV* gv));
-VIRTUAL I32 do_trans _((SV* sv, OP* arg));
+VIRTUAL Off_t do_sysseek _((GV* gv, Off_t pos, int whence));
+VIRTUAL Off_t do_tell _((GV* gv));
+VIRTUAL I32 do_trans _((SV* sv));
VIRTUAL void do_vecset _((SV* sv));
VIRTUAL void do_vop _((I32 optype, SV* sv, SV* left, SV* right));
+VIRTUAL OP* dofile _((OP* term));
VIRTUAL I32 dowantarray _((void));
VIRTUAL void dump_all _((void));
VIRTUAL void dump_eval _((void));
VIRTUAL void dump_fds _((char* s));
#endif
VIRTUAL void dump_form _((GV* gv));
-VIRTUAL void dump_gv _((GV* gv));
+VIRTUAL void gv_dump _((GV* gv));
#ifdef MYMALLOC
VIRTUAL void dump_mstats _((char* s));
#endif
-VIRTUAL void dump_op _((OP* arg));
-VIRTUAL void dump_pm _((PMOP* pm));
+VIRTUAL void op_dump _((OP* arg));
+VIRTUAL void pmop_dump _((PMOP* pm));
VIRTUAL void dump_packsubs _((HV* stash));
VIRTUAL void dump_sub _((GV* gv));
VIRTUAL void fbm_compile _((SV* sv, U32 flags));
VIRTUAL char* instr _((char* big, char* little));
VIRTUAL bool io_close _((IO* io));
VIRTUAL OP* invert _((OP* cmd));
+VIRTUAL bool is_uni_alnum _((U32 c));
+VIRTUAL bool is_uni_idfirst _((U32 c));
+VIRTUAL bool is_uni_alpha _((U32 c));
+VIRTUAL bool is_uni_space _((U32 c));
+VIRTUAL bool is_uni_digit _((U32 c));
+VIRTUAL bool is_uni_upper _((U32 c));
+VIRTUAL bool is_uni_lower _((U32 c));
+VIRTUAL bool is_uni_print _((U32 c));
+VIRTUAL U32 to_uni_upper _((U32 c));
+VIRTUAL U32 to_uni_title _((U32 c));
+VIRTUAL U32 to_uni_lower _((U32 c));
+VIRTUAL bool is_uni_alnum_lc _((U32 c));
+VIRTUAL bool is_uni_idfirst_lc _((U32 c));
+VIRTUAL bool is_uni_alpha_lc _((U32 c));
+VIRTUAL bool is_uni_space_lc _((U32 c));
+VIRTUAL bool is_uni_digit_lc _((U32 c));
+VIRTUAL bool is_uni_upper_lc _((U32 c));
+VIRTUAL bool is_uni_lower_lc _((U32 c));
+VIRTUAL bool is_uni_print_lc _((U32 c));
+VIRTUAL U32 to_uni_upper_lc _((U32 c));
+VIRTUAL U32 to_uni_title_lc _((U32 c));
+VIRTUAL U32 to_uni_lower_lc _((U32 c));
+VIRTUAL bool is_utf8_alnum _((U8 *p));
+VIRTUAL bool is_utf8_idfirst _((U8 *p));
+VIRTUAL bool is_utf8_alpha _((U8 *p));
+VIRTUAL bool is_utf8_space _((U8 *p));
+VIRTUAL bool is_utf8_digit _((U8 *p));
+VIRTUAL bool is_utf8_upper _((U8 *p));
+VIRTUAL bool is_utf8_lower _((U8 *p));
+VIRTUAL bool is_utf8_print _((U8 *p));
+VIRTUAL bool is_utf8_mark _((U8 *p));
VIRTUAL OP* jmaybe _((OP* arg));
VIRTUAL I32 keyword _((char* d, I32 len));
VIRTUAL void leave_scope _((I32 base));
VIRTUAL int magic_clearpack _((SV* sv, MAGIC* mg));
VIRTUAL int magic_clearsig _((SV* sv, MAGIC* mg));
VIRTUAL int magic_existspack _((SV* sv, MAGIC* mg));
-VIRTUAL int magic_freedefelem _((SV* sv, MAGIC* mg));
VIRTUAL int magic_freeregexp _((SV* sv, MAGIC* mg));
VIRTUAL int magic_get _((SV* sv, MAGIC* mg));
VIRTUAL int magic_getarylen _((SV* sv, MAGIC* mg));
VIRTUAL int magic_mutexfree _((SV* sv, MAGIC* mg));
#endif /* USE_THREADS */
VIRTUAL int magic_nextpack _((SV* sv, MAGIC* mg, SV* key));
+VIRTUAL U32 magic_regdata_cnt _((SV* sv, MAGIC* mg));
+VIRTUAL int magic_regdatum_get _((SV* sv, MAGIC* mg));
VIRTUAL int magic_set _((SV* sv, MAGIC* mg));
#ifdef OVERLOAD
VIRTUAL int magic_setamagic _((SV* sv, MAGIC* mg));
VIRTUAL OP* newOP _((I32 optype, I32 flags));
VIRTUAL void newPROG _((OP* o));
VIRTUAL OP* newRANGE _((I32 flags, OP* left, OP* right));
-VIRTUAL OP* newSLICEOP _((I32 flags, OP* subscript, OP* list));
+VIRTUAL OP* newSLICEOP _((I32 flags, OP* subscript, OP* listop));
VIRTUAL OP* newSTATEOP _((I32 flags, char* label, OP* o));
VIRTUAL CV* newSUB _((I32 floor, OP* o, OP* proto, OP* block));
VIRTUAL CV* newXS _((char* name, void (*subaddr)(CV* cv _CPERLproto), char* filename));
VIRTUAL OP* prepend_elem _((I32 optype, OP* head, OP* tail));
VIRTUAL void push_return _((OP* o));
VIRTUAL void push_scope _((void));
-VIRTUAL regexp* pregcomp _((char* exp, char* xend, PMOP* pm));
VIRTUAL OP* ref _((OP* o, I32 type));
VIRTUAL OP* refkids _((OP* o, I32 type));
VIRTUAL void regdump _((regexp* r));
VIRTUAL I32 pregexec _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave));
-VIRTUAL I32 regexec_flags _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags));
VIRTUAL void pregfree _((struct regexp* r));
+VIRTUAL regexp* pregcomp _((char* exp, char* xend, PMOP* pm));
+VIRTUAL I32 regexec_flags _((regexp* prog, char* stringarg, char* strend,
+ char* strbeg, I32 minend, SV* screamer,
+ void* data, U32 flags));
VIRTUAL regnode* regnext _((regnode* p));
VIRTUAL void regprop _((SV* sv, regnode* o));
VIRTUAL void repeatcpy _((char* to, char* from, I32 len, I32 count));
VIRTUAL char* savepvn _((char* sv, I32 len));
VIRTUAL void savestack_grow _((void));
VIRTUAL void save_aelem _((AV* av, I32 idx, SV **sptr));
+VIRTUAL I32 save_alloc _((I32 size, I32 pad));
VIRTUAL void save_aptr _((AV** aptr));
VIRTUAL AV* save_ary _((GV* gv));
VIRTUAL void save_clearsv _((SV** svp));
VIRTUAL void save_freesv _((SV* sv));
VIRTUAL void save_freeop _((OP* o));
VIRTUAL void save_freepv _((char* pv));
+VIRTUAL void save_generic_svref _((SV** sptr));
VIRTUAL void save_gp _((GV* gv, I32 empty));
VIRTUAL HV* save_hash _((GV* gv));
VIRTUAL void save_helem _((HV* hv, SV *key, SV **sptr));
VIRTUAL void save_op _((void));
VIRTUAL SV* save_scalar _((GV* gv));
VIRTUAL void save_pptr _((char** pptr));
+VIRTUAL void save_re_context _((void));
VIRTUAL void save_sptr _((SV** sptr));
VIRTUAL SV* save_svref _((SV** sptr));
VIRTUAL SV** save_threadsv _((PADOFFSET i));
VIRTUAL OP* scalarkids _((OP* o));
VIRTUAL OP* scalarseq _((OP* o));
VIRTUAL OP* scalarvoid _((OP* o));
+VIRTUAL UV scan_bin _((char* start, I32 len, I32* retlen));
VIRTUAL UV scan_hex _((char* start, I32 len, I32* retlen));
VIRTUAL char* scan_num _((char* s));
VIRTUAL UV scan_oct _((char* start, I32 len, I32* retlen));
VIRTUAL void sv_free _((SV* sv));
VIRTUAL void sv_free_arenas _((void));
VIRTUAL char* sv_gets _((SV* sv, PerlIO* fp, I32 append));
-#ifndef DOSISH
-VIRTUAL char* sv_grow _((SV* sv, I32 newlen));
-#else
-VIRTUAL char* sv_grow _((SV* sv, unsigned long newlen));
-#endif
+VIRTUAL char* sv_grow _((SV* sv, STRLEN newlen));
VIRTUAL void sv_inc _((SV* sv));
VIRTUAL void sv_insert _((SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen));
VIRTUAL int sv_isa _((SV* sv, char* name));
VIRTUAL int sv_isobject _((SV* sv));
VIRTUAL STRLEN sv_len _((SV* sv));
+VIRTUAL STRLEN sv_len_utf8 _((SV* sv));
VIRTUAL void sv_magic _((SV* sv, SV* obj, int how, char* name, I32 namlen));
VIRTUAL SV* sv_mortalcopy _((SV* oldsv));
VIRTUAL SV* sv_newmortal _((void));
VIRTUAL SV* sv_newref _((SV* sv));
VIRTUAL char* sv_peek _((SV* sv));
+VIRTUAL void sv_pos_u2b _((SV* sv, I32* offsetp, I32* lenp));
+VIRTUAL void sv_pos_b2u _((SV* sv, I32* offsetp));
VIRTUAL char* sv_pvn_force _((SV* sv, STRLEN* lp));
VIRTUAL char* sv_reftype _((SV* sv, int ob));
VIRTUAL void sv_replace _((SV* sv, SV* nsv));
VIRTUAL void sv_vsetpvfn _((SV* sv, const char* pat, STRLEN patlen,
va_list* args, SV** svargs, I32 svmax,
bool *used_locale));
+VIRTUAL SV* swash_init _((char* pkg, char* name, SV* listsv, I32 minbits, I32 none));
+VIRTUAL UV swash_fetch _((SV *sv, U8 *ptr));
VIRTUAL void taint_env _((void));
VIRTUAL void taint_proper _((const char* f, char* s));
+VIRTUAL UV to_utf8_lower _((U8 *p));
+VIRTUAL UV to_utf8_upper _((U8 *p));
+VIRTUAL UV to_utf8_title _((U8 *p));
#ifdef UNLINK_ALL_VERSIONS
VIRTUAL I32 unlnk _((char* f));
#endif
VIRTUAL void unsharepvn _((char* sv, I32 len, U32 hash));
VIRTUAL void unshare_hek _((HEK* hek));
VIRTUAL void utilize _((int aver, I32 floor, OP* version, OP* id, OP* arg));
+VIRTUAL U8* utf16_to_utf8 _((U16* p, U8 *d, I32 bytelen));
+VIRTUAL U8* utf16_to_utf8_reversed _((U16* p, U8 *d, I32 bytelen));
+VIRTUAL I32 utf8_distance _((U8 *a, U8 *b));
+VIRTUAL U8* utf8_hop _((U8 *s, I32 off));
+VIRTUAL UV utf8_to_uv _((U8 *s, I32* retlen));
+VIRTUAL U8* uv_to_utf8 _((U8 *d, UV uv));
VIRTUAL void vivify_defelem _((SV* sv));
VIRTUAL void vivify_ref _((SV* sv, U32 to_what));
VIRTUAL I32 wait4pid _((int pid, int* statusp, int flags));
VIRTUAL void warn _((const char* pat,...));
+VIRTUAL void warner _((U32 err, const char* pat,...));
VIRTUAL void watch _((char** addr));
VIRTUAL I32 whichsig _((char* sig));
VIRTUAL int yyerror _((char* s));
-VIRTUAL int yylex _((void));
+#ifdef USE_PURE_BISON
+# define PERL_YYLEX_PARAM_DECL YYSTYPE *lvalp, int *lcharp
+#else
+# define PERL_YYLEX_PARAM_DECL void
+#endif
+VIRTUAL int yylex _((PERL_YYLEX_PARAM_DECL));
VIRTUAL int yyparse _((void));
VIRTUAL int yywarn _((char* s));
-#ifndef MYMALLOC
-VIRTUAL Malloc_t safemalloc _((MEM_SIZE nbytes));
-VIRTUAL Malloc_t safecalloc _((MEM_SIZE elements, MEM_SIZE size));
-VIRTUAL Malloc_t saferealloc _((Malloc_t where, MEM_SIZE nbytes));
-VIRTUAL Free_t safefree _((Malloc_t where));
-#endif
+VIRTUAL Malloc_t safesysmalloc _((MEM_SIZE nbytes));
+VIRTUAL Malloc_t safesyscalloc _((MEM_SIZE elements, MEM_SIZE size));
+VIRTUAL Malloc_t safesysrealloc _((Malloc_t where, MEM_SIZE nbytes));
+VIRTUAL Free_t safesysfree _((Malloc_t where));
#ifdef LEAKTEST
VIRTUAL Malloc_t safexmalloc _((I32 x, MEM_SIZE size));
protected:
void hsplit _((HV *hv));
void hfreeentries _((HV *hv));
-HE* more_he _((void));
+void more_he _((void));
HE* new_he _((void));
void del_he _((HE *p));
HEK *save_hek _((char *str, I32 len, U32 hash));
IV asIV _((SV* sv));
UV asUV _((SV* sv));
SV *more_sv _((void));
-XPVIV *more_xiv _((void));
-XPVNV *more_xnv _((void));
-XPV *more_xpv _((void));
-XRV *more_xrv _((void));
+void more_xiv _((void));
+void more_xnv _((void));
+void more_xpv _((void));
+void more_xrv _((void));
XPVIV *new_xiv _((void));
XPVNV *new_xnv _((void));
XPV *new_xpv _((void));
void sv_check_thinkfirst _((SV *sv));
I32 avhv_index_sv _((SV* sv));
-void sv_catpv_mg _((SV *sv, char *ptr));
-void sv_catpvf_mg _((SV *sv, const char* pat, ...));
-void sv_catpvn_mg _((SV *sv, char *ptr, STRLEN len));
-void sv_catsv_mg _((SV *dstr, SV *sstr));
-void sv_setiv_mg _((SV *sv, IV i));
-void sv_setnv_mg _((SV *sv, double num));
-void sv_setsv_mg _((SV *dstr, SV *sstr));
-void sv_setuv_mg _((SV *sv, UV u));
-void sv_setpv_mg _((SV *sv, const char *ptr));
-void sv_setpvf_mg _((SV *sv, const char* pat, ...));
-void sv_setpviv_mg _((SV *sv, IV iv));
-void sv_setpvn_mg _((SV *sv, const char *ptr, STRLEN len));
-void sv_usepvn_mg _((SV *sv, char *ptr, STRLEN len));
-
void do_report_used _((SV *sv));
void do_clean_objs _((SV *sv));
void do_clean_named_objs _((SV *sv));
typedef I32 (CPerlObj::*SVCOMPARE) _((SV*, SV*));
void qsortsv _((SV ** array, size_t num_elts, SVCOMPARE f));
I32 sortcv _((SV *a, SV *b));
-void save_magic _((MGS *mgs, SV *sv));
+void save_magic _((I32 mgs_ix, SV *sv));
int magic_methpack _((SV *sv, MAGIC *mg, char *meth));
+int magic_methcall _((SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val));
int magic_methcall _((MAGIC *mg, char *meth, I32 flags, int n, SV *val));
OP * doform _((CV *cv, GV *gv, OP *retop));
void doencodes _((SV* sv, char* s, I32 len));
I32 dopoptolabel _((char *label));
I32 dopoptoloop _((I32 startingblock));
I32 dopoptosub _((I32 startingblock));
+I32 dopoptosub_at _((PERL_CONTEXT* cxstk, I32 startingblock));
void save_lines _((AV *array, SV *sv));
OP *doeval _((int gimme, OP** startop));
+I32 sv_ncmp _((SV *a, SV *b));
+I32 sv_i_ncmp _((SV *a, SV *b));
+I32 amagic_ncmp _((SV *a, SV *b));
+I32 amagic_i_ncmp _((SV *a, SV *b));
+I32 amagic_cmp _((SV *str1, SV *str2));
+I32 amagic_cmp_locale _((SV *str1, SV *str2));
+
SV *mul128 _((SV *sv, U8 m));
SV *is_an_int _((char *s, STRLEN l));
int div128 _((SV *pnum, bool *done));
int runops_standard _((void));
int runops_debug _((void));
+
void check_uni _((void));
void force_next _((I32 type));
char *force_version _((char *start));
char *scan_heredoc _((char *s));
char *scan_ident _((char *s, char *send, char *dest, STRLEN destlen, I32 ck_uni));
char *scan_inputsymbol _((char *start));
-char *scan_pat _((char *start));
+char *scan_pat _((char *start, I32 type));
char *scan_str _((char *start));
char *scan_subst _((char *start));
char *scan_trans _((char *start));
OP *too_few_arguments _((OP *o, char* name));
OP *too_many_arguments _((OP *o, char* name));
void null _((OP* o));
-PADOFFSET pad_findlex _((char* name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix));
+PADOFFSET pad_findlex _((char* name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix, I32 saweval));
OP *newDEFSVOP _((void));
char* gv_ename _((GV *gv));
CV *cv_clone2 _((CV *proto, CV *outside));
void open_script _((char *, bool, SV *, int *fd));
void usage _((char *));
void validate_suid _((char *, char*, int));
+int emulate_eaccess _((const char* path, int mode));
regnode *reg _((I32, I32 *));
regnode *reganode _((U8, U32));
regnode *regatom _((I32 *));
regnode *regbranch _((I32 *, I32));
void regc _((U8, char *));
+void reguni _((UV, char *, I32*));
regnode *regclass _((void));
+regnode *regclassutf8 _((void));
I32 regcurly _((char *));
regnode *reg_node _((U8));
regnode *regpiece _((I32 *));
I32 study_chunk _((regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags));
I32 add_data _((I32 n, char *s));
void re_croak2 _((const char* pat1,const char* pat2,...)) __attribute__((noreturn));
+char* regpposixcc _((I32 value));
+void clear_re _((void *r));
I32 regmatch _((regnode *prog));
I32 regrepeat _((regnode *p, I32 max));
I32 regrepeat_hard _((regnode *p, I32 max, I32 *lp));
I32 regtry _((regexp *prog, char *startpos));
bool reginclass _((char *p, I32 c));
+bool reginclassutf8 _((regnode *f, U8* p));
CHECKPOINT regcppush _((I32 parenfloor));
char * regcppop _((void));
+char * regcp_set_to _((I32 ss));
+void cache_re _((regexp *prog));
+void restore_pos _((void *arg));
+U8 * reghop _((U8 *pos, I32 off));
+U8 * reghopmaybe _((U8 *pos, I32 off));
void dump _((char *pat,...));
#ifdef WIN32
int do_aspawn _((void *vreally, void **vmark, void **vsp));
void *bset_obj_store _((void *obj, I32 ix));
OP *new_logop _((I32 type, I32 flags, OP **firstp, OP **otherp));
+void simplify_sort _((OP *o));
-#define PPDEF(s) OP* CPerlObj::s _((ARGSproto));
+I32 do_trans_CC_simple _((SV *sv));
+I32 do_trans_CC_count _((SV *sv));
+I32 do_trans_CC_complex _((SV *sv));
+I32 do_trans_UU_simple _((SV *sv));
+I32 do_trans_UU_count _((SV *sv));
+I32 do_trans_UU_complex _((SV *sv));
+I32 do_trans_UC_simple _((SV *sv));
+I32 do_trans_CU_simple _((SV *sv));
+I32 do_trans_UC_trivial _((SV *sv));
+I32 do_trans_CU_trivial _((SV *sv));
+
+#undef PERL_CKDEF
+#undef PERL_PPDEF
+#define PERL_CKDEF(s) OP* s _((OP *o));
+#define PERL_PPDEF(s) OP* s _((ARGSproto));
public:
-PPDEF(pp_aassign)
-PPDEF(pp_abs)
-PPDEF(pp_accept)
-PPDEF(pp_add)
-PPDEF(pp_aelem)
-PPDEF(pp_aelemfast)
-PPDEF(pp_alarm)
-PPDEF(pp_and)
-PPDEF(pp_andassign)
-PPDEF(pp_anoncode)
-PPDEF(pp_anonhash)
-PPDEF(pp_anonlist)
-PPDEF(pp_aslice)
-PPDEF(pp_atan2)
-PPDEF(pp_av2arylen)
-PPDEF(pp_backtick)
-PPDEF(pp_bind)
-PPDEF(pp_binmode)
-PPDEF(pp_bit_and)
-PPDEF(pp_bit_or)
-PPDEF(pp_bit_xor)
-PPDEF(pp_bless)
-PPDEF(pp_caller)
-PPDEF(pp_chdir)
-PPDEF(pp_chmod)
-PPDEF(pp_chomp)
-PPDEF(pp_chop)
-PPDEF(pp_chown)
-PPDEF(pp_chr)
-PPDEF(pp_chroot)
-PPDEF(pp_close)
-PPDEF(pp_closedir)
-PPDEF(pp_complement)
-PPDEF(pp_concat)
-PPDEF(pp_cond_expr)
-PPDEF(pp_connect)
-PPDEF(pp_const)
-PPDEF(pp_cos)
-PPDEF(pp_crypt)
-PPDEF(pp_cswitch)
-PPDEF(pp_dbmclose)
-PPDEF(pp_dbmopen)
-PPDEF(pp_dbstate)
-PPDEF(pp_defined)
-PPDEF(pp_delete)
-PPDEF(pp_die)
-PPDEF(pp_divide)
-PPDEF(pp_dofile)
-PPDEF(pp_dump)
-PPDEF(pp_each)
-PPDEF(pp_egrent)
-PPDEF(pp_ehostent)
-PPDEF(pp_enetent)
-PPDEF(pp_enter)
-PPDEF(pp_entereval)
-PPDEF(pp_enteriter)
-PPDEF(pp_enterloop)
-PPDEF(pp_entersub)
-PPDEF(pp_entertry)
-PPDEF(pp_enterwrite)
-PPDEF(pp_eof)
-PPDEF(pp_eprotoent)
-PPDEF(pp_epwent)
-PPDEF(pp_eq)
-PPDEF(pp_eservent)
-PPDEF(pp_exec)
-PPDEF(pp_exists)
-PPDEF(pp_exit)
-PPDEF(pp_exp)
-PPDEF(pp_fcntl)
-PPDEF(pp_fileno)
-PPDEF(pp_flip)
-PPDEF(pp_flock)
-PPDEF(pp_flop)
-PPDEF(pp_fork)
-PPDEF(pp_formline)
-PPDEF(pp_ftatime)
-PPDEF(pp_ftbinary)
-PPDEF(pp_ftblk)
-PPDEF(pp_ftchr)
-PPDEF(pp_ftctime)
-PPDEF(pp_ftdir)
-PPDEF(pp_fteexec)
-PPDEF(pp_fteowned)
-PPDEF(pp_fteread)
-PPDEF(pp_ftewrite)
-PPDEF(pp_ftfile)
-PPDEF(pp_ftis)
-PPDEF(pp_ftlink)
-PPDEF(pp_ftmtime)
-PPDEF(pp_ftpipe)
-PPDEF(pp_ftrexec)
-PPDEF(pp_ftrowned)
-PPDEF(pp_ftrread)
-PPDEF(pp_ftrwrite)
-PPDEF(pp_ftsgid)
-PPDEF(pp_ftsize)
-PPDEF(pp_ftsock)
-PPDEF(pp_ftsuid)
-PPDEF(pp_ftsvtx)
-PPDEF(pp_fttext)
-PPDEF(pp_fttty)
-PPDEF(pp_ftzero)
-PPDEF(pp_ge)
-PPDEF(pp_gelem)
-PPDEF(pp_getc)
-PPDEF(pp_getlogin)
-PPDEF(pp_getpeername)
-PPDEF(pp_getpgrp)
-PPDEF(pp_getppid)
-PPDEF(pp_getpriority)
-PPDEF(pp_getsockname)
-PPDEF(pp_ggrent)
-PPDEF(pp_ggrgid)
-PPDEF(pp_ggrnam)
-PPDEF(pp_ghbyaddr)
-PPDEF(pp_ghbyname)
-PPDEF(pp_ghostent)
-PPDEF(pp_glob)
-PPDEF(pp_gmtime)
-PPDEF(pp_gnbyaddr)
-PPDEF(pp_gnbyname)
-PPDEF(pp_gnetent)
-PPDEF(pp_goto)
-PPDEF(pp_gpbyname)
-PPDEF(pp_gpbynumber)
-PPDEF(pp_gprotoent)
-PPDEF(pp_gpwent)
-PPDEF(pp_gpwnam)
-PPDEF(pp_gpwuid)
-PPDEF(pp_grepstart)
-PPDEF(pp_grepwhile)
-PPDEF(pp_gsbyname)
-PPDEF(pp_gsbyport)
-PPDEF(pp_gservent)
-PPDEF(pp_gsockopt)
-PPDEF(pp_gt)
-PPDEF(pp_gv)
-PPDEF(pp_gvsv)
-PPDEF(pp_helem)
-PPDEF(pp_hex)
-PPDEF(pp_hslice)
-PPDEF(pp_i_add)
-PPDEF(pp_i_divide)
-PPDEF(pp_i_eq)
-PPDEF(pp_i_ge)
-PPDEF(pp_i_gt)
-PPDEF(pp_i_le)
-PPDEF(pp_i_lt)
-PPDEF(pp_i_modulo)
-PPDEF(pp_i_multiply)
-PPDEF(pp_i_ncmp)
-PPDEF(pp_i_ne)
-PPDEF(pp_i_negate)
-PPDEF(pp_i_subtract)
-PPDEF(pp_index)
-PPDEF(pp_indread)
-PPDEF(pp_int)
-PPDEF(pp_ioctl)
-PPDEF(pp_iter)
-PPDEF(pp_join)
-PPDEF(pp_keys)
-PPDEF(pp_kill)
-PPDEF(pp_last)
-PPDEF(pp_lc)
-PPDEF(pp_lcfirst)
-PPDEF(pp_le)
-PPDEF(pp_leave)
-PPDEF(pp_leaveeval)
-PPDEF(pp_leaveloop)
-PPDEF(pp_leavesub)
-PPDEF(pp_leavetry)
-PPDEF(pp_leavewrite)
-PPDEF(pp_left_shift)
-PPDEF(pp_length)
-PPDEF(pp_lineseq)
-PPDEF(pp_link)
-PPDEF(pp_list)
-PPDEF(pp_listen)
-PPDEF(pp_localtime)
-PPDEF(pp_lock)
-PPDEF(pp_log)
-PPDEF(pp_lslice)
-PPDEF(pp_lstat)
-PPDEF(pp_lt)
-PPDEF(pp_mapstart)
-PPDEF(pp_mapwhile)
-PPDEF(pp_match)
-PPDEF(pp_method)
-PPDEF(pp_mkdir)
-PPDEF(pp_modulo)
-PPDEF(pp_msgctl)
-PPDEF(pp_msgget)
-PPDEF(pp_msgrcv)
-PPDEF(pp_msgsnd)
-PPDEF(pp_multiply)
-PPDEF(pp_ncmp)
-PPDEF(pp_ne)
-PPDEF(pp_negate)
-PPDEF(pp_next)
-PPDEF(pp_nextstate)
-PPDEF(pp_not)
-PPDEF(pp_nswitch)
-PPDEF(pp_null)
-PPDEF(pp_oct)
-PPDEF(pp_open)
-PPDEF(pp_open_dir)
-PPDEF(pp_or)
-PPDEF(pp_orassign)
-PPDEF(pp_ord)
-PPDEF(pp_pack)
-PPDEF(pp_padany)
-PPDEF(pp_padav)
-PPDEF(pp_padhv)
-PPDEF(pp_padsv)
-PPDEF(pp_pipe_op)
-PPDEF(pp_pop)
-PPDEF(pp_pos)
-PPDEF(pp_postdec)
-PPDEF(pp_postinc)
-PPDEF(pp_pow)
-PPDEF(pp_predec)
-PPDEF(pp_preinc)
-PPDEF(pp_print)
-PPDEF(pp_prototype)
-PPDEF(pp_prtf)
-PPDEF(pp_push)
-PPDEF(pp_pushmark)
-PPDEF(pp_pushre)
-PPDEF(pp_quotemeta)
-PPDEF(pp_rand)
-PPDEF(pp_range)
-PPDEF(pp_rcatline)
-PPDEF(pp_read)
-PPDEF(pp_readdir)
-PPDEF(pp_readline)
-PPDEF(pp_readlink)
-PPDEF(pp_recv)
-PPDEF(pp_redo)
-PPDEF(pp_ref)
-PPDEF(pp_refgen)
-PPDEF(pp_regcmaybe)
-PPDEF(pp_regcomp)
-PPDEF(pp_rename)
-PPDEF(pp_repeat)
-PPDEF(pp_require)
-PPDEF(pp_reset)
-PPDEF(pp_return)
-PPDEF(pp_reverse)
-PPDEF(pp_rewinddir)
-PPDEF(pp_right_shift)
-PPDEF(pp_rindex)
-PPDEF(pp_rmdir)
-PPDEF(pp_rv2av)
-PPDEF(pp_rv2cv)
-PPDEF(pp_rv2gv)
-PPDEF(pp_rv2hv)
-PPDEF(pp_rv2sv)
-PPDEF(pp_sassign)
-PPDEF(pp_scalar)
-PPDEF(pp_schomp)
-PPDEF(pp_schop)
-PPDEF(pp_scmp)
-PPDEF(pp_scope)
-PPDEF(pp_seek)
-PPDEF(pp_seekdir)
-PPDEF(pp_select)
-PPDEF(pp_semctl)
-PPDEF(pp_semget)
-PPDEF(pp_semop)
-PPDEF(pp_send)
-PPDEF(pp_seq)
-PPDEF(pp_setpgrp)
-PPDEF(pp_setpriority)
-PPDEF(pp_sge)
-PPDEF(pp_sgrent)
-PPDEF(pp_sgt)
-PPDEF(pp_shift)
-PPDEF(pp_shmctl)
-PPDEF(pp_shmget)
-PPDEF(pp_shmread)
-PPDEF(pp_shmwrite)
-PPDEF(pp_shostent)
-PPDEF(pp_shutdown)
-PPDEF(pp_sin)
-PPDEF(pp_sle)
-PPDEF(pp_sleep)
-PPDEF(pp_slt)
-PPDEF(pp_sne)
-PPDEF(pp_snetent)
-PPDEF(pp_socket)
-PPDEF(pp_sockpair)
-PPDEF(pp_sort)
-PPDEF(pp_splice)
-PPDEF(pp_split)
-PPDEF(pp_sprintf)
-PPDEF(pp_sprotoent)
-PPDEF(pp_spwent)
-PPDEF(pp_sqrt)
-PPDEF(pp_srand)
-PPDEF(pp_srefgen)
-PPDEF(pp_sselect)
-PPDEF(pp_sservent)
-PPDEF(pp_ssockopt)
-PPDEF(pp_stat)
-PPDEF(pp_stringify)
-PPDEF(pp_stub)
-PPDEF(pp_study)
-PPDEF(pp_subst)
-PPDEF(pp_substcont)
-PPDEF(pp_substr)
-PPDEF(pp_subtract)
-PPDEF(pp_symlink)
-PPDEF(pp_syscall)
-PPDEF(pp_sysopen)
-PPDEF(pp_sysread)
-PPDEF(pp_sysseek)
-PPDEF(pp_system)
-PPDEF(pp_syswrite)
-PPDEF(pp_tell)
-PPDEF(pp_telldir)
-PPDEF(pp_threadsv)
-PPDEF(pp_tie)
-PPDEF(pp_tied)
-PPDEF(pp_time)
-PPDEF(pp_tms)
-PPDEF(pp_trans)
-PPDEF(pp_truncate)
-PPDEF(pp_uc)
-PPDEF(pp_ucfirst)
-PPDEF(pp_umask)
-PPDEF(pp_undef)
-PPDEF(pp_unlink)
-PPDEF(pp_unpack)
-PPDEF(pp_unshift)
-PPDEF(pp_unstack)
-PPDEF(pp_untie)
-PPDEF(pp_utime)
-PPDEF(pp_values)
-PPDEF(pp_vec)
-PPDEF(pp_wait)
-PPDEF(pp_waitpid)
-PPDEF(pp_wantarray)
-PPDEF(pp_warn)
-PPDEF(pp_xor)
+#include "pp_proto.h"
-OP * ck_ftst _((OP *o));
-OP *ck_anoncode _((OP *o));
-OP *ck_bitop _((OP *o));
-OP *ck_concat _((OP *o));
-OP *ck_spair _((OP *o));
-OP *ck_delete _((OP *o));
-OP *ck_eof _((OP *o));
-OP *ck_eval _((OP *o));
-OP *ck_exec _((OP *o));
-OP *ck_exists _((OP *o));
-OP *ck_rvconst _((OP *o));
-OP *ck_fun _((OP *o));
-OP *ck_glob _((OP *o));
-OP *ck_grep _((OP *o));
-OP *ck_index _((OP *o));
-OP *ck_lengthconst _((OP *o));
-OP *ck_lfun _((OP *o));
-OP *ck_rfun _((OP *o));
-OP *ck_listiob _((OP *o));
-OP *ck_fun_locale _((OP *o));
-OP *ck_scmp _((OP *o));
-OP *ck_match _((OP *o));
-OP *ck_null _((OP *o));
-OP *ck_repeat _((OP *o));
-OP *ck_require _((OP *o));
-OP *ck_select _((OP *o));
-OP *ck_shift _((OP *o));
-OP *ck_sort _((OP *o));
-OP *ck_split _((OP *o));
-OP *ck_subr _((OP *o));
-OP *ck_svconst _((OP *o));
-OP *ck_trunc _((OP *o));
void unwind_handler_stack _((void *p));
void restore_magic _((void *p));
void restore_rsfp _((void *f));
VIRTUAL void byterun _((PerlIO *fp));
#endif /* INDIRECT_BGET_MACROS */
+VIRTUAL void sv_catpvf_mg _((SV *sv, const char* pat, ...));
+VIRTUAL void sv_catpv_mg _((SV *sv, char *ptr));
+VIRTUAL void sv_catpvn_mg _((SV *sv, char *ptr, STRLEN len));
+VIRTUAL void sv_catsv_mg _((SV *dstr, SV *sstr));
+VIRTUAL void sv_setpvf_mg _((SV *sv, const char* pat, ...));
+VIRTUAL void sv_setiv_mg _((SV *sv, IV i));
+VIRTUAL void sv_setpviv_mg _((SV *sv, IV iv));
+VIRTUAL void sv_setuv_mg _((SV *sv, UV u));
+VIRTUAL void sv_setnv_mg _((SV *sv, double num));
+VIRTUAL void sv_setpv_mg _((SV *sv, const char *ptr));
+VIRTUAL void sv_setpvn_mg _((SV *sv, const char *ptr, STRLEN len));
+VIRTUAL void sv_setsv_mg _((SV *dstr, SV *sstr));
+VIRTUAL void sv_usepvn_mg _((SV *sv, char *ptr, STRLEN len));
+
+VIRTUAL MGVTBL* get_vtbl _((int vtbl_id));
+
+/* New virtual functions must be added here to maintain binary
+ * compatablity with PERL_OBJECT
+ */
+
+VIRTUAL char* pv_display _((SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim));
+VIRTUAL void dump_indent _((I32 level, PerlIO *file, const char* pat, ...));
+
+VIRTUAL void do_gv_dump _((I32 level, PerlIO *file, char *name, GV *sv));
+VIRTUAL void do_gvgv_dump _((I32 level, PerlIO *file, char *name, GV *sv));
+VIRTUAL void do_hv_dump _((I32 level, PerlIO *file, char *name, HV *sv));
+VIRTUAL void do_magic_dump _((I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim));
+VIRTUAL void do_op_dump _((I32 level, PerlIO *file, OP *o));
+VIRTUAL void do_pmop_dump _((I32 level, PerlIO *file, PMOP *pm));
+VIRTUAL void do_sv_dump _((I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim));
+VIRTUAL void magic_dump _((MAGIC *mg));
+VIRTUAL void reginitcolors _((void));