def test(self):
        """
        Search for two classes which can not be copied.

        See bug #13

        Covers two cases for the moment
        1) non copyable class
        2) non copyable const (fundamental type)
        3) non copyable const (class type)
        4) non copyable const (array type)

        """

        MainFoo1 = self.global_ns.class_('MainFoo1')
        self.assertTrue(declarations.is_noncopyable(MainFoo1))

        MainFoo2 = self.global_ns.class_('MainFoo2')
        self.assertTrue(declarations.is_noncopyable(MainFoo2))

        MainFoo3 = self.global_ns.class_('MainFoo3')
        self.assertTrue(declarations.is_noncopyable(MainFoo3))

        MainFoo4 = self.global_ns.class_('MainFoo4')
        self.assertTrue(declarations.is_noncopyable(MainFoo4))
    def test(self):

        """
        Search for two classes which can not be copied.

        See bug #13

        Covers two cases for the moment
        1) non copyable class
        2) non copyable const (fundamental type)
        3) non copyable const (class type)
        4) non copyable const (array type)

        """

        MainFoo1 = self.global_ns.class_('MainFoo1')
        self.assertTrue(declarations.is_noncopyable(MainFoo1))

        MainFoo2 = self.global_ns.class_('MainFoo2')
        self.assertTrue(declarations.is_noncopyable(MainFoo2))

        MainFoo3 = self.global_ns.class_('MainFoo3')
        self.assertTrue(declarations.is_noncopyable(MainFoo3))

        MainFoo4 = self.global_ns.class_('MainFoo4')
        self.assertTrue(declarations.is_noncopyable(MainFoo4))
    def test(self):
        for x in self.global_ns.typedefs('SettingsMultiMap'):
            self.failUnless(not declarations.is_noncopyable(x))

        for x in self.global_ns.typedefs('SettingsIterator'):
            self.failUnless(not declarations.is_noncopyable(x))

        for x in self.global_ns.typedefs('SectionIterator'):
            self.failUnless(not declarations.is_noncopyable(x))
    def test(self):
        for x in self.global_ns.typedefs('SettingsMultiMap'):
            self.assertTrue(not declarations.is_noncopyable(x))

        for x in self.global_ns.typedefs('SettingsIterator'):
            self.assertTrue(not declarations.is_noncopyable(x))

        for x in self.global_ns.typedefs('SectionIterator'):
            self.assertTrue(not declarations.is_noncopyable(x))
    def test(self):

        """
        Search for two classes which can not be copied.

        See bug #13

        Covers two cases for the moment
        1) non copyable class
        2) non copyable class due to a non copyable const

        """

        MainFoo1 = self.global_ns.class_('MainFoo1')
        self.assertTrue(declarations.is_noncopyable(MainFoo1))

        MainFoo2 = self.global_ns.class_('MainFoo2')
        self.assertTrue(declarations.is_noncopyable(MainFoo2))
    def test(self):

        """
        Search for classes which can not be copied.

        See bug #13

        1) non copyable class
        2) non copyable const variable (fundamental type)
        3) non copyable const variable (class type)
        4) non copyable const variable (array type)
        5) non copyable const variable (class type)

        """

        main_foo_1 = self.global_ns.class_('MainFoo1')
        self.assertTrue(declarations.is_noncopyable(main_foo_1))

        main_foo_2 = self.global_ns.class_('MainFoo2')
        self.assertTrue(declarations.is_noncopyable(main_foo_2))

        main_foo_3 = self.global_ns.class_('MainFoo3')
        self.assertTrue(declarations.is_noncopyable(main_foo_3))

        main_foo_4 = self.global_ns.class_('MainFoo4')
        self.assertTrue(declarations.is_noncopyable(main_foo_4))

        main_foo_5 = self.global_ns.class_('MainFoo5')
        self.assertTrue(declarations.is_noncopyable(main_foo_5))

        if self.xml_generator_from_xml_file.is_castxml:
            # CastXML only test
            # MainFoo6 is copyable
            main_foo_6 = self.global_ns.class_('MainFoo6')
            self.assertFalse(declarations.is_noncopyable(main_foo_6))
    def test(self):
        """
        Search for classes which can not be copied.

        See bug #13

        1) non copyable class
        2) non copyable const variable (fundamental type)
        3) non copyable const variable (class type)
        4) non copyable const variable (array type)
        5) non copyable const variable (class type)

        """

        main_foo_1 = self.global_ns.class_('MainFoo1')
        self.assertTrue(declarations.is_noncopyable(main_foo_1))

        main_foo_2 = self.global_ns.class_('MainFoo2')
        self.assertTrue(declarations.is_noncopyable(main_foo_2))

        main_foo_3 = self.global_ns.class_('MainFoo3')
        self.assertTrue(declarations.is_noncopyable(main_foo_3))

        main_foo_4 = self.global_ns.class_('MainFoo4')
        self.assertTrue(declarations.is_noncopyable(main_foo_4))

        main_foo_5 = self.global_ns.class_('MainFoo5')
        self.assertTrue(declarations.is_noncopyable(main_foo_5))

        if self.xml_generator_from_xml_file.is_castxml:
            # CastXML only test
            # MainFoo6 is copyable
            main_foo_6 = self.global_ns.class_('MainFoo6')
            self.assertFalse(declarations.is_noncopyable(main_foo_6))
    def wrapper_type( self ):
        tmpl = "%(namespace)s::%(constness)sarray_1_t< %(item_type)s, %(array_size)d>"

        item_type = declarations.array_item_type(self.declaration.decl_type)
        is_noncopyable = not declarations.is_fundamental(item_type) and \
            declarations.is_noncopyable(item_type)

        constness = ''
        if declarations.is_const(self.declaration.decl_type) or is_noncopyable:
            constness = 'const_'
        result = tmpl % {
                'namespace' : code_repository.array_1.namespace
              , 'constness' : constness
              , 'item_type' : declarations.array_item_type( self.declaration.decl_type ).decl_string
              , 'array_size': declarations.array_size( self.declaration.decl_type )
        }
        return declarations.dummy_type_t( result )
