Panda3D
geomEnums.cxx
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file geomEnums.cxx
10  * @author drose
11  * @date 2005-04-14
12  */
13 
14 #include "geomEnums.h"
15 #include "string_utils.h"
16 #include "config_gobj.h"
17 
18 using std::istream;
19 using std::ostream;
20 using std::string;
21 
22 
23 /**
24  *
25  */
26 ostream &
27 operator << (ostream &out, GeomEnums::UsageHint usage_hint) {
28  switch (usage_hint) {
29  case GeomEnums::UH_client:
30  return out << "client";
31 
32  case GeomEnums::UH_stream:
33  return out << "stream";
34 
35  case GeomEnums::UH_dynamic:
36  return out << "dynamic";
37 
38  case GeomEnums::UH_static:
39  return out << "static";
40 
41  case GeomEnums::UH_unspecified:
42  return out << "unspecified";
43  }
44 
45  return out << "**invalid usage hint (" << (int)usage_hint << ")**";
46 }
47 
48 /**
49  *
50  */
51 istream &
52 operator >> (istream &in, GeomEnums::UsageHint &usage_hint) {
53  string word;
54  in >> word;
55 
56  if (cmp_nocase(word, "client") == 0) {
57  usage_hint = GeomEnums::UH_client;
58  } else if (cmp_nocase(word, "stream") == 0) {
59  usage_hint = GeomEnums::UH_stream;
60  } else if (cmp_nocase(word, "dynamic") == 0) {
61  usage_hint = GeomEnums::UH_dynamic;
62  } else if (cmp_nocase(word, "static") == 0) {
63  usage_hint = GeomEnums::UH_static;
64  } else if (cmp_nocase(word, "unspecified") == 0) {
65  usage_hint = GeomEnums::UH_unspecified;
66 
67  } else {
68  gobj_cat->error() << "Invalid usage hint value: " << word << "\n";
69  usage_hint = GeomEnums::UH_unspecified;
70  }
71 
72  return in;
73 }
74 
75 /**
76  *
77  */
78 ostream &
79 operator << (ostream &out, GeomEnums::NumericType numeric_type) {
80  switch (numeric_type) {
81  case GeomEnums::NT_uint8:
82  return out << "uint8";
83 
84  case GeomEnums::NT_uint16:
85  return out << "uint16";
86 
87  case GeomEnums::NT_uint32:
88  return out << "uint32";
89 
90  case GeomEnums::NT_packed_dcba:
91  return out << "packed_dcba";
92 
93  case GeomEnums::NT_packed_dabc:
94  return out << "packed_dabc";
95 
96  case GeomEnums::NT_float32:
97  return out << "float32";
98 
99  case GeomEnums::NT_float64:
100  return out << "float64";
101 
102  case GeomEnums::NT_stdfloat:
103  return out << "stdfloat";
104 
105  case GeomEnums::NT_int8:
106  return out << "int8";
107 
108  case GeomEnums::NT_int16:
109  return out << "int16";
110 
111  case GeomEnums::NT_int32:
112  return out << "int32";
113 
114  case GeomEnums::NT_packed_ufloat:
115  return out << "packed_ufloat";
116  }
117 
118  return out << "**invalid numeric type (" << (int)numeric_type << ")**";
119 }
120 
121 /**
122  *
123  */
124 ostream &
125 operator << (ostream &out, GeomEnums::Contents contents) {
126  switch (contents) {
127  case GeomEnums::C_other:
128  return out << "other";
129 
130  case GeomEnums::C_point:
131  return out << "point";
132 
133  case GeomEnums::C_clip_point:
134  return out << "clip_point";
135 
136  case GeomEnums::C_vector:
137  return out << "vector";
138 
139  case GeomEnums::C_texcoord:
140  return out << "texcoord";
141 
142  case GeomEnums::C_color:
143  return out << "color";
144 
145  case GeomEnums::C_index:
146  return out << "index";
147 
148  case GeomEnums::C_morph_delta:
149  return out << "morph_delta";
150 
151  case GeomEnums::C_matrix:
152  return out << "matrix";
153 
154  case GeomEnums::C_normal:
155  return out << "normal";
156  }
157 
158  return out << "**invalid contents (" << (int)contents << ")**";
159 }
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.