Re: macro redefinitions on Win32 (was Re: Question about PERLIO)
Nicholas Clark [Fri, 28 Sep 2001 23:39:33 +0000 (00:39 +0100)]
Message-ID: <20010928233933.C23673@plum.flirble.org>

p4raw-id: //depot/perl@12259

embed.h
embed.pl
sv.h

diff --git a/embed.h b/embed.h
index ff4bfae..c19e445 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define sv_2iv                 Perl_sv_2iv
 #define sv_2mortal             Perl_sv_2mortal
 #define sv_2nv                 Perl_sv_2nv
+#ifdef CRIPPLED_CC
 #define sv_2pv                 Perl_sv_2pv
+#endif
 #define sv_2pvutf8             Perl_sv_2pvutf8
 #define sv_2pvbyte             Perl_sv_2pvbyte
+#ifdef CRIPPLED_CC
 #define sv_pvn_nomg            Perl_sv_pvn_nomg
+#endif
 #define sv_2uv                 Perl_sv_2uv
 #define sv_iv                  Perl_sv_iv
 #define sv_uv                  Perl_sv_uv
 #define sv_catpvf              Perl_sv_catpvf
 #define sv_vcatpvf             Perl_sv_vcatpvf
 #define sv_catpv               Perl_sv_catpv
+#ifdef CRIPPLED_CC
 #define sv_catpvn              Perl_sv_catpvn
+#endif
+#ifdef CRIPPLED_CC
 #define sv_catsv               Perl_sv_catsv
+#endif
 #define sv_chop                        Perl_sv_chop
 #define sv_clean_all           Perl_sv_clean_all
 #define sv_clean_objs          Perl_sv_clean_objs
 #define sv_peek                        Perl_sv_peek
 #define sv_pos_u2b             Perl_sv_pos_u2b
 #define sv_pos_b2u             Perl_sv_pos_b2u
+#ifdef CRIPPLED_CC
 #define sv_pvn_force           Perl_sv_pvn_force
+#endif
 #define sv_pvutf8n_force       Perl_sv_pvutf8n_force
 #define sv_pvbyten_force       Perl_sv_pvbyten_force
 #define sv_reftype             Perl_sv_reftype
 #define sv_setref_pvn          Perl_sv_setref_pvn
 #define sv_setpv               Perl_sv_setpv
 #define sv_setpvn              Perl_sv_setpvn
+#ifdef CRIPPLED_CC
 #define sv_setsv               Perl_sv_setsv
+#endif
 #define sv_taint               Perl_sv_taint
 #define sv_tainted             Perl_sv_tainted
 #define sv_unmagic             Perl_sv_unmagic
 #define sv_pv                  Perl_sv_pv
 #define sv_pvutf8              Perl_sv_pvutf8
 #define sv_pvbyte              Perl_sv_pvbyte
+#ifdef CRIPPLED_CC
 #define sv_utf8_upgrade                Perl_sv_utf8_upgrade
+#endif
 #define sv_utf8_downgrade      Perl_sv_utf8_downgrade
 #define sv_utf8_encode         Perl_sv_utf8_encode
 #define sv_utf8_decode         Perl_sv_utf8_decode
