예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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)