コード例 #1
0
def test_method_specialization():
    config = Config()
    config.register_method_specialization("MyClass", "myMethod", "my_method_b", {"T": "bool"})
    specializer = MethodSpecializer(config)

    template = TemplateMethod("myMethod", "T", "MyClass")
    template.nodes.append(Param("a", "T"))
    template.template_types.append("T")

    methods = specializer.specialize(template)
    assert_equal(len(methods), 1)
    method = methods[0]
    assert_equal(method.name, "my_method_b")
    assert_equal(method.result_type, "bool")
    assert_equal(len(method.nodes), 1)
    assert_equal(method.nodes[0].tipe, "bool")
コード例 #2
0
def test_method_specialization():
    config = Config()
    config.register_method_specialization("MyClass", "myMethod", "my_method_b",
                                          {"T": "bool"})
    specializer = MethodSpecializer(config)

    template = TemplateMethod("myMethod", "T", "MyClass")
    template.nodes.append(Param("a", "T"))
    template.template_types.append("T")

    methods = specializer.specialize(template)
    assert_equal(len(methods), 1)
    method = methods[0]
    assert_equal(method.name, "my_method_b")
    assert_equal(method.result_type, "bool")
    assert_equal(len(method.nodes), 1)
    assert_equal(method.nodes[0].tipe, "bool")
コード例 #3
0
def test_template_method():
    config = Config()
    specs = {
        "A::addOne": [
            ("add_one_i", {"T": "int"}),
            ("add_one_d", {"T": "double"})
        ]
    }
    config.register_method_specialization("A", "addOne", "add_one_i",
                                          {"T": "int"})
    config.register_method_specialization("A", "addOne", "add_one_d",
                                          {"T": "double"})
    with cython_extension_from("templatemethod.hpp", config=config):
        from templatemethod import A
        a = A()
        assert_equal(a.add_one_i(1), 2)
        assert_is_instance(a.add_one_i(1), int)
        assert_equal(a.add_one_d(2.0), 3.0)
        assert_is_instance(a.add_one_d(2.0), float)
コード例 #4
0
def test_template_method():
    config = Config()
    specs = {
        "A::addOne": [("add_one_i", {
            "T": "int"
        }), ("add_one_d", {
            "T": "double"
        })]
    }
    config.register_method_specialization("A", "addOne", "add_one_i",
                                          {"T": "int"})
    config.register_method_specialization("A", "addOne", "add_one_d",
                                          {"T": "double"})
    with cython_extension_from("templatemethod.hpp", config=config):
        from templatemethod import A
        a = A()
        assert_equal(a.add_one_i(1), 2)
        assert_is_instance(a.add_one_i(1), int)
        assert_equal(a.add_one_d(2.0), 3.0)
        assert_is_instance(a.add_one_d(2.0), float)