]> git.cworth.org Git - apitrace/blobdiff - trace.py
Cleanup unicode support.
[apitrace] / trace.py
index c759607ebe12678b0e9012c4363d2608d0a5bb81..a9395339c2981b054a612fbbacdcd43c2adcf4ec 100644 (file)
--- a/trace.py
+++ b/trace.py
@@ -148,10 +148,20 @@ class ValueSerializer(stdapi.Visitor):
         print '    trace::localWriter.write%s(%s);' % (literal.kind, instance)
 
     def visitString(self, string, instance):
+        if string.kind == 'String':
+            cast = 'const char *'
+        elif string.kind == 'WString':
+            cast = 'const wchar_t *'
+        else:
+            assert False
+        if cast != string.expr:
+            # reinterpret_cast is necessary for GLubyte * <=> char *
+            instance = 'reinterpret_cast<%s>(%s)' % (cast, instance)
         if string.length is not None:
-            print '    trace::localWriter.writeString((const char *)%s, %s);' % (instance, string.length)
+            length = ', %s' % string.length
         else:
-            print '    trace::localWriter.writeString((const char *)%s);' % instance
+            length = ''
+        print '    trace::localWriter.write%s(%s%s);' % (string.kind, instance, length)
 
     def visitConst(self, const, instance):
         self.visit(const.type, instance)