Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
__impl Namespace Reference

Classes

class  Exception
 
class  InvalidParameters
 
class  ProgramCompileError
 

Functions

template<typename T >
static T parseEnum (const string &s, const map< string, T > &enumMap)
 
template<typename T >
static T parseEnum (const string &s, const map< string, T > &enumMap, T deflt)
 
static
Technique::Pass::TextureUnit::SourceType 
parseSourceType (const string &s, string::size_type &sep)
 
static
Technique::Pass::TextureUnit::Kind 
parseTexKind (const string &s)
 
static Technique::Pass::Type parsePassType (const std::string &s)
 
static bool parseBool (const std::string &s)
 
static Technique::Pass::Tristate parseTristate (const std::string &s)
 
static Technique::Pass::BlendMode parseBlendMode (const std::string &s)
 
static Technique::Pass::Face parseFace (const std::string &s)
 
static
Technique::Pass::DepthFunction 
parseDepthFunction (const std::string &s)
 
static Technique::Pass::PolyMode parsePolyMode (const std::string &s)
 
static
Technique::Pass::ShaderParam::Semantic 
parseAutoParamSemantic (const std::string &s)
 
static int parseIteration (const std::string &s)
 
static int parseInt (const std::string &s)
 
static int parseInt (const std::string &s, int deflt)
 
static float parseFloat (const std::string &s)
 
static void parseFloat4 (const std::string &s, float value[4])
 

Function Documentation

static Technique::Pass::ShaderParam::Semantic __impl::parseAutoParamSemantic ( const std::string &  s)
static
static Technique::Pass::BlendMode __impl::parseBlendMode ( const std::string &  s)
static

Definition at line 137 of file technique.cpp.

References Technique::Pass::Add, Technique::Pass::AlphaBlend, Technique::Pass::Decal, Technique::Pass::Default, Technique::Pass::MultiAlphaBlend, Technique::Pass::Multiply, parseEnum(), and Technique::Pass::PremultAlphaBlend.

138 {
139  static map<string, Technique::Pass::BlendMode> enumMap;
140  if (enumMap.empty()) {
141  enumMap["default"] = Technique::Pass::Default;
142  enumMap["add"] = Technique::Pass::Add;
143  enumMap["multiply"] = Technique::Pass::Multiply;
144  enumMap["alpha_blend"] = Technique::Pass::AlphaBlend;
145  enumMap["decal"] = Technique::Pass::Decal;
146  enumMap["premult_alpha"]=Technique::Pass::PremultAlphaBlend;
147  enumMap["multi_alpha_blend"]=Technique::Pass::MultiAlphaBlend;
148  }
149  return parseEnum(s, enumMap);
150 }
static bool __impl::parseBool ( const std::string &  s)
static

Definition at line 119 of file technique.cpp.

References XMLSupport::parse_bool().

120 {
121  if ( s.empty() ) throw InvalidParameters( "Missing required attribute" );
122  else
123  return XMLSupport::parse_bool( s );
124 }
static Technique::Pass::DepthFunction __impl::parseDepthFunction ( const std::string &  s)
static

Definition at line 165 of file technique.cpp.

References Technique::Pass::Always, Technique::Pass::Equal, Technique::Pass::GEqual, Technique::Pass::Greater, Technique::Pass::LEqual, Technique::Pass::Less, Technique::Pass::Never, and parseEnum().

166 {
167  static map< string, Technique::Pass::DepthFunction >enumMap;
168  if ( enumMap.empty() ) {
169  enumMap["less"] = Technique::Pass::Less;
170  enumMap["lequal"] = Technique::Pass::LEqual;
171  enumMap["greater"] = Technique::Pass::Greater;
172  enumMap["gequal"] = Technique::Pass::GEqual;
173  enumMap["equal"] = Technique::Pass::Equal;
174  enumMap["always"] = Technique::Pass::Always;
175  enumMap["never"] = Technique::Pass::Never;
176  }
177  return parseEnum(s, enumMap);
178 }
template<typename T >
static T __impl::parseEnum ( const string &  s,
const map< string, T > &  enumMap 
)
static

