#ifndef _NSRCFG_ // -*-c++-*-
#define _NSRCFG_

//----------------------------------------------------------------------
//  nsrCfg.h
//   Configuration file for NSR library.
//
//      Unpublished Confidential Information of Hewlett-Packard
//      Company. Do not disclose.  Copyright (c) Hewlett-Packard
//      Company 1995. All rights reserved
// 
// The contents of this software are proprietary and confidential to
// the Hewlett- Packard Company, and are limited in distribution to
// those with a direct need to know.  Individuals having access to
// this software are responsible for maintaining the confidentiality
// of the content and for keeping the software secure when not in use.
// Transfer to any party is strictly forbidden other than as expressly
// permitted in writing by Hewlett-Packard Company.  Unauthorized
// transfer to or possession by any unauthorized party may be a
// criminal offense.
//
//                  RESTRICTED RIGHTS LEGEND
//
//      Use,  duplication,  or disclosure by the U. S. Government is
//      subject to restrictions as set forth in subparagraph (c) (1)
//      (ii) in the Rights in Technical Data and Computer Software
//      clause in DFARS 252.227-7013 or any other successor clause.
//
//                      HEWLETT-PACKARD COMPANY
//                      3000 Hanover St.
//                      Palo Alto, CA  94304 U.S.A.
//
//      Rights for non-DOD U.S. Government Departments and Agencies
//      are as set forth in FAR 52.227-19 (c) (1,2) or any other
//      successor clause.
//
//  NOTES:
//   Users should edit this file to set platform-specific flags, and
//   to choose which pieces of the library they wish to have nsrLib.h
//   include for them. 
//
//----------------------------------------------------------------------
// $Source: /projects/HMS/nsr/udfCore/config/nsrCfg.h,v $
// $Revision: 1.8 $     $Author: hmgr $
// $State: Exp $        $Locker:  $
// $Date: 96/05/20 14:56:42 $
//

//----------------------------------------------------------------------
// Miscellaneous Defines needed for all platforms, etc.
//
// Place ANYTHING you would like here.
//----------------------------------------------------------------------

//#define ...
//#include ...

//----------------------------------------------------------------------
// PLATFORM SELECTION
//
// Choose ONE platform, by making sure only one is defined.
//----------------------------------------------------------------------

#undef  PLATFORM_DEFINED        // Start out with NO platform defined.

#if defined __BORLANDC__        // put your Windows compiler's symbol here
  #define WINDOWS_PLATFORM
  #ifdef PLATFORM_DEFINED
    ERROR--More than one Platform Defined
  #endif
  #define  PLATFORM_DEFINED
#endif

#if defined __MWERKS__        // put your MAC compiler's symbol here
  #define MAC_PLATFORM
  #ifdef PLATFORM_DEFINED
    ERROR--More than one Platform Defined
  #endif
  #define  PLATFORM_DEFINED
#endif

#if defined __IBMCPP__          // put your OS/2 compiler's symbol here
  #define OS2_PLATFORM
  #ifdef PLATFORM_DEFINED
    ERROR--More than one Platform Defined
  #endif
  #define  PLATFORM_DEFINED
#endif

#if defined __GNUC__ || defined hpux // put your UNIX compiler's symbol here
  #define UNIX_PLATFORM
    // If desired, define one of the spcific UNIX platforms here, in
    // addition to the UNIX_PLATFORM flag.  You may do this manually
    // or have your compilers' symbols do this automatically.  If no
    // specific UNIX platform type is defined, the program will act
    // like a "generic UNIX" system.
  //#define HP_UX_PLATFORM
  //#define AIX_PLATFORM
  //#define SOLARIS_PLATFORM
  //#define IRIX_PLATFORM
  #ifdef PLATFORM_DEFINED
    ERROR--More than one Platform Defined
  #endif
  #define  PLATFORM_DEFINED
#endif

#ifndef PLATFORM_DEFINED
  // This should cause an error on any compiler!
  ERROR--No Platform Defined
#endif

//----------------------------------------------------------------------
// PLATFORM-SPECIFIC CONFIGURATIONS
//
// Specify any symbols needed by your compiler on your platform.
//
// COMPILER BUG WORKAROUNDS:
//   The following flags are available to work around some common
//   compiler bugs.
//   
//   _COMPILER_BUG_PRIVATE_NESTED_CLASSES_
//     Set this flag if your compiler does not nested classes to know
//     about other classes or structs defined inside of the same
//     class. This flag will make sure that these nested classes are
//     defined publicly.
//   _COMPILER_BUG_TAGGED_DESCRIPTOR_SCOPING_
//     Set this flag if (for any reason) your compile does not work
//     unless NSR::TaggedDescriptor is typedef'ed to TaggedDescriptor.
//   
//----------------------------------------------------------------------

