def extract_arg(self, function, arg, arg_type, lvalue, rvalue):
if function.name in self.array_pointer_function_names and arg.name == 'pointer':
- print ' %s = static_cast<%s>(%s.blob());' % (lvalue, arg_type, rvalue)
+ print ' %s = static_cast<%s>(%s.toPointer());' % (lvalue, arg_type, rvalue)
return
if function.name in self.draw_elements_function_names and arg.name == 'indices':
- print ' %s = %s.blob();' % (lvalue, rvalue)
+ print ' %s = %s.toPointer();' % (lvalue, rvalue)
return
if function.name.startswith('glUniform') and function.args[0].name == arg.name == 'location':
}
static void retrace_glXCreateContext(Trace::Call &call) {
- void * orig_context = call.ret->blob();
+ void * orig_context = call.ret->toPointer();
glws::Context *context = ws->createContext(glretrace::visual);
context_map[orig_context] = context;
}
}
glws::Drawable *new_drawable = getDrawable(static_cast<unsigned long>(call.arg(1)));
- glws::Context *new_context = context_map[call.arg(2).blob()];
+ glws::Context *new_context = context_map[call.arg(2).toPointer()];
bool result = ws->makeCurrent(new_drawable, new_context);
using namespace glretrace;
-typedef std::map<void *, glws::Drawable *> DrawableMap;
-typedef std::map<void *, glws::Context *> ContextMap;
+typedef std::map<unsigned long long, glws::Drawable *> DrawableMap;
+typedef std::map<unsigned long long, glws::Context *> ContextMap;
static DrawableMap drawable_map;
static DrawableMap pbuffer_map;
static ContextMap context_map;
static glws::Drawable *
-getDrawable(void * hdc) {
- if (hdc == NULL) {
+getDrawable(unsigned long long hdc) {
+ if (hdc == 0) {
return NULL;
}
}
static void retrace_wglCreateContext(Trace::Call &call) {
- void * orig_context = call.ret->blob();
+ unsigned long long orig_context = call.ret->toUIntPtr();
glws::Context *context = ws->createContext(glretrace::visual);
context_map[orig_context] = context;
}
}
}
- glws::Drawable *new_drawable = getDrawable(call.arg(0).blob());
- glws::Context *new_context = context_map[call.arg(1).blob()];
+ glws::Drawable *new_drawable = getDrawable(call.arg(0).toUIntPtr());
+ glws::Context *new_context = context_map[call.arg(1).toUIntPtr()];
bool result = ws->makeCurrent(new_drawable, new_context);
unsigned iWidth = call.arg(2);
unsigned iHeight = call.arg(3);
- void * orig_pbuffer = call.ret->blob();
+ unsigned long long orig_pbuffer = call.ret->toUIntPtr();
glws::Drawable *drawable = ws->createDrawable(glretrace::visual);
drawable->resize(iWidth, iHeight);
}
static void retrace_wglGetPbufferDCARB(Trace::Call &call) {
- glws::Drawable *pbuffer = pbuffer_map[call.arg(0).blob()];
+ glws::Drawable *pbuffer = pbuffer_map[call.arg(0).toUIntPtr()];
- void * orig_hdc = call.ret->blob();
+ unsigned long long orig_hdc = call.ret->toUIntPtr();
drawable_map[orig_hdc] = pbuffer;
}
print ' %s = %s;' % (lvalue, new_lvalue)
def visit_blob(self, blob, lvalue, rvalue):
- print ' %s = static_cast<%s>((%s).blob());' % (lvalue, blob, rvalue)
+ print ' %s = static_cast<%s>((%s).toPointer());' % (lvalue, blob, rvalue)
def visit_string(self, string, lvalue, rvalue):
- print ' %s = (%s)((%s).string());' % (lvalue, string.expr, rvalue)
+ print ' %s = (%s)((%s).toString());' % (lvalue, string.expr, rvalue)
class OpaqueValueExtractor(ValueExtractor):
in the context of handles.'''
def visit_opaque(self, opaque, lvalue, rvalue):
- print ' %s = static_cast<%s>((%s).blob());' % (lvalue, opaque, rvalue)
+ print ' %s = static_cast<%s>((%s).toPointer());' % (lvalue, opaque, rvalue)
class ValueWrapper(stdapi.Visitor):
Enum ::operator double (void) const { return static_cast<unsigned long long>(*sig->second); }
-// blob cast
-void * Value ::blob(void) const { assert(0); return NULL; }
-void * Null ::blob(void) const { return NULL; }
-void * Blob ::blob(void) const { return buf; }
-void * Pointer::blob(void) const { return (void *)value; }
+// pointer cast
+void * Value ::toPointer(void) const { assert(0); return NULL; }
+void * Null ::toPointer(void) const { return NULL; }
+void * Blob ::toPointer(void) const { return buf; }
+void * Pointer::toPointer(void) const { return (void *)value; }
+
+
+// pointer cast
+unsigned long long Value ::toUIntPtr(void) const { assert(0); return 0; }
+unsigned long long Null ::toUIntPtr(void) const { return 0; }
+unsigned long long Pointer::toUIntPtr(void) const { return value; }
+
+
+// string cast
+const char * Value ::toString(void) const { assert(0); return NULL; }
+const char * Null ::toString(void) const { return NULL; }
+const char * String::toString(void) const { return value.c_str(); }
// virtual Value::visit()
return null;
}
-const char * Value::string(void) const {
- const String *string = dynamic_cast<const String *>(unwrap(this));
- if (string)
- return string->value.c_str();
- const Null *null = dynamic_cast<const Null *>(unwrap(this));
- if (null)
- return NULL;
- assert(0);
- return NULL;
-}
-
std::ostream & operator <<(std::ostream &os, Call &call) {
Dumper d(os);
os << call.no << " ";
virtual operator unsigned long long (void) const;
virtual operator double (void) const;
- virtual void *blob(void) const;
- const char *string(void) const;
+ virtual void *toPointer(void) const;
+ virtual unsigned long long toUIntPtr(void) const;
+ virtual const char *toString(void) const;
inline operator signed char (void) const {
return static_cast<signed long long>(*this);
operator signed long long (void) const;
operator unsigned long long (void) const;
operator double (void) const;
- void *blob(void) const;
+ void *toPointer(void) const;
+ unsigned long long toUIntPtr(void) const;
+ const char *toString(void) const;
void visit(Visitor &visitor);
};
String(std::string _value) : value(_value) {}
operator bool (void) const;
+ const char *toString(void) const;
void visit(Visitor &visitor);
std::string value;
~Blob();
operator bool (void) const;
- void *blob(void) const;
+ void *toPointer(void) const;
void visit(Visitor &visitor);
size_t size;
Pointer(unsigned long long value) : UInt(value) {}
operator bool (void) const;
- void *blob(void) const;
+ void *toPointer(void) const;
+ unsigned long long toUIntPtr(void) const;
void visit(Visitor &visitor);
};