Definition at line 66 of file technique.cpp.

Referenced by parseAutoParamSemantic(), parseBlendMode(), parseDepthFunction(), parseFace(), parsePassType(), parsePolyMode(), parseSourceType(), parseTexKind(), parseTristate(), and Audio::__impl::parseVSFileType().

67 {
68  typename map< string, T >::const_iterator it = enumMap.find( s );
69  if ( it != enumMap.end() )
70  return it->second;
71  else throw InvalidParameters( "Enumerated value \""+s+"\" not recognized" );
72 }
template<typename T >
static T __impl::parseEnum ( const string &  s,
const map< string, T > &  enumMap,
deflt 
)
static

Definition at line 75 of file technique.cpp.

76 {
77  typename map< string, T >::const_iterator it = enumMap.find( s );
78  if ( it != enumMap.end() )
79  return it->second;
80  else
81  return deflt;
82 }
static Technique::Pass::Face __impl::parseFace ( const std::string &  s)
static

Definition at line 152 of file technique.cpp.

References Technique::Pass::Back, Technique::Pass::DefaultFace, Technique::Pass::Front, Technique::Pass::FrontAndBack, Technique::Pass::None, and parseEnum().

153 {
154  static map< string, Technique::Pass::Face >enumMap;
155  if ( enumMap.empty() ) {
156  enumMap["none"] = Technique::Pass::None;
157  enumMap["back"] = Technique::Pass::Back;
158  enumMap["front"] = Technique::Pass::Front;
159  enumMap["both"] = Technique::Pass::FrontAndBack;
160  enumMap["default"] = Technique::Pass::DefaultFace;
161  }
162  return parseEnum( s, enumMap );
163 }
static float __impl::parseFloat ( const std::string &  s)
static

Definition at line 235 of file technique.cpp.

References XMLSupport::parse_floatf().

236 {
237  if ( s.empty() ) throw InvalidParameters( "Invalid float attribute" );
238  else
239  return XMLSupport::parse_floatf( s );
240 }
static void __impl::parseFloat4 ( const std::string &  s,
float  value[4] 
)
static

Definition at line 242 of file technique.cpp.

References i, parseFloat(), and VSFileSystem::vs_dprintf().

243 {
244  string::size_type ini = 0, end;
245  int i = 0;
246  while (i < 4 && ini != string::npos) {
247  value[i++] = parseFloat( s.substr( ini, end = s.find_first_of( ',', ini ) ) );
248  ini = ( (end == string::npos) ? end : (end+1) );
249  }
250  if (i >= 4 && ini != string::npos)
251  VSFileSystem::vs_dprintf(1, "WARNING: invalid float4: %s\n", s.c_str());
252  while (i < 4)
253  value[i++] = 0;
254 }
static int __impl::parseInt ( const std::string &  s)
static

Definition at line 220 of file technique.cpp.

References XMLSupport::parse_int().

221 {
222  if ( s.empty() ) throw InvalidParameters( "Invalid integer attribute" );
223  else
224  return XMLSupport::parse_int( s );
225 }
static int __impl::parseInt ( const std::string &  s,
int  deflt 
)
static

Definition at line 227 of file technique.cpp.

References XMLSupport::parse_int().

228 {
229  if ( s.empty() )
230  return deflt;
231  else
232  return XMLSupport::parse_int( s );
233 }
static int __impl::parseIteration ( const std::string &  s)
static

Definition at line 210 of file technique.cpp.

References XMLSupport::parse_int().

211 {
212  static string once( "once" );
213  if (s == once)
214  return 0;
215  else if ( s.empty() ) throw InvalidParameters( "Invalid iteration attribute" );
216  else
217  return XMLSupport::parse_int( s );
218 }
static Technique::Pass::Type __impl::parsePassType ( const std::string &  s)
static