#ifdef UNIX_PLATFORM
  //#define ...
  //#include ...
#endif //UNIX_PLATFORM

#ifdef MAC_PLATFORM
  #define _INCL_MAC_EATTRS_
  //#define ...
  //#include ...
#endif //MAC_PLATFORM

#ifdef DOS_PLATFORM
  //#define ...
  //#include ...
#endif //DOS_PLATFORM

#ifdef WINDOWS_PLATFORM
  #define OLD_STRING
  //#define ...
  //#include ...
#endif //WINDOWS_PLATFORM

#ifdef OS2_PLATFORM
  #define _INCL_OS2_EATTRS_
  //#define ...
  //#include ...
  #ifdef __IBMCPP__
    #define _COMPILER_BUG_PRIVATE_NESTED_CLASSES_
    #define _COMPILER_BUG_TAGGED_DESCRIPTOR_SCOPING_
  #endif // _IBMCPP_
#endif //OS2_PLATFORM

//----------------------------------------------------------------------
// CODE CONFIGURATIONS
//
// You should pick and choose from the following list to define which
// parts of the library you want to use.
//
// _INCL_DESCRS_         Basic UDF Descriptors
//      
// _INCL_SSOBJS_         "Online" Objects
// _INCL_SSDEV_          Single Surface Device for "Online" Objects
//
// _INCL_OS2_EATTRS_     UDF-defined EAs for OS/2
// _INCL_MAC_EATTRS_     UDF-defined EAs for Mac
//
// _INCL_MSOBJS_         Archive Object
// _INCL_MSDEV_          Multi-Surface Device for Archive
// _INCL_TRUSTEES_       HP-defined EAs for Novell Trustee information
// _INCL_NOVELL_EATTRS_  HP-defined EAs for Novell
// _INCL_ICBTABLE_EATTR_ HP-defined EA for Archive Object
//
//----------------------------------------------------------------------

//#define _INCL_TRUSTEES_
//#define _INCL_DESCRS_
//#define _INCL_SSDEV_
//#define _INCL_MSDEV_
//#define _INCL_SSOBJS_
//#define _INCL_MSOBJS_

//----------------------------------------------------------------------
// HP-DEFINED CONFIGURATIONS
//
// The following configurations are used by the supplied test suites.
//
// TRUSTEES:  All Novell Trustee Definitions.
// DESCRTEST: No Devices or SS,MS Objects.
// SSDEVTEST: Includes SS Device.
// MSDEVTEST: Includes SS,MS Devices.
// SSTEST:    Includes SS Device, SS objects, plus EAs
// MSTEST:    Includes MS, SS Devices plus Archive object.
// MSLIB:     Includes MS Device, but no SS Device.
//----------------------------------------------------------------------

#ifdef TRUSTEES
    #define _INCL_TRUSTEES_
#endif

#ifdef DESCRTEST
    #define _INCL_DESCRS_
    #define _INCL_MAC_EATTRS_
    #define _INCL_NOVELL_EATTRS_
    #define _INCL_ICBTABLE_EATTR_
#endif

#ifdef SSDEVTEST
    #define _INCL_SSDEV_
#endif

#ifdef MSDEVTEST
    #define _INCL_MSDEV_
    #define _INCL_SSDEV_
#endif

#ifdef SSTEST
    #define _INCL_DESCRS_
    #define _INCL_SSDEV_
    #define _INCL_SSOBJS_
//    #define _INCL_OS2_EATTRS_ // not ready to test yet
    #define _INCL_MAC_EATTRS_
    #define _INCL_NOVELL_EATTRS_
#endif

#ifdef MSTEST
    #define _INCL_DESCRS_
    #define _INCL_SSDEV_
    #define _INCL_MSDEV_
    #define _INCL_MSOBJS_
    #define _INCL_NOVELL_EATTRS_
    #define _INCL_ICBTABLE_EATTR_
#endif

#ifdef MSLIB
    #define _INCL_DESCRS_
    #define _INCL_MSDEV_
    #define _INCL_MSOBJS_
    #define _INCL_ICBTABLE_EATTR_
#endif

#endif //_NSRCFG_





