コード例 #1
0
def genParenthesizedCases():
    for reverse in [True, False]:
        if reverse:
            name = "paren_expr_before_literal"
            desc = "Parenthesized expression before literal"
        else:
            name = "literal_before_paren_expr"
            desc = "Literal before parenthesized expression"
        reversegroup = CaseGroup(name, desc, [])

        for input_in_parens in [True, False]:
            if input_in_parens:
                name = "input_in_parens"
                desc = "Input variable in parenthesized expression"
            else:
                name = "input_outside_parens"
                desc = "Input variable outside parenthesized expression"
            casegroup = CaseGroup(name, desc, [])

            for in_type, out_type in genConversionPairs():
                name = in_type + "_to_" + out_type
                casegroup.children.append(
                    ParenthesizedCase(name, in_type, out_type, reverse,
                                      input_in_parens))
            reversegroup.children.append(casegroup)
        yield reversegroup
コード例 #2
0
def genArithmeticCases(reverse=False):
    op_names = [("add", "Addition", "+"), ("sub", "Subtraction", "-"),
                ("mul", "Multiplication", "*"), ("div", "Division", "/")]

    for name, desc, op in op_names:
        casegroup = CaseGroup(name, desc, [])
        for in_type, out_type in genConversionPairs():
            if op == "-" and isUintTypeName(out_type):
                continue  # Can't handle at the moment
            name = in_type + "_to_" + out_type
            casegroup.children.append(
                ArithmeticCase(name, op, in_type, out_type, reverse))
        yield casegroup
コード例 #3
0
def genComparisonCases(reverse=False):
	op_names = [
		("equal",				"Equal",					"=="),
		("not_equal",			"Not equal",				"!="),
		("less",				"Less than",				"<"),
		("greater",				"Greater than",				">"),
		("less_or_equal",		"Less than or equal",		"<="),
		("greater_or_equal",	"Greater than or equal",	">="),
	]

	for name, desc, op in op_names:
		casegroup	= CaseGroup(name, desc, [])
		type_order	= IN_TYPE_ORDER if name in ["equal", "not_equal"] else ["int", "uint"]

		for in_type, out_type in genConversionPairs(order=type_order, scalar_to_vector=False):
			name = in_type + "_to_" + out_type
			casegroup.children.append(ComparisonsCase(name, op, in_type, out_type, reverse))
		yield casegroup
コード例 #4
0
def genAllCases():
    yield CaseGroup("arithmetic", "Arithmetic operations", [
        CaseGroup("input_before_literal", "Input before literal",
                  genArithmeticCases(reverse=False)),
        CaseGroup("literal_before_input", "Literal before input",
                  genArithmeticCases(reverse=True)),
    ])

    yield CaseGroup("comparisons", "Comparisons", [
        CaseGroup("input_before_literal", "Input before literal",
                  genComparisonCases(reverse=False)),
        CaseGroup("literal_before_input", "Literal before input",
                  genComparisonCases(reverse=True)),
    ])

    yield CaseGroup(
        "array_subscripts",
        "Array subscripts",
        [
            CaseGroup("input_before_subscript", "Input before subscript",
                      genArrayCases(reverse=False)),
            CaseGroup("subscript_before_input", "Subscript before input",
                      genArrayCases(reverse=True)),
            #	CaseGroup("unpack", "Unpack array and repack as value",
            #			  genArrayUnpackCases()),
        ])

    yield CaseGroup("functions", "Function calls", genFunctionsCases())

    yield CaseGroup("struct_fields", "Struct field selectors", [
        CaseGroup("input_before_field", "Input before field",
                  genStructCases(reverse=False)),
        CaseGroup("field_before_input", "Field before input",
                  genStructCases(reverse=True)),
    ])

    yield CaseGroup("parenthesized_expressions", "Parenthesized expressions",
                    genParenthesizedCases())

    yield CaseGroup("invalid", "Invalid conversions", [
        CaseGroup("variables", "Single variables", genInvalidCases()),
        CaseGroup("arrays", "Arrays", genInvalidArrayCases()),
        CaseGroup("structs", "Structs", genInvalidStructCases()),
    ])