コード例 #1
0
    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))
コード例 #2
0
    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))
コード例 #3
0
    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))
コード例 #4
0
    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))
コード例 #5
0
    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))
コード例 #6
0
    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))
コード例 #7
0
    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))
コード例 #8
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 )
コード例 #9
0
ファイル: member_variable.py プロジェクト: ompl/pyplusplus
    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 )
コード例 #10
0
    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() ] ) + ';'
コード例 #11
0
ファイル: class_wrapper.py プロジェクト: detoxhby/lambdawars
 def _get_noncopyable(self):
     if self._noncopyable is None:
         self._noncopyable = declarations.is_noncopyable( self )
     return self._noncopyable
コード例 #12
0
 def _get_noncopyable(self):
     if self._noncopyable is None:
         self._noncopyable = declarations.is_noncopyable(self)
     return self._noncopyable