DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9154>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9154

Requesting Xerces Version Macro





------- Additional Comments From [EMAIL PROTECTED]  2002-05-17 14:55 -------
This looks great, FOR UNIX. It just does not work for Windows. Could you modify 
XercesDefs.hpp to do the following instead (much more useful):

/** DO NOT MODIFY BELOW THIS LINE */

// ---------------------------------------------------------------------------
// T W O   A R G U M E N T   C O N C A T E N A T I O N   M A C R O S

// two argument concatenation routines
#define CAT2_SEP_UNDERSCORE(a, b) #a "_" #b
#define CAT2_SEP_PERIOD(a, b) #a "." #b
#define CAT2_SEP_NIL(a, b) #a #b
#define CAT2_RAW_NUMERIC(a, b) a ## b

// two argument macro invokers
#define INVK_CAT2_SEP_UNDERSCORE(a,b) CAT2_SEP_UNDERSCORE(a,b)
#define INVK_CAT2_SEP_PERIOD(a,b)     CAT2_SEP_PERIOD(a,b)
#define INVK_CAT2_STR_SEP_NIL(a,b)    CAT2_SEP_NIL(a,b)
#define INVK_CAT2_RAW_NUMERIC(a,b)    CAT2_RAW_NUMERIC(a,b)

// ---------------------------------------------------------------------------
// T H R E E   A R G U M E N T   C O N C A T E N A T I O N   M A C R O S

// three argument concatenation routines
#define CAT3_SEP_UNDERSCORE(a, b, c) #a "_" #b "_" #c
#define CAT3_SEP_PERIOD(a, b, c) #a "." #b "." #c
#define CAT3_SEP_NIL(a, b, c) #a #b #c
#define CAT3_RAW_NUMERIC(a, b, c) a ## b ## c

// three argument macro invokers
#define INVK_CAT3_SEP_UNDERSCORE(a,b,c) CAT3_SEP_UNDERSCORE(a,b,c)
#define INVK_CAT3_SEP_PERIOD(a,b,c)     CAT3_SEP_PERIOD(a,b,c)
#define INVK_CAT3_SEP_NIL(a,b,c)        CAT3_SEP_NIL(a,b,c)
#define INVK_CAT3_RAW_NUMERIC(a,b,c)    CAT3_RAW_NUMERIC(a,b,c)

// ---------------------------------------------------------------------------
// X E R C E S   V E R S I O N   S P E C I F I C A T I O N

/** 
 * MODIFY THESE NUMERIC VALUES TO COINCIDE WITH XERCES VERSION
 * AND DO NOT MODIFY ANYTHING ELSE IN THIS VERSION HEADER FILE
 */

#define XERCES_VERSION_MAJOR 1
#define XERCES_VERSION_MINOR 7
#define XERCES_VERSION_REVSN 0

// ---------------------------------------------------------------------------
// X E R C E S   V E R S I O N   I N F O R M A T I O N

// Xerces version strings; these particular macros cannot be used for 
// conditional compilation as they are not numeric constants

#define XERCES_FULLVERSIONSTR INVK_CAT3_SEP_UNDERSCORE
(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVSN)
#define XERCES_FULLVERSIONDOT INVK_CAT3_SEP_PERIOD
(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVSN)
#define XERCES_FULLVERSIONNUM INVK_CAT3_SEP_NIL
(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVSN)
#define XERCES_VERSIONSTR     INVK_CAT2_SEP_UNDERSCORE
(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR)

// original from Xerces header
#define Xerces_DLLVersionStr XERCES_FULLVERSIONSTR

const char* const    gXercesVersionStr = XERCES_VERSIONSTR;
const char* const    gXercesFullVersionStr = XERCES_FULLVERSIONSTR;
const unsigned int   gXercesMajVersion = XERCES_VERSION_MAJOR;
const unsigned int   gXercesMinVersion = XERCES_VERSION_MINOR;
const unsigned int   gXercesRevision   = XERCES_VERSION_REVSN;

// Xerces version numeric constants that can be used for conditional 
// compilation purposes.

#define _XERCES_VERSION INVK_CAT3_RAW_NUMERIC
(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVSN)

// to enable test harness
#define TEST_HARNESS 1

// features of test harness
#define TEST_CONDITIONAL_COMPILATION 1

#ifdef TEST_HARNESS

int main(int argc, char* argv[])
{
        // test getting full version information, in various flavors
        printf("Full Version Information:\n");
        printf("\tXERCES_FULLVERSIONSTR: %s\n", XERCES_FULLVERSIONSTR );
        printf("\tXERCES_FULLVERSIONDOT: %s\n", XERCES_FULLVERSIONDOT );
        printf("\tXERCES_FULLVERSIONNUM: %s\n", XERCES_FULLVERSIONNUM );
        printf("\tXerces_DLLVersionStr: %s\n", Xerces_DLLVersionStr );
        printf("\tgXercesFullVersionStr: %s\n", gXercesFullVersionStr );
        printf("\t_XERCES_VERSION: %D\n", _XERCES_VERSION );

        // test getting basic version information, in various flavors
        printf("Basic Version Information:\n");
        printf("\tXERCES_VERSIONSTR: %D\n", XERCES_VERSIONSTR );
        printf("\tgXercesVersionStr: %s\n", gXercesVersionStr );

#ifdef TEST_CONDITIONAL_COMPILATION

        // test conditional compilation here
#if _XERCES_VERSION > 160
        printf("detected version 1.7.0\n");
#else
        printf("did not detect version 1.7.0\n");
#endif // _XERCES_VERSION == 170

#endif
        return 0;
}

#endif // TEST_HARNESS

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to