X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fpredicate.cpp;fp=source%2Fpredicate.cpp;h=a1953733c676d3ccac0f449db4d9ce3c749dba4f;hp=0000000000000000000000000000000000000000;hb=fd31e462d8acac7af890dad7dff8de76c1caa1a3;hpb=c34da2dbd034cfe591e2020ef0b50265d0571fc5 diff --git a/source/predicate.cpp b/source/predicate.cpp new file mode 100644 index 00000000..a1953733 --- /dev/null +++ b/source/predicate.cpp @@ -0,0 +1,49 @@ +#include +#include "predicate.h" + +using namespace std; + +namespace Msp { +namespace GL { + +void operator>>(const LexicalConverter &conv, Predicate &pred) +{ + const string &str = conv.get(); + if(str=="NEVER") + pred = NEVER; + else if(str=="ALWAYS") + pred = ALWAYS; + else if(str=="LESS") + pred = LESS; + else if(str=="LEQUAL") + pred = LEQUAL; + else if(str=="EQUAL") + pred = EQUAL; + else if(str=="GREATER") + pred = GREATER; + else if(str=="GEQUAL") + pred = GEQUAL; + else if(str=="NOTEQUAL") + pred = NOTEQUAL; + else + throw lexical_error(format("conversion of '%s' to Predicate", str)); +} + +void operator<<(LexicalConverter &conv, Predicate pred) +{ + switch(pred) + { + case NEVER: conv.result("NEVER"); break; + case ALWAYS: conv.result("ALWAYS"); break; + case LESS: conv.result("LESS"); break; + case LEQUAL: conv.result("LEQUAL"); break; + case EQUAL: conv.result("EQUAL"); break; + case GREATER: conv.result("GREATER"); break; + case GEQUAL: conv.result("GEQUAL"); break; + case NOTEQUAL: conv.result("NOTEQUAL"); break; + default: conv.result(format("Predicate(%#x)", static_cast(pred))); break; + } +} + +} // namespace GL +} // namespace Msp