ConditionalMacros.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:71k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       ConditionalMacros.h
  3.  
  4.      Contains:   Set up for compiler independent conditionals
  5.  
  6.      Version:    Technology: Universal Interface Files 3.3
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1993-2001 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __CONDITIONALMACROS__
  18. #define __CONDITIONALMACROS__
  19. /****************************************************************************************************
  20.     UNIVERSAL_INTERFACES_VERSION
  21.     
  22.         0x0330 => version 3.3
  23.         0x0320 => version 3.2
  24.         0x0310 => version 3.1
  25.         0x0301 => version 3.0.1
  26.         0x0300 => version 3.0
  27.         0x0210 => version 2.1
  28.         This conditional did not exist prior to version 2.1
  29. ****************************************************************************************************/
  30. #define UNIVERSAL_INTERFACES_VERSION 0x0330
  31. /****************************************************************************************************
  32.     TARGET_CPU_*    
  33.     These conditionals specify which microprocessor instruction set is being
  34.     generated.  At most one of these is true, the rest are false.
  35.         TARGET_CPU_PPC          - Compiler is generating PowerPC instructions
  36.         TARGET_CPU_68K          - Compiler is generating 680x0 instructions
  37.         TARGET_CPU_X86          - Compiler is generating x86 instructions
  38.         TARGET_CPU_MIPS         - Compiler is generating MIPS instructions
  39.         TARGET_CPU_SPARC        - Compiler is generating Sparc instructions
  40.         TARGET_CPU_ALPHA        - Compiler is generating Dec Alpha instructions
  41.     TARGET_OS_* 
  42.     These conditionals specify in which Operating System the generated code will
  43.     run. At most one of the these is true, the rest are false.
  44.         TARGET_OS_MAC           - Generate code will run under Mac OS
  45.         TARGET_OS_WIN32         - Generate code will run under 32-bit Windows
  46.         TARGET_OS_UNIX          - Generate code will run under some unix 
  47.     TARGET_RT_* 
  48.     These conditionals specify in which runtime the generated code will
  49.     run. This is needed when the OS and CPU support more than one runtime
  50.     (e.g. MacOS on 68K supports CFM68K and Classic 68k).
  51.         TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers
  52.         TARGET_RT_BIG_ENDIAN    - Generated code uses big endian format for integers    
  53.         TARGET_RT_MAC_CFM       - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used
  54.         TARGET_RT_MAC_MACHO     - TARGET_OS_MAC is true and Mach-O style runtime
  55.         TARGET_RT_MAC_68881     - TARGET_OS_MAC is true and 68881 floating point instructions used  
  56.     TARGET__API_*_* 
  57.     These conditionals are used to differentiate between sets of API's on the same
  58.     processor under the same OS.  The first section after _API_ is the OS.  The
  59.     second section is the API set.  Unlike TARGET_OS_ and TARGET_CPU_, these
  60.     conditionals are not mutally exclusive. This file will attempt to auto-configure
  61.     all TARGET_API_*_* values, but will often need a TARGET_API_*_* value predefined
  62.     in order to disambiguate.
  63.     
  64.         TARGET_API_MAC_OS8      - Code is being compiled to run on System 7 through Mac OS 8.x
  65.         TARGET_API_MAC_CARBON   - Code is being compiled to run on Mac OS 8 and Mac OS X via CarbonLib
  66.         TARGET_API_MAC_OSX      - Code is being compiled to run on Mac OS X
  67.     PRAGMA_*
  68.     These conditionals specify whether the compiler supports particular #pragma's
  69.     
  70.         PRAGMA_IMPORT           - Compiler supports: #pragma import on/off/reset
  71.         PRAGMA_ONCE             - Compiler supports: #pragma once
  72.         PRAGMA_STRUCT_ALIGN     - Compiler supports: #pragma options align=mac68k/power/reset
  73.         PRAGMA_STRUCT_PACK      - Compiler supports: #pragma pack(n)
  74.         PRAGMA_STRUCT_PACKPUSH  - Compiler supports: #pragma pack(push, n)/pack(pop)
  75.         PRAGMA_ENUM_PACK        - Compiler supports: #pragma options(!pack_enums)
  76.         PRAGMA_ENUM_ALWAYSINT   - Compiler supports: #pragma enumsalwaysint on/off/reset
  77.         PRAGMA_ENUM_OPTIONS     - Compiler supports: #pragma options enum=int/small/reset
  78.     FOUR_CHAR_CODE
  79.     This conditional does the proper byte swapping to assue that a four character code (e.g. 'TEXT')
  80.     is compiled down to the correct value on all compilers.
  81.         FOUR_CHAR_CODE('abcd')  - Convert a four-char-code to the correct 32-bit value
  82.     TYPE_*
  83.     These conditionals specify whether the compiler supports particular types.
  84.         TYPE_LONGLONG           - Compiler supports "long long" 64-bit integers
  85.         TYPE_BOOL               - Compiler supports "bool"
  86.         TYPE_EXTENDED           - Compiler supports "extended" 80/96 bit floating point
  87.     FUNCTION_*
  88.     These conditionals specify whether the compiler supports particular language extensions
  89.     to function prototypes and definitions.
  90.         FUNCTION_PASCAL         - Compiler supports "pascal void Foo()"
  91.         FUNCTION_DECLSPEC       - Compiler supports "__declspec(xxx) void Foo()"
  92.         FUNCTION_WIN32CC        - Compiler supports "void __cdecl Foo()" and "void __stdcall Foo()"
  93. ****************************************************************************************************/
  94. #if defined(__MRC__)
  95.   /*
  96.      MrC[pp] compiler from Apple Computer, Inc.
  97.  */
  98.  #define TARGET_CPU_PPC              1
  99.   #define TARGET_CPU_68K              0
  100.   #define TARGET_CPU_X86              0
  101.   #define TARGET_CPU_MIPS             0
  102.   #define TARGET_CPU_SPARC            0       
  103.    #define TARGET_CPU_ALPHA            0
  104.   #define TARGET_OS_MAC               1
  105.   #define TARGET_OS_WIN32             0
  106.   #define TARGET_OS_UNIX              0
  107.   #define TARGET_RT_LITTLE_ENDIAN     0
  108.   #define TARGET_RT_BIG_ENDIAN        1
  109.   #define TARGET_RT_MAC_CFM           1
  110.   #define TARGET_RT_MAC_MACHO         0
  111.   #define TARGET_RT_MAC_68881         0
  112.   #if (__MRC__  > 0x0200) && (__MRC__ < 0x0700)
  113.       #define PRAGMA_IMPORT           1
  114.   #else
  115.       #define PRAGMA_IMPORT           0
  116.   #endif
  117.  #define PRAGMA_STRUCT_ALIGN         1
  118.   #define PRAGMA_ONCE                 1
  119.   #define PRAGMA_STRUCT_PACK          0
  120.   #define PRAGMA_STRUCT_PACKPUSH      0
  121.   #define PRAGMA_ENUM_PACK            1
  122.   #define PRAGMA_ENUM_ALWAYSINT       0
  123.   #define PRAGMA_ENUM_OPTIONS         0
  124.   #define FOUR_CHAR_CODE(x)           (x)
  125.         
  126.    #if (__MRC__  > 0x0300) && (__MRC__ < 0x0700)
  127.       #if __option(longlong)
  128.            #define TYPE_LONGLONG       1
  129.        #else
  130.           #define TYPE_LONGLONG       0
  131.       #endif
  132.      #if __option(bool)
  133.          #define TYPE_BOOL           1
  134.       #else
  135.           #define TYPE_BOOL           0
  136.       #endif
  137.      #define SLASH_INCLUDES_UNSUPPORTED      !__option(unix_includes)
  138.    #else
  139.       #define TYPE_LONGLONG           0
  140.       #define TYPE_BOOL               0
  141.       #define SLASH_INCLUDES_UNSUPPORTED      1
  142.   #endif
  143.  #define TYPE_EXTENDED               0
  144.   
  145.    #define FUNCTION_PASCAL             1
  146.   #define FUNCTION_DECLSPEC           0
  147.   #define FUNCTION_WIN32CC            0
  148.   
  149. #elif defined(__SC__) && (defined(MPW_CPLUS) || defined(MPW_C))
  150.    /*
  151.      SC[pp] compiler from Apple Computer, Inc.
  152.   */
  153.  #define TARGET_CPU_PPC              0
  154.   #define TARGET_CPU_68K              1
  155.   #define TARGET_CPU_X86              0
  156.   #define TARGET_CPU_MIPS             0
  157.   #define TARGET_CPU_SPARC            0       
  158.    #define TARGET_CPU_ALPHA            0
  159.   #define TARGET_OS_MAC               1
  160.   #define TARGET_OS_WIN32             0
  161.   #define TARGET_OS_UNIX              0
  162.   #define TARGET_RT_LITTLE_ENDIAN     0
  163.   #define TARGET_RT_BIG_ENDIAN        1
  164.   #if defined(__CFM68K__)
  165.         #define TARGET_RT_MAC_CFM       1
  166.   #else
  167.       #define TARGET_RT_MAC_CFM       0
  168.   #endif
  169.  #define TARGET_RT_MAC_MACHO         0
  170.   #if defined(mc68881)
  171.        #define TARGET_RT_MAC_68881     1
  172.   #else
  173.       #define TARGET_RT_MAC_68881     0
  174.   #endif
  175.  #if TARGET_RT_MAC_CFM 
  176.      #define PRAGMA_IMPORT           1
  177.       #if (__SC__ <= 0x0810)
  178.          /* old versions of SC don't support