[pygccxml-commit] SF.net SVN: pygccxml: [933] pygccxml_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2007-02-26 21:28:14
|
Revision: 933 http://svn.sourceforge.net/pygccxml/?rev=933&view=rev Author: roman_yakovenko Date: 2007-02-26 13:28:13 -0800 (Mon, 26 Feb 2007) Log Message: ----------- adding 2 new type traits and unit tests is_std_[w]ostream Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/__init__.py pygccxml_dev/pygccxml/declarations/type_traits.py pygccxml_dev/unittests/data/type_traits.hpp pygccxml_dev/unittests/type_traits_tester.py Modified: pygccxml_dev/pygccxml/declarations/__init__.py =================================================================== --- pygccxml_dev/pygccxml/declarations/__init__.py 2007-02-25 12:31:52 UTC (rev 932) +++ pygccxml_dev/pygccxml/declarations/__init__.py 2007-02-26 21:28:13 UTC (rev 933) @@ -134,6 +134,8 @@ from type_traits import is_noncopyable from type_traits import is_std_string from type_traits import is_std_wstring +from type_traits import is_std_ostream +from type_traits import is_std_wostream from type_traits import is_unary_operator from type_traits import is_binary_operator Modified: pygccxml_dev/pygccxml/declarations/type_traits.py =================================================================== --- pygccxml_dev/pygccxml/declarations/type_traits.py 2007-02-25 12:31:52 UTC (rev 932) +++ pygccxml_dev/pygccxml/declarations/type_traits.py 2007-02-26 21:28:13 UTC (rev 933) @@ -1008,7 +1008,30 @@ type = remove_alias( type ) return remove_cv( type ).decl_string in decl_strings +def is_std_ostream( type ): + """returns True, if type represents C++ std::string, False otherwise""" + decl_strings = [ + '::std::basic_ostream<char, std::char_traits<char> >' + , '::std::basic_ostream<char,std::char_traits<char> >' + , '::std::ostream' ] + if isinstance( type, types.StringTypes ): + return type in decl_strings + else: + type = remove_alias( type ) + return remove_cv( type ).decl_string in decl_strings + +def is_std_wostream( type ): + """returns True, if type represents C++ std::string, False otherwise""" + decl_strings = [ + '::std::basic_ostream<wchar_t, std::char_traits<wchar_t> >' + , '::std::basic_ostream<wchar_t,std::char_traits<wchar_t> >' + , '::std::wostream' ] + if isinstance( type, types.StringTypes ): + return type in decl_strings + else: + type = remove_alias( type ) + return remove_cv( type ).decl_string in decl_strings @@ -1017,4 +1040,3 @@ - Modified: pygccxml_dev/unittests/data/type_traits.hpp =================================================================== --- pygccxml_dev/unittests/data/type_traits.hpp 2007-02-25 12:31:52 UTC (rev 932) +++ pygccxml_dev/unittests/data/type_traits.hpp 2007-02-26 21:28:13 UTC (rev 933) @@ -7,6 +7,7 @@ //from boost.type_traits (http://www.boost.org) library. #include <string> +#include <iostream> #define TYPE_PERMUTATION( BASE, NAME ) \ typedef BASE NAME##_t; \ @@ -18,6 +19,25 @@ int member; }; +namespace is_std_ostream{ +namespace yes{ + typedef std::ostream ostream_type; +} +namespace no{ + typedef int int__; +} +} + +namespace is_std_wostream{ +namespace yes{ + typedef std::wostream wostream_type; +} +namespace no{ + typedef int int__; +} +} + + struct incomplete_type; namespace is_void{ Modified: pygccxml_dev/unittests/type_traits_tester.py =================================================================== --- pygccxml_dev/unittests/type_traits_tester.py 2007-02-25 12:31:52 UTC (rev 932) +++ pygccxml_dev/unittests/type_traits_tester.py 2007-02-26 21:28:13 UTC (rev 933) @@ -105,6 +105,12 @@ def test_is_noncopyable(self): self.__test_type_category( 'is_noncopyable', declarations.is_noncopyable ) + def test_is_std_ostream(self): + self.__test_type_category( 'is_std_ostream', declarations.is_std_ostream ) + + def test_is_std_wostream(self): + self.__test_type_category( 'is_std_wostream', declarations.is_std_wostream ) + def test_has_trivial_constructor(self): self.__test_type_category( 'has_trivial_constructor', declarations.has_trivial_constructor ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |