コード例 #1
0
    def test_define(self):
        name = 'test1'
        primary_type = calligra.PrimaryType(self.namespace, name)
        self.assertEqual(primary_type.define(), name + ';\n')

        name = 'test2'
        primary_type = calligra.PrimaryType(self.namespace,
                                            name,
                                            imported=True)
        with self.assertRaises(RuntimeError):
            primary_type.define()
コード例 #2
0
    def test_register(self):
        namespace = calligra.namespace()
        name = 'test'
        primary_type1 = calligra.PrimaryType(namespace, name, register=False)

        self.assertEqual(namespace.register(name, primary_type1),
                         primary_type1)
        self.assertEqual(namespace.get(name), primary_type1)

        primary_type2 = calligra.PrimaryType(namespace, name, register=False)

        with self.assertRaises(RuntimeError):
            namespace.register(name, primary_type2)
コード例 #3
0
 def test_register(self):
     name = 'test'
     primary_type = calligra.PrimaryType(self.namespace,
                                         name,
                                         register=False)
     self.assertEqual(primary_type.register(self.namespace), primary_type)
     self.assertEqual(self.namespace.get(name), primary_type)
コード例 #4
0
 def test_name(self):
     name = 'test'
     primary_type = calligra.PrimaryType(self.namespace, name)
     self.assertEqual(primary_type.name(), name)
コード例 #5
0

@calligra.add_method(calligra.stdlib.in6_addr, 'from_json')
class in6_addr_from_json(struct_from_json):
	def body(self, prefix = ''):
		code = ''
		code += prefix + 'const char *str;\n'
		code += prefix + 'if(!json_is_string(json)) {\n'
		code += prefix + '\treturn false;\n'
		code += prefix + '}\n'
		code += prefix + 'str = json_string_value(json);\n'
		code += prefix + 'if(inet_pton(AF_INET6, str, {}) == 1) {{\n'.format(
		    self.properties()[0].name()
		)
		code += prefix + '\treturn true;\n'
		code += prefix + '}\n'
		code += prefix + 'return false;\n'
		return code


calligra.PrimaryType(
    calligra.stdlib.namespace, 'json_t', imported = 'jansson.h'
)
calligra.IntegerType(
    calligra.stdlib.namespace,
    'json_int_t',
    imported = True,
    min_value = 'LLONG_MIN',
    max_value = 'LLONG_MAX',
)
コード例 #6
0
            size = self._char.strlen.call(str_arg)

        c_arg = calligra.declaration(namespace, self._namespace.get('uint8_t'),
                                     '0')
        n_arg = calligra.declaration(namespace, self._namespace.get('size_t'),
                                     size)
        return super().call(str_arg, (c_arg, ), (n_arg, ))


########################################

types = []
namespace = calligra.namespace()

types.append(
    calligra.PrimaryType(namespace, 'void', imported=True).type().name())
types.append(
    calligra.IntegerType(namespace, 'size_t', min_value='0',
                         imported=True).type().name())
types.append(boolean(namespace, '_Bool', imported=True).type().name())
types.append(boolean(namespace, 'bool', imported='stdbool.h').type().name())
types.append(
    calligra.IntegerType(namespace,
                         'uint8_t',
                         min_value='0',
                         max_value='UINT8_MAX',
                         imported='stdint.h').type().name())
types.append(
    calligra.IntegerType(namespace,
                         'int8_t',
                         min_value='INT8_MIN',