AutoSense.hpp
上传用户:zhuqijet
上传日期:2013-06-25
资源大小:10074k
文件大小:12k
源码类别:

词法分析

开发平台:

Visual C++

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
  5.  * reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  *
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  *
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in
  16.  *    the documentation and/or other materials provided with the
  17.  *    distribution.
  18.  *
  19.  * 3. The end-user documentation included with the redistribution,
  20.  *    if any, must include the following acknowledgment:
  21.  *       "This product includes software developed by the
  22.  *        Apache Software Foundation (http://www.apache.org/)."
  23.  *    Alternately, this acknowledgment may appear in the software itself,
  24.  *    if and wherever such third-party acknowledgments normally appear.
  25.  *
  26.  * 4. The names "Xerces" and "Apache Software Foundation" must
  27.  *    not be used to endorse or promote products derived from this
  28.  *    software without prior written permission. For written
  29.  *    permission, please contact apache@apache.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "Apache",
  32.  *    nor may "Apache" appear in their name, without prior written
  33.  *    permission of the Apache Software Foundation.
  34.  *
  35.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  * ====================================================================
  48.  *
  49.  * This software consists of voluntary contributions made by many
  50.  * individuals on behalf of the Apache Software Foundation, and was
  51.  * originally based on software copyright (c) 1999, International
  52.  * Business Machines, Inc., http://www.ibm.com .  For more information
  53.  * on the Apache Software Foundation, please see
  54.  * <http://www.apache.org/>.
  55.  */
  56. /*
  57.  * $Log: AutoSense.hpp,v $
  58.  * Revision 1.12  2003/05/21 21:08:04  knoaman
  59.  * gcc 2.95.x is generating an internal error for some template definitions, so
  60.  * we use the default memory manger in such cases.
  61.  *
  62.  * Revision 1.11  2003/05/12 09:44:19  gareth
  63.  * Port to NetBSD. Patch by Hiramatsu Yoshifumi.
  64.  *
  65.  * Revision 1.10  2003/03/27 16:16:43  tng
  66.  * use __IBMCPP__ instead of __xlC__ to determine xlC compiler
  67.  *
  68.  * Revision 1.9  2003/03/13 22:11:46  tng
  69.  * [Bug 17858] Support for QNX/Neutrino.  Patch from Chris McKillop.
  70.  *
  71.  * Revision 1.8  2002/12/02 20:40:49  tng
  72.  * [Bug 12490] Patches required to build Xerces-C++ on BeOS R5.  Patch from Andrew Bachmann.
  73.  *
  74.  * Revision 1.7  2002/10/29 18:58:33  tng
  75.  * Support for Linux/390
  76.  *
  77.  * Revision 1.6  2002/08/23 20:56:00  tng
  78.  * [Bug 11981] inproper "AND" operator in AutoSense.hpp.
  79.  *
  80.  * Revision 1.5  2002/08/19 18:35:56  tng
  81.  * [Bug 6467] Installing Xerces C++ on cygwin environment.
  82.  *
  83.  * Revision 1.4  2002/07/12 16:48:49  jberry
  84.  * Remove reliance on XML_MACOSX. XML_MACOS is used solely. Where qualification
  85.  * by compiler is required, look for the compiler explicitly such as with
  86.  * XML_METROWERKS or __APPLE__ (for the Apple GCC compiler).
  87.  *
  88.  * Add a few tweaks for compatibility with GCC3.1.
  89.  *
  90.  * This change may address Bug 10649.
  91.  *
  92.  * Revision 1.3  2002/03/04 20:31:14  tng
  93.  * [Bug 2868] AIX 4.3.3 mutex/atomic-operation changes for build.
  94.  *
  95.  * Revision 1.2  2002/02/27 22:38:34  peiyongz
  96.  * Bug# 6445 Caldera (SCO) OpenServer Port : patch from Martin Kalen
  97.  *
  98.  * Revision 1.1.1.1  2002/02/01 22:22:09  peiyongz
  99.  * sane_include
  100.  *
  101.  * Revision 1.21  2001/11/29 18:25:18  tng
  102.  * FreeBSD support by Michael Huedepohl.
  103.  *
  104.  * Revision 1.20  2001/05/11 13:26:26  tng
  105.  * Copyright update.
  106.  *
  107.  * Revision 1.19  2001/03/23 19:01:25  tng
  108.  * [Bug 1018]  AutoSense looks for "IRIX" when it should look for "sgi" or "__sgi".  By Jeff Harrell.
  109.  *
  110.  * Revision 1.18  2001/02/09 14:40:01  tng
  111.  * Update support for SCO UnixWare 7 (gcc).  Tested under UnixWare 7.1.1 with gcc version 2.95.2 19991024 (release) with gmake 3.79.1.  Updated by Martin Kalen.
  112.  *
  113.  * Revision 1.17  2001/01/26 21:59:25  tng
  114.  * Change bug-todo list to xml format.  Other documentation fixes.
  115.  *
  116.  * Revision 1.16  2000/10/09 18:15:43  jberry
  117.  * Modify sensing of Mac OS X.
  118.  * PR:
  119.  * Obtained from:
  120.  * Submitted by:
  121.  * Reviewed by:
  122.  * PR:
  123.  * Obtained from:
  124.  * Submitted by:
  125.  * Reviewed by:
  126.  *
  127.  * Revision 1.15  2000/09/21 00:54:18  aruna1
  128.  * OS2 related changes given by Bill Schindler
  129.  *
  130.  * Revision 1.14  2000/08/01 18:26:02  aruna1
  131.  * Tru64 support added
  132.  *
  133.  * Revision 1.13  2000/07/18 18:25:58  andyh
  134.  * Mac OS update.
  135.  * Contributed by James Berry <jberry@criticalpath.com>
  136.  *
  137.  * Revision 1.12  2000/04/04 20:11:29  abagchi
  138.  * Added PTX support
  139.  *
  140.  * Revision 1.11  2000/03/02 19:54:37  roddey
  141.  * This checkin includes many changes done while waiting for the
  142.  * 1.1.0 code to be finished. I can't list them all here, but a list is
  143.  * available elsewhere.
  144.  *
  145.  * Revision 1.10  2000/03/02 01:51:00  aruna1
  146.  * Sun CC 5.0 related changes
  147.  *
  148.  * Revision 1.9  2000/02/24 20:05:23  abagchi
  149.  * Swat for removing Log from API docs
  150.  *
  151.  * Revision 1.8  2000/02/22 01:00:10  aruna1
  152.  * GNUGDefs references removed. Now only GCCDefs is used instead
  153.  *
  154.  * Revision 1.7  2000/02/06 07:48:00  rahulj
  155.  * Year 2K copyright swat.
  156.  *
  157.  * Revision 1.6  2000/02/01 23:43:22  abagchi
  158.  * AS/400 related change
  159.  *
  160.  * Revision 1.5  2000/01/21 22:12:29  abagchi
  161.  * OS390 Change: changed OE390 to OS390
  162.  *
  163.  * Revision 1.4  1999/12/18 00:47:01  rahulj
  164.  * Merged in some changes for OS390.
  165.  *
  166.  * Revision 1.3  1999/12/17 01:28:53  rahulj
  167.  * Merged in changes submitted for UnixWare 7 port. Platform
  168.  * specific files are still missing.
  169.  *
  170.  * Revision 1.2  1999/12/01 17:16:16  rahulj
  171.  * Added support for IRIX 6.5.5 using SGI MIPSpro C++ 7.3 and 7.21 generating 32 bit objects. Changes submitted by Marc Stuessel
  172.  *
  173.  * Revision 1.1.1.1  1999/11/09 01:03:55  twl
  174.  * Initial checkin
  175.  *
  176.  * Revision 1.2  1999/11/08 20:45:03  rahul
  177.  * Swat for adding in Product name and CVS comment log variable.
  178.  *
  179.  */
  180. #ifndef AUTOSENSE_HPP
  181. #define AUTOSENSE_HPP
  182. // ---------------------------------------------------------------------------
  183. //  This section attempts to auto detect the operating system. It will set
  184. //  up XercesC specific defines that are used by the rest of the code.
  185. // ---------------------------------------------------------------------------
  186. #if defined(_AIX)
  187.     #define XML_AIX
  188.     #define XML_UNIX
  189.     #if defined(_AIXVERSION_430)
  190.         #define XML_AIX43  // for use of POSIX compliant pthread functions
  191.     #endif
  192. #elif defined(_SEQUENT_)
  193.     #define XML_PTX
  194.     #define XML_UNIX
  195. #elif defined(_HP_UX) || defined(__hpux) || defined(_HPUX_SOURCE)
  196.     #define XML_HPUX
  197.     #define XML_UNIX
  198. #elif defined(SOLARIS) || defined(__SVR4)
  199.     #define XML_SOLARIS
  200.     #define XML_UNIX
  201. #elif defined(_SCO_DS)
  202.     #define XML_OPENSERVER
  203.     #define XML_UNIX
  204. #elif defined(__UNIXWARE__) || defined(__USLC__)
  205.     #define XML_UNIXWARE
  206.     #define XML_UNIX
  207. #elif defined(__BEOS__)
  208.     #define XML_BEOS
  209.     #define XML_UNIX
  210. #elif defined(__QNXNTO__)
  211.     #define XML_QNX
  212.     #define XML_UNIX
  213. #elif defined(__linux__)
  214.     #define XML_LINUX
  215.     #define XML_UNIX
  216.     #if defined(__s390__)
  217.         #define XML_LINUX_390
  218.     #endif
  219. #elif defined(__FreeBSD__)
  220.     #define XML_FREEBSD
  221.     #define XML_UNIX
  222. #elif defined(IRIX) || defined(__sgi)
  223.     #define XML_IRIX
  224.     #define XML_UNIX
  225. #elif defined(__MVS__)
  226.     #define XML_OS390
  227.     #define XML_UNIX
  228. #elif defined(EXM_OS390)
  229.     #define XML_OS390
  230.     #define XML_UNIX
  231. #elif defined(__OS400__)
  232.     #define XML_AS400
  233.     #define XML_UNIX
  234. #elif defined(__OS2__)
  235.     #define XML_OS2
  236. #elif defined(__TANDEM)
  237.     #define XML_TANDEM
  238.     #define XML_UNIX
  239.     #define XML_CSET
  240. #elif defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__)
  241.     #define XML_WIN32
  242.     #ifndef WIN32
  243.       #define WIN32
  244.     #endif
  245. #elif defined(__WINDOWS__)
  246.     // IBM VisualAge special handling
  247.     #if defined(__32BIT__)
  248.         #define XML_WIN32
  249.     #else
  250.         #define XML_WIN16
  251.     #endif
  252. #elif defined(__MSDXML__)
  253.     #define XML_DOS
  254. #elif defined(macintosh) || (defined(__APPLE__) && defined(__MACH__))
  255.     #define XML_MACOS
  256. #elif defined(__alpha) && defined(__osf__)
  257.     #define XML_TRU64
  258. #elif defined(__NetBSD__)
  259.     #define XML_NETBSD
  260. #else
  261.     #error Code requires port to host OS!
  262. #endif
  263. // ---------------------------------------------------------------------------
  264. //  This section attempts to autodetect the compiler being used. It will set
  265. //  up Xerces specific defines that can be used by the rest of the code.
  266. // ---------------------------------------------------------------------------
  267. #if defined(__BORLANDC__)
  268.     #define XML_BORLAND
  269. #elif defined(_MSC_VER)
  270.     #define XML_VISUALCPP
  271. #elif defined(XML_SOLARIS)
  272.     #if defined(__SUNPRO_CC) && (__SUNPRO_CC >=0x500)
  273.         #define XML_SUNCC5
  274. #elif defined(__SUNPRO_CC) && (__SUNPRO_CC <0x500)
  275.         #define XML_SUNCC
  276.     #elif defined(_EDG_RUNTIME_USES_NAMESPACES)
  277.         #define XML_SOLARIS_KAICC
  278.     #elif defined(__GNUG__)
  279. #define XML_GCC
  280.     #else
  281.         #error Code requires port to current development environment
  282.     #endif
  283. #elif defined (__QNXNTO__)
  284.     #define XML_QCC
  285. #elif defined (__GNUG__) || defined(__BEOS__) || defined(__linux__) || defined(__CYGWIN__)
  286.     #define XML_GCC
  287. #elif defined(XML_HPUX)
  288.     #if defined(EXM_HPUX)
  289.         #define XML_HPUX_KAICC
  290.     #elif (__cplusplus == 1)
  291.         #define XML_HPUX_CC
  292.     #elif (__cplusplus == 199707 || __cplusplus == 199711)
  293.         #define XML_HPUX_aCC
  294.     #endif
  295. #elif defined(XML_IRIX)
  296.     #define XML_MIPSPRO_CC
  297. #elif defined(XML_PTX)
  298.     #define XML_PTX_CC
  299. #elif defined(XML_TANDEM)
  300.     #define XML_TANDEMCC
  301. #elif defined(__MVS__) && defined(__cplusplus)
  302.     #define XML_MVSCPP
  303. #elif defined(EXM_OS390) && defined(__cplusplus)
  304.     #define XML_MVSCPP
  305. #elif defined(__IBMC__) || defined(__IBMCPP__)
  306.     #if defined(XML_WIN32)
  307.         #define XML_IBMVAW32
  308.     #elif defined(XML_OS2)
  309.         #define XML_IBMVAOS2
  310.         #if (__IBMC__ >= 400 || __IBMCPP__ >= 400)
  311.             #define XML_IBMVA4_OS2
  312.         #endif
  313.     #elif defined(XML_AIX)
  314.         #define XML_CSET              
  315.     #endif
  316. #elif defined(XML_TRU64) && defined(__DECCXX)
  317.     #define XML_DECCXX
  318. #elif defined(__MWERKS__)
  319.     #define XML_METROWERKS
  320. #elif defined(__OS400__)
  321. #else
  322.     #error Code requires port to current development environment
  323. #endif
  324. // ---------------------------------------------------------------------------
  325. //  The gcc compiler 2.95... is generating an internal error for some template
  326. //  definitions. So, if we are compiling with gcc, have a specific define that
  327. //  we can later use in the code.
  328. // ---------------------------------------------------------------------------
  329. #if defined(__GNUC__)
  330. #define XML_GCC_VERSION (__GNUC__ * 10000 
  331.                          + __GNUC_MINOR__ * 100 
  332.                          + __GNUC_PATCHLEVEL__)
  333. #endif
  334. #endif