def stringify_array_dimensions(type): s = "" base_type = type while random_ubo.isarray(base_type): s += "@{}".format(random_ubo.array_elements(base_type)) base_type = random_ubo.array_base_type(base_type) return s
def diminish_array_type(fields, i): field_type, field_name = fields[i] if not random_ubo.isarray(field_type): return False if random_ubo.array_elements(field_type) == 1: smaller_type = random_ubo.array_base_type(field_type) else: smaller_type = random_ubo.array_base_type(field_type) + "[1]" print("{} => {}".format(field_type, smaller_type)) fields[i] = (smaller_type, field_name) return True
def create_getters_and_setters(varying_type, full_name, instances): if not full_name: full_name = varying_type.name elif varying_type.name is not None: full_name += '.' + varying_type.name if random_ubo.isarray(varying_type.type): base_type = array_base_type(varying_type) for i in range(random_ubo.array_elements(varying_type.type)): indexed_name = full_name + '[' + str(i) + ']' create_getters_and_setters(base_type, indexed_name, instances) elif random_ubo.isstructure(varying_type.type): for m in varying_type.members: create_getters_and_setters(m, full_name, instances) else: v = VaryingInstance(varying_type, [], [], full_name) raw_data = random_ubo.random_data(varying_type.type, full_name, 0) data = raw_data.split(" ") if random_ubo.isscalar(varying_type.type): v.checkers.append( random_ubo.scalar_derp(varying_type.type, full_name, data[0])) v.setters.append( scalar_assignment(varying_type.type, full_name, data[0])) elif random_ubo.isvector(varying_type.type): v.checkers.extend( random_ubo.vector_derp(varying_type.type, full_name, data)) v.setters.extend( vector_assignment(varying_type.type, full_name, data)) elif random_ubo.ismatrix(varying_type.type): v.checkers.extend( random_ubo.matrix_derp(varying_type.type, full_name, data)) v.setters.extend( matrix_assignment(varying_type.type, full_name, data)) instances.append(v)