This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change peep() to optimise away unneeded rv2av in lval->[] and lval->{}
[perl5.git] / EXTERN.h
1 /*    EXTERN.h
2  *
3  *    Copyright (c) 1991-1997, Larry Wall
4  *
5  *    You may distribute under the terms of either the GNU General Public
6  *    License or the Artistic License, as specified in the README file.
7  *
8  */
9
10 /*
11  * EXT  designates a global var which is defined in perl.h
12  * dEXT designates a global var which is defined in another
13  *      file, so we can't count on finding it in perl.h
14  *      (this practice should be avoided).
15  */
16 #undef EXT
17 #undef dEXT
18 #undef EXTCONST
19 #undef dEXTCONST
20 #if defined(VMS) && !defined(__GNUC__)
21 #  define EXT globalref
22 #  define dEXT globaldef {"$GLOBAL_RW_VARS"} noshare
23 #  define EXTCONST globalref
24 #  define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
25 #else
26 #  if (defined(_MSC_VER) && defined(_WIN32)) || (defined(__BORLANDC__) && defined(__WIN32__))
27 #    ifdef PERLDLL
28 #      define EXT extern __declspec(dllexport)
29 #      define dEXT 
30 #      define EXTCONST extern __declspec(dllexport) const
31 #      define dEXTCONST const
32 #    else
33 #      define EXT extern __declspec(dllimport)
34 #      define dEXT 
35 #      define EXTCONST extern __declspec(dllimport) const
36 #      define dEXTCONST const
37 #    endif
38 #  else
39 #    define EXT extern
40 #    define dEXT
41 #    define EXTCONST extern const
42 #    define dEXTCONST const
43 #  endif
44 #endif
45
46 #undef INIT
47 #define INIT(x)
48
49 #undef DOINIT