index 81a6587..e4dae1b 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -344,12 +344,14 @@ walk_table {
     else {
        my ($flags,$retval,$func,@args) = @_;
        unless ($flags =~ /o/) {
+            $ret .= "#ifdef CRIPPLED_CC\n" if $flags =~ /C/;
            if ($flags =~ /s/) {
                $ret .= hide($func,"S_$func");
            }
            elsif ($flags =~ /p/) {
                $ret .= hide($func,"Perl_$func");
            }
+            $ret .= "#endif\n" if $flags =~ /C/;
        }
     }
     $ret;
@@ -1052,6 +1054,7 @@ __END__
 :
 : flags are single letters with following meanings:
 :      A               member of public API
+:      C               wrap compatibility macro in #ifdef DCRIPPLED_CC
 :      d               function has documentation with its source
 :      s               static function, should have an S_ prefix in source
 :                              file
@@ -1720,10 +1723,10 @@ Apd     |IO*    |sv_2io         |SV* sv
 Apd    |IV     |sv_2iv         |SV* sv
 Apd    |SV*    |sv_2mortal     |SV* sv
 Apd    |NV     |sv_2nv         |SV* sv
-Ap     |char*  |sv_2pv         |SV* sv|STRLEN* lp
+ACp    |char*  |sv_2pv         |SV* sv|STRLEN* lp
 Apd    |char*  |sv_2pvutf8     |SV* sv|STRLEN* lp
 Apd    |char*  |sv_2pvbyte     |SV* sv|STRLEN* lp
-Ap     |char*  |sv_pvn_nomg    |SV* sv|STRLEN* lp
+ACp    |char*  |sv_pvn_nomg    |SV* sv|STRLEN* lp
 Apd    |UV     |sv_2uv         |SV* sv
 Apd    |IV     |sv_iv          |SV* sv
 Apd    |UV     |sv_uv          |SV* sv
@@ -1738,8 +1741,8 @@ Apd       |SV*    |sv_bless       |SV* sv|HV* stash
 Afpd   |void   |sv_catpvf      |SV* sv|const char* pat|...
 Ap     |void   |sv_vcatpvf     |SV* sv|const char* pat|va_list* args
 Apd    |void   |sv_catpv       |SV* sv|const char* ptr
-Apd    |void   |sv_catpvn      |SV* sv|const char* ptr|STRLEN len
-Apd    |void   |sv_catsv       |SV* dsv|SV* ssv
+ACpd   |void   |sv_catpvn      |SV* sv|const char* ptr|STRLEN len
+ACpd   |void   |sv_catsv       |SV* dsv|SV* ssv
 Apd    |void   |sv_chop        |SV* sv|char* ptr
 pd     |I32    |sv_clean_all
 pd     |void   |sv_clean_objs
@@ -1774,7 +1777,7 @@ Apd       |SV*    |sv_newref      |SV* sv
 Ap     |char*  |sv_peek        |SV* sv
 Apd    |void   |sv_pos_u2b     |SV* sv|I32* offsetp|I32* lenp
 Apd    |void   |sv_pos_b2u     |SV* sv|I32* offsetp
-Apd    |char*  |sv_pvn_force   |SV* sv|STRLEN* lp
+ACpd   |char*  |sv_pvn_force   |SV* sv|STRLEN* lp
 Apd    |char*  |sv_pvutf8n_force|SV* sv|STRLEN* lp
 Apd    |char*  |sv_pvbyten_force|SV* sv|STRLEN* lp
 Apd    |char*  |sv_reftype     |SV* sv|int ob
@@ -1795,7 +1798,7 @@ Apd       |SV*    |sv_setref_pvn  |SV* rv|const char* classname|char* pv \
                                |STRLEN n
 Apd    |void   |sv_setpv       |SV* sv|const char* ptr
 Apd    |void   |sv_setpvn      |SV* sv|const char* ptr|STRLEN len
-Apd    |void   |sv_setsv       |SV* dsv|SV* ssv
+ACpd   |void   |sv_setsv       |SV* dsv|SV* ssv
 Apd    |void   |sv_taint       |SV* sv
 Apd    |bool   |sv_tainted     |SV* sv
 Apd    |int    |sv_unmagic     |SV* sv|int type
@@ -1927,7 +1930,7 @@ Apd       |char*  |sv_2pvbyte_nolen|SV* sv
 Apd    |char*  |sv_pv          |SV *sv
 Apd    |char*  |sv_pvutf8      |SV *sv
 Apd    |char*  |sv_pvbyte      |SV *sv
-Apd    |STRLEN |sv_utf8_upgrade|SV *sv
+ACpd   |STRLEN |sv_utf8_upgrade|SV *sv
 ApdM   |bool   |sv_utf8_downgrade|SV *sv|bool fail_ok
 Apd    |void   |sv_utf8_encode |SV *sv
 ApdM   |bool   |sv_utf8_decode |SV *sv
diff --git a/sv.h b/sv.h
index 0b3aba2..7ca49a7 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -983,17 +983,11 @@ otherwise.
 #define sv_utf8_upgrade_macro(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC)
 
 /* function style also available for sourcecompat */
-#undef sv_setsv
 #define sv_setsv(dsv, ssv) sv_setsv_macro(dsv, ssv)
-#undef sv_catsv
 #define sv_catsv(dsv, ssv) sv_catsv_macro(dsv, ssv)
-#undef sv_catpvn
 #define sv_catpvn(dsv, sstr, slen) sv_catpvn_macro(dsv, sstr, slen)
-#undef sv_2pv
 #define sv_2pv(sv, lp) sv_2pv_macro(sv, lp)
-#undef sv_pvn_force
 #define sv_pvn_force(sv, lp) sv_pvn_force_macro(sv, lp)
-#undef sv_utf8_upgrade
 #define sv_utf8_upgrade(sv) sv_utf8_upgrade_macro(sv)
 
 #undef SvPV