Panda3D

geomEnums.cxx

00001 // Filename: geomEnums.cxx
00002 // Created by:  drose (14Apr05)
00003 //
00004 ////////////////////////////////////////////////////////////////////
00005 //
00006 // PANDA 3D SOFTWARE
00007 // Copyright (c) Carnegie Mellon University.  All rights reserved.
00008 //
00009 // All use of this software is subject to the terms of the revised BSD
00010 // license.  You should have received a copy of this license along
00011 // with this source code in a file named "LICENSE."
00012 //
00013 ////////////////////////////////////////////////////////////////////
00014 
00015 #include "geomEnums.h"
00016 #include "string_utils.h"
00017 #include "config_gobj.h"
00018 
00019 
00020 ////////////////////////////////////////////////////////////////////
00021 //     Function: GeomEnums::UsageHint output operator
00022 //  Description: 
00023 ////////////////////////////////////////////////////////////////////
00024 ostream &
00025 operator << (ostream &out, GeomEnums::UsageHint usage_hint) {
00026   switch (usage_hint) {
00027   case GeomEnums::UH_client:
00028     return out << "client";
00029 
00030   case GeomEnums::UH_stream:
00031     return out << "stream";
00032 
00033   case GeomEnums::UH_dynamic:
00034     return out << "dynamic";
00035 
00036   case GeomEnums::UH_static:
00037     return out << "static";
00038 
00039   case GeomEnums::UH_unspecified:
00040     return out << "unspecified";
00041   }
00042 
00043   return out << "**invalid usage hint (" << (int)usage_hint << ")**";
00044 }
00045 
00046 ////////////////////////////////////////////////////////////////////
00047 //     Function: GeomEnums::UsageHint input operator
00048 //  Description: 
00049 ////////////////////////////////////////////////////////////////////
00050 istream &
00051 operator >> (istream &in, GeomEnums::UsageHint &usage_hint) {
00052   string word;
00053   in >> word;
00054 
00055   if (cmp_nocase(word, "client") == 0) {
00056     usage_hint = GeomEnums::UH_client;
00057   } else if (cmp_nocase(word, "stream") == 0) {
00058     usage_hint = GeomEnums::UH_stream;
00059   } else if (cmp_nocase(word, "dynamic") == 0) {
00060     usage_hint = GeomEnums::UH_dynamic;
00061   } else if (cmp_nocase(word, "static") == 0) {
00062     usage_hint = GeomEnums::UH_static;
00063   } else if (cmp_nocase(word, "unspecified") == 0) {
00064     usage_hint = GeomEnums::UH_unspecified;
00065 
00066   } else {
00067     gobj_cat->error() << "Invalid usage hint value: " << word << "\n";
00068     usage_hint = GeomEnums::UH_unspecified;
00069   }
00070 
00071   return in;
00072 }
00073 
00074 ////////////////////////////////////////////////////////////////////
00075 //     Function: GeomEnums::NumericType output operator
00076 //  Description: 
00077 ////////////////////////////////////////////////////////////////////
00078 ostream &
00079 operator << (ostream &out, GeomEnums::NumericType numeric_type) {
00080   switch (numeric_type) {
00081   case GeomEnums::NT_uint8:
00082     return out << "uint8";
00083     
00084   case GeomEnums::NT_uint16:
00085     return out << "uint16";
00086     
00087   case GeomEnums::NT_uint32:
00088     return out << "uint32";
00089     
00090   case GeomEnums::NT_packed_dcba:
00091     return out << "packed_dcba";
00092     
00093   case GeomEnums::NT_packed_dabc:
00094     return out << "packed_dabc";
00095     
00096   case GeomEnums::NT_float32:
00097     return out << "float32";
00098     
00099   case GeomEnums::NT_float64:
00100     return out << "float64";
00101     
00102   case GeomEnums::NT_stdfloat:
00103     return out << "stdfloat";
00104   }
00105 
00106   return out << "**invalid numeric type (" << (int)numeric_type << ")**";
00107 }
00108 
00109 ////////////////////////////////////////////////////////////////////
00110 //     Function: GeomEnums::Contents output operator
00111 //  Description: 
00112 ////////////////////////////////////////////////////////////////////
00113 ostream &
00114 operator << (ostream &out, GeomEnums::Contents contents) {
00115   switch (contents) {
00116   case GeomEnums::C_other:
00117     return out << "other";
00118 
00119   case GeomEnums::C_point:
00120     return out << "point";
00121 
00122   case GeomEnums::C_clip_point:
00123     return out << "clip_point";
00124 
00125   case GeomEnums::C_vector:
00126     return out << "vector";
00127 
00128   case GeomEnums::C_texcoord:
00129     return out << "texcoord";
00130 
00131   case GeomEnums::C_color:
00132     return out << "color";
00133 
00134   case GeomEnums::C_index:
00135     return out << "index";
00136 
00137   case GeomEnums::C_morph_delta:
00138     return out << "morph_delta";
00139   }
00140 
00141   return out << "**invalid contents (" << (int)contents << ")**";
00142 }
 All Classes Functions Variables Enumerations