Panda3D
|
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 }