phase 2 of PERL_OBJECT cleanup; objXSUB.h autogeneration
[p5sagit/p5-mst-13.2.git] / proto.h
diff --git a/proto.h b/proto.h
index 7ee3cb4..a770485 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -1,10 +1,19 @@
+#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 */
@@ -47,14 +56,14 @@ VIRTUAL int block_start _((int full));
 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
@@ -74,7 +83,7 @@ VIRTUAL char **       get_op_names _((void));
 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));
@@ -109,17 +118,18 @@ VIRTUAL void      do_pipe _((SV* sv, GV* rgv, GV* wgv));
 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));
@@ -216,15 +226,15 @@ 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 _((unsigned char *p));
-VIRTUAL bool   is_utf8_idfirst _((unsigned char *p));
-VIRTUAL bool   is_utf8_alpha _((unsigned char *p));
-VIRTUAL bool   is_utf8_space _((unsigned char *p));
-VIRTUAL bool   is_utf8_digit _((unsigned char *p));
-VIRTUAL bool   is_utf8_upper _((unsigned char *p));
-VIRTUAL bool   is_utf8_lower _((unsigned char *p));
-VIRTUAL bool   is_utf8_print _((unsigned char *p));
-VIRTUAL bool   is_utf8_mark _((unsigned char *p));
+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));
@@ -258,6 +268,8 @@ VIRTUAL U32 magic_len       _((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));
@@ -349,7 +361,7 @@ VIRTUAL OP* newNULLLIST _((void));
 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));
@@ -487,6 +499,7 @@ VIRTUAL char*       savepv _((char* sv));
 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));
@@ -502,6 +515,7 @@ void        save_destructor _((void (*f)(void*), void* p));
 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));
@@ -579,11 +593,7 @@ VIRTUAL I32        sv_eq _((SV* sv1, SV* sv2));
 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));
@@ -628,12 +638,12 @@ 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, unsigned char *ptr));
+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 _((unsigned char *p));
-VIRTUAL UV     to_utf8_upper _((unsigned char *p));
-VIRTUAL UV     to_utf8_title _((unsigned char *p));
+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
@@ -645,18 +655,24 @@ 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 _((unsigned char *a, unsigned char *b));
-VIRTUAL U8*    utf8_hop _((unsigned char *s, I32 off));
-VIRTUAL UV     utf8_to_uv _((unsigned char *s, I32* retlen));
-VIRTUAL char*  uv_to_utf8 _((unsigned char *d, UV uv));
+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));
 
@@ -682,7 +698,7 @@ VIRTUAL struct perl_vars *Perl_GetVars _((void));
 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));
@@ -692,10 +708,10 @@ SV *save_scalar_at _((SV **sptr));
 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));
@@ -709,20 +725,6 @@ void sv_unglob _((SV* sv));
 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));
@@ -736,8 +738,9 @@ void visit _((SVFUNC f));
 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));
@@ -753,6 +756,9 @@ 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 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));
@@ -809,7 +815,7 @@ OP *scalarboolean _((OP *o));
 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));
@@ -833,13 +839,16 @@ void nuke_stacks _((void));
 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 *));
@@ -859,8 +868,13 @@ 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));
+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));
@@ -874,43 +888,25 @@ void debprof _((OP *o));
 void *bset_obj_store _((void *obj, I32 ix));
 OP *new_logop _((I32 type, I32 flags, OP **firstp, OP **otherp));
 
-#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:
 
 #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));
@@ -933,3 +929,23 @@ VIRTUAL void byterun _((struct bytestream bs));
 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
+ */
+