#ifndef PROANSI_H #define PROANSI_H /* Creo Parametric TOOLKIT compatibility macros for ANSI C/C++ language features */ /* The following #ifdefs and #defines determine which language features are to be made available throughout the code. Platform or compiler specific checks should be made here. */ /* * NOTE: macros PRO_PROTO and PRO_CONST_ARG are \\obsolete//, as all compilers * for both PTC products and Creo Parametric TOOLKIT applications are required to be * ANSI-qualified. The definitions are still here so that old code will * still build; the macros should not be used in any future code. */ #ifdef __cplusplus #define PRO_USE_PROTO /* defines for C++ compile */ #define PRO_USE_CONST_ARG # ifndef PRO_CPLUSPLUS_COMPILE # define PRO_CPLUSPLUS_COMPILE # endif #else #ifdef __STDC__ #define PRO_USE_PROTO /* defines for ANSI C compile */ #define PRO_USE_CONST_ARG #endif /* __STDC__ */ #endif /* __cplusplus */ /* PRO_PROTO allows "prototypes" to be used with both K&R and ANSI compilers. For example, extern char *foocpy PRO_PROTO(( char *s1, char *s2 )); becomes extern char *foocpy ( char *s1, char *s2 ); for ANSI compilers and extern char *foocpy (); for K&R compilers NOTE: This macro is obsolete, as all compilers for both PTC products and Creo Parametric TOOLKIT applications are required to be ANSI-qualified. The definitions are still here so that old code will still build; the macros should not be used in any future code. */ #ifdef PRO_USE_PROTO #define PRO_PROTO(s) s #else #define PRO_PROTO(s) () #endif /* CPP_PROTO addresses the case when too much C code depends on a function NOT being prototyped (i.e. on only an empty declaration being provided), but the same header is to be included by C++ code which needs a full prototype. Except for hinging on C++ vs. C compilation rather than ANSI vs. K&R compilation, this macro operates the same as PRO_PROTO defined above. */ #ifdef PRO_CPLUSPLUS_COMPILE #define CPP_PROTO(s) s #else #define CPP_PROTO(s) s #endif /* PRO_CONST_ARG allows variables to be declared as 'const' in argument lists, typdefs, declarations, etc, without sacrificing K&R C compatibility. Of course the K&R C compilers will not actually see this declaration. NOTE: This macro is obsolete, as all compilers for both PTC products and Creo Parametric TOOLKIT applications are required to be ANSI-qualified. The definitions are still here so that old code will still build; the macros should not be used in any future code. */ #ifdef PRO_USE_CONST_ARG #define PRO_CONST_ARG const #else #define PRO_CONST_ARG #endif /* PRO_BEGIN_C_DECLS and PRO_END_C_DECLS allow C functions and declarations between them to be used from C++ though they are compiled with a C compiler. */ #ifdef PRO_CPLUSPLUS_COMPILE #define PRO_BEGIN_C_DECLS extern "C" { #define PRO_END_C_DECLS } #else #define PRO_BEGIN_C_DECLS #define PRO_END_C_DECLS #endif #endif /* PROANSI_H */