Beispiel #9
0
    def wrapper_type( self ):
        tmpl = "%(namespace)s::%(constness)sarray_1_t< %(item_type)s, %(array_size)d>"

        item_type = declarations.array_item_type(self.declaration.decl_type)
        is_noncopyable = not declarations.is_fundamental(item_type) and \
            declarations.is_noncopyable(item_type)

        constness = ''
        if declarations.is_const(self.declaration.decl_type) or is_noncopyable:
            constness = 'const_'
        result = tmpl % {
                'namespace' : code_repository.array_1.namespace
              , 'constness' : constness
              , 'item_type' : declarations.array_item_type( self.declaration.decl_type ).decl_string
              , 'array_size': declarations.array_size( self.declaration.decl_type )
        }
        return declarations.dummy_type_t( result )
    def _create_impl(self):
        templates = declarations.templates
        call_invocation = declarations.call_invocation
        ns_name = code_repository.array_1.namespace
        item_type = declarations.array_item_type(self.array_type)
        is_noncopyable = not declarations.is_fundamental(item_type) and declarations.is_noncopyable(item_type)

        if declarations.is_const(self.array_type) or is_noncopyable:
            fn_name = 'register_const_array_1'
        else:
            fn_name = 'register_array_1'

        fn_def_tmpl_args = [ declarations.array_item_type(self.array_type).decl_string
                             , str( declarations.array_size(self.array_type) ) ]
        if not self.call_policies.is_default():
            fn_def_tmpl_args.append(
                self.call_policies.create(self, call_policies.CREATION_POLICY.AS_TEMPLATE_ARGUMENT ) )

        fn_def = templates.join( '::'.join( [ns_name, fn_name] ), fn_def_tmpl_args )
        return call_invocation.join( fn_def, [ '"%s"' % self._create_name() ] ) + ';'
Beispiel #11
0
 def _get_noncopyable(self):
     if self._noncopyable is None:
         self._noncopyable = declarations.is_noncopyable( self )
     return self._noncopyable
 def _get_noncopyable(self):
     if self._noncopyable is None:
         self._noncopyable = declarations.is_noncopyable(self)
     return self._noncopyable