+
+
+void operator<<(LexicalConverter &conv, XineStream::State state)
+{
+ switch(state)
+ {
+ case XineStream::STOPPED: conv.result("STOPPED"); return;
+ case XineStream::PAUSED: conv.result("PAUSED"); return;
+ case XineStream::PLAYING: conv.result("PLAYING"); return;
+ default: conv.result(format("State(%d)", static_cast<int>(state))); return;
+ }
+}
+
+void operator>>(const LexicalConverter &conv, XineStream::State &state)
+{
+ const string &str = conv.get();
+ if(str=="STOPPED")
+ state = XineStream::STOPPED;
+ else if(str=="PAUSED")
+ state = XineStream::PAUSED;
+ else if(str=="PLAYING")
+ state = XineStream::PLAYING;
+ else
+ throw lexical_error(format("Conversion of '%s' to XineStream::State", str));
+}