Panda3D
geomEnums.cxx
1 // Filename: geomEnums.cxx
2 // Created by: drose (14Apr05)
3 //
4 ////////////////////////////////////////////////////////////////////
5 //
6 // PANDA 3D SOFTWARE
7 // Copyright (c) Carnegie Mellon University. All rights reserved.
8 //
9 // All use of this software is subject to the terms of the revised BSD
10 // license. You should have received a copy of this license along
11 // with this source code in a file named "LICENSE."
12 //
13 ////////////////////////////////////////////////////////////////////
14 
15 #include "geomEnums.h"
16 #include "string_utils.h"
17 #include "config_gobj.h"
18 
19 
20 ////////////////////////////////////////////////////////////////////
21 // Function: GeomEnums::UsageHint output operator
22 // Description:
23 ////////////////////////////////////////////////////////////////////
24 ostream &
25 operator << (ostream &out, GeomEnums::UsageHint usage_hint) {
26  switch (usage_hint) {
27  case GeomEnums::UH_client:
28  return out << "client";
29 
30  case GeomEnums::UH_stream:
31  return out << "stream";
32 
33  case GeomEnums::UH_dynamic:
34  return out << "dynamic";
35 
36  case GeomEnums::UH_static:
37  return out << "static";
38 
39  case GeomEnums::UH_unspecified:
40  return out << "unspecified";
41  }
42 
43  return out << "**invalid usage hint (" << (int)usage_hint << ")**";
44 }
45 
46 ////////////////////////////////////////////////////////////////////
47 // Function: GeomEnums::UsageHint input operator
48 // Description:
49 ////////////////////////////////////////////////////////////////////
50 istream &
51 operator >> (istream &in, GeomEnums::UsageHint &usage_hint) {
52  string word;
53  in >> word;
54 
55  if (cmp_nocase(word, "client") == 0) {
56  usage_hint = GeomEnums::UH_client;
57  } else if (cmp_nocase(word, "stream") == 0) {
58  usage_hint = GeomEnums::UH_stream;
59  } else if (cmp_nocase(word, "dynamic") == 0) {
60  usage_hint = GeomEnums::UH_dynamic;
61  } else if (cmp_nocase(word, "static") == 0) {
62  usage_hint = GeomEnums::UH_static;
63  } else if (cmp_nocase(word, "unspecified") == 0) {
64  usage_hint = GeomEnums::UH_unspecified;
65 
66  } else {
67  gobj_cat->error() << "Invalid usage hint value: " << word << "\n";
68  usage_hint = GeomEnums::UH_unspecified;
69  }
70 
71  return in;
72 }
73 
74 ////////////////////////////////////////////////////////////////////
75 // Function: GeomEnums::NumericType output operator
76 // Description:
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 
106  return out << "**invalid numeric type (" << (int)numeric_type << ")**";
107 }
108 
109 ////////////////////////////////////////////////////////////////////
110 // Function: GeomEnums::Contents output operator
111 // Description:
112 ////////////////////////////////////////////////////////////////////
113 ostream &
114 operator << (ostream &out, GeomEnums::Contents contents) {
115  switch (contents) {
116  case GeomEnums::C_other:
117  return out << "other";
118 
119  case GeomEnums::C_point:
120  return out << "point";
121 
122  case GeomEnums::C_clip_point:
123  return out << "clip_point";
124 
125  case GeomEnums::C_vector:
126  return out << "vector";
127 
128  case GeomEnums::C_texcoord:
129  return out << "texcoord";
130 
131  case GeomEnums::C_color:
132  return out << "color";
133 
134  case GeomEnums::C_index:
135  return out << "index";
136 
137  case GeomEnums::C_morph_delta:
138  return out << "morph_delta";
139 
140  case GeomEnums::C_matrix:
141  return out << "matrix";
142 
143  case GeomEnums::C_normal:
144  return out << "normal";
145  }
146 
147  return out << "**invalid contents (" << (int)contents << ")**";
148 }