historical/toontown-classic.git/panda/include/bamEnums.h
2024-01-16 11:20:27 -06:00

77 lines
2.4 KiB
C++

/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file bamEnums.h
* @author drose
* @date 2009-02-26
*/
#ifndef BAMENUMS_H
#define BAMENUMS_H
#include "pandabase.h"
/**
* This class exists just to provide scoping for the enums shared by BamReader
* and BamWriter.
*/
class EXPCL_PANDA_PUTIL BamEnums {
PUBLISHED:
// This defines an enumerated type used to represent the endianness of
// certain numeric values stored in a Bam file. It really has only two
// possible values, either BE_bigendian or BE_littleendian; but through a
// preprocessor trick we also add BE_native, which is the same numerically
// as whichever value the hardware supports natively.
enum BamEndian {
BE_bigendian = 0,
BE_littleendian = 1,
#ifdef WORDS_BIGENDIAN
BE_native = 0,
#else
BE_native = 1,
#endif
};
/*
* This is the code written along with each object. It is used to control
* object scoping. A BOC_push includes an object definition, and will always
* be eventually paired with a BOC_pop (which does not). A BOC_adjunct
* includes an object definition but does not push the level; it is associated
* with the current level. BOC_remove lists object ID's that have been
* deallocated on the sender end. BOC_file_data may appear at any level and
* indicates the following datagram contains auxiliary file data that may be
* referenced by a later object.
*/
enum BamObjectCode {
BOC_push,
BOC_pop,
BOC_adjunct,
BOC_remove,
BOC_file_data,
};
// This enum is used to control how textures are written to a bam stream.
enum BamTextureMode {
BTM_unchanged,
BTM_fullpath,
BTM_relative,
BTM_basename,
BTM_rawdata
};
};
EXPCL_PANDA_PUTIL std::ostream &operator << (std::ostream &out, BamEnums::BamEndian be);
EXPCL_PANDA_PUTIL std::istream &operator >> (std::istream &in, BamEnums::BamEndian &be);
EXPCL_PANDA_PUTIL std::ostream &operator << (std::ostream &out, BamEnums::BamObjectCode boc);
EXPCL_PANDA_PUTIL std::ostream &operator << (std::ostream &out, BamEnums::BamTextureMode btm);
EXPCL_PANDA_PUTIL std::istream &operator >> (std::istream &in, BamEnums::BamTextureMode &btm);
#endif