Definition at line 109 of file technique.cpp.

References Technique::Pass::FixedPass, parseEnum(), and Technique::Pass::ShaderPass.

110 {
111  static map< string, Technique::Pass::Type >enumMap;
112  if ( enumMap.empty() ) {
113  enumMap["fixed"] = Technique::Pass::FixedPass;
114  enumMap["shader"] = Technique::Pass::ShaderPass;
115  }
116  return parseEnum( s, enumMap );
117 }
static Technique::Pass::PolyMode __impl::parsePolyMode ( const std::string &  s)
static

Definition at line 180 of file technique.cpp.

References Technique::Pass::Fill, Technique::Pass::Line, parseEnum(), and Technique::Pass::Point.

181 {
182  static map<string, Technique::Pass::PolyMode> enumMap;
183  if (enumMap.empty()) {
184  enumMap["point"] = Technique::Pass::Point;
185  enumMap["line"] = Technique::Pass::Line;
186  enumMap["fill"] = Technique::Pass::Fill;
187  }
188  return parseEnum(s, enumMap);
189 }
static Technique::Pass::TextureUnit::SourceType __impl::parseSourceType ( const string &  s,
string::size_type &  sep 
)
static

Definition at line 84 of file technique.cpp.

References Technique::Pass::TextureUnit::Decal, Technique::Pass::TextureUnit::Detail, Technique::Pass::TextureUnit::Environment, Technique::Pass::TextureUnit::File, Technique::Pass::TextureUnit::None, and parseEnum().

Referenced by Technique::Pass::addTextureUnit().

85 {
86  static map< string, Technique::Pass::TextureUnit::SourceType >enumMap;
87  if ( enumMap.empty() ) {
88  enumMap["decal"] = Technique::Pass::TextureUnit::Decal;
89  enumMap["file"] = Technique::Pass::TextureUnit::File;
90  enumMap["environment"] = Technique::Pass::TextureUnit::Environment;
91  enumMap["detail"] = Technique::Pass::TextureUnit::Detail;
92  }
93  return parseEnum( s.substr( 0, sep = s.find_first_of( ':' ) ), enumMap, Technique::Pass::TextureUnit::None );
94 }
static Technique::Pass::TextureUnit::Kind __impl::parseTexKind ( const string &  s)
static

Definition at line 96 of file technique.cpp.

References parseEnum(), Technique::Pass::TextureUnit::Tex2D, Technique::Pass::TextureUnit::Tex3D, Technique::Pass::TextureUnit::TexCube, Technique::Pass::TextureUnit::TexDefault, and Technique::Pass::TextureUnit::TexSepCube.

97 {
98  static map< string, Technique::Pass::TextureUnit::Kind >enumMap;
99  if ( enumMap.empty() ) {
100  enumMap["default"] = Technique::Pass::TextureUnit::TexDefault;
101  enumMap["2d"] = Technique::Pass::TextureUnit::Tex2D;
102  enumMap["3d"] = Technique::Pass::TextureUnit::Tex3D;
103  enumMap["cube"] = Technique::Pass::TextureUnit::TexCube;
104  enumMap["separatedCube"] = Technique::Pass::TextureUnit::TexSepCube;
105  }
107 }
static Technique::Pass::Tristate __impl::parseTristate ( const std::string &  s)
static

Definition at line 126 of file technique.cpp.

References Technique::Pass::Auto, Technique::Pass::False, parseEnum(), and Technique::Pass::True.

127 {
128  static map< string, Technique::Pass::Tristate >enumMap;
129  if ( enumMap.empty() ) {
130  enumMap["true"] = Technique::Pass::True;
131  enumMap["false"] = Technique::Pass::False;
132  enumMap["auto"] = Technique::Pass::Auto;
133  }
134  return parseEnum( s, enumMap );
135 }