class ValueExtractor(stdapi.Visitor):
def visit_literal(self, literal, lvalue, rvalue):
class ValueExtractor(stdapi.Visitor):
def visit_literal(self, literal, lvalue, rvalue):
- if literal.format == 'Bool':
- print ' %s = static_cast<bool>(%s);' % (lvalue, rvalue)
- else:
- print ' %s = %s;' % (lvalue, rvalue)
+ #if literal.format in ('Bool', 'UInt'):
+ print ' %s = (%s).to%s();' % (lvalue, rvalue, literal.format)
def visit_const(self, const, lvalue, rvalue):
self.visit(const.type, lvalue, rvalue)
def visit_const(self, const, lvalue, rvalue):
self.visit(const.type, lvalue, rvalue)
self.visit(alias.type, lvalue, rvalue)
def visit_enum(self, enum, lvalue, rvalue):
self.visit(alias.type, lvalue, rvalue)
def visit_enum(self, enum, lvalue, rvalue):
def visit_bitmask(self, bitmask, lvalue, rvalue):
self.visit(bitmask.type, lvalue, rvalue)
def visit_bitmask(self, bitmask, lvalue, rvalue):
self.visit(bitmask.type, lvalue, rvalue)
def visit_handle(self, handle, lvalue, rvalue):
OpaqueValueExtractor().visit(handle.type, lvalue, rvalue);
new_lvalue = handle_entry(handle, lvalue)
def visit_handle(self, handle, lvalue, rvalue):
OpaqueValueExtractor().visit(handle.type, lvalue, rvalue);
new_lvalue = handle_entry(handle, lvalue)
print ' std::cout << "%s " << size_t(%s) << " <- " << size_t(%s) << "\\n";' % (handle.name, lvalue, new_lvalue)
print ' std::cout << "%s " << size_t(%s) << " <- " << size_t(%s) << "\\n";' % (handle.name, lvalue, new_lvalue)
print ' %s = %s;' % (lvalue, new_lvalue)
def visit_blob(self, blob, lvalue, rvalue):
print ' %s = %s;' % (lvalue, new_lvalue)
def visit_blob(self, blob, lvalue, rvalue):
rvalue = "__orig_result"
entry = handle_entry(handle, rvalue)
print " %s = %s;" % (entry, lvalue)
rvalue = "__orig_result"
entry = handle_entry(handle, rvalue)
print " %s = %s;" % (entry, lvalue)
entry = handle_entry(handle, rvalue)
print ' for ({handle.type} {i} = 0; {i} < {handle.range}; ++{i}) {{'.format(**locals())
print ' {entry} = {lvalue};'.format(**locals())
entry = handle_entry(handle, rvalue)
print ' for ({handle.type} {i} = 0; {i} < {handle.range}; ++{i}) {{'.format(**locals())
print ' {entry} = {lvalue};'.format(**locals())
print ' }'
def visit_blob(self, blob, lvalue, rvalue):
print ' }'
def visit_blob(self, blob, lvalue, rvalue):
def extract_arg(self, function, arg, arg_type, lvalue, rvalue):
ValueExtractor().visit(arg_type, lvalue, rvalue)
def extract_arg(self, function, arg, arg_type, lvalue, rvalue):
ValueExtractor().visit(arg_type, lvalue, rvalue)
+
+ def extract_opaque_arg(self, function, arg, arg_type, lvalue, rvalue):
+ OpaqueValueExtractor().visit(arg_type, lvalue, rvalue)
def call_function(self, function):
arg_names = ", ".join([arg.name for arg in function.args])
if function.type is not stdapi.Void:
print ' %s __result;' % (function.type)
print ' __result = %s(%s);' % (function.name, arg_names)
def call_function(self, function):
arg_names = ", ".join([arg.name for arg in function.args])
if function.type is not stdapi.Void:
print ' %s __result;' % (function.type)
print ' __result = %s(%s);' % (function.name, arg_names)
functions = filter(self.filter_function, functions)
for function in functions:
functions = filter(self.filter_function, functions)
for function in functions:
print
func_dict = dict([(function.name, function) for function in functions])
def handle_case(function_name):
function = func_dict[function_name]
print
func_dict = dict([(function.name, function) for function in functions])
def handle_case(function_name):
function = func_dict[function_name]