[pygccxml-commit] SF.net SVN: pygccxml: [1312] pygccxml_dev
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2008-04-23 05:56:01
|
Revision: 1312
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1312&view=rev
Author: roman_yakovenko
Date: 2008-04-22 22:56:08 -0700 (Tue, 22 Apr 2008)
Log Message:
-----------
few fixes to problems caused by pdb parser integration
Modified Paths:
--------------
pygccxml_dev/pygccxml/declarations/cpptypes.py
pygccxml_dev/pygccxml/msvc/config.py
pygccxml_dev/pygccxml/utils/__init__.py
pygccxml_dev/unittests/autoconfig.py
pygccxml_dev/unittests/core_tester.py
Added Paths:
-----------
pygccxml_dev/pygccxml/utils/fs_utils.py
Modified: pygccxml_dev/pygccxml/declarations/cpptypes.py
===================================================================
--- pygccxml_dev/pygccxml/declarations/cpptypes.py 2008-04-22 19:35:17 UTC (rev 1311)
+++ pygccxml_dev/pygccxml/declarations/cpptypes.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -17,6 +17,7 @@
self.cache = algorithms_cache.type_algs_cache_t()
self._byte_size = 0
self._byte_align = 0
+ self.compiler = None
def __str__(self):
res = self.decl_string
Modified: pygccxml_dev/pygccxml/msvc/config.py
===================================================================
--- pygccxml_dev/pygccxml/msvc/config.py 2008-04-22 19:35:17 UTC (rev 1311)
+++ pygccxml_dev/pygccxml/msvc/config.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -1,6 +1,7 @@
import os
import sys
import comtypes
+from .. import utils
import comtypes.client
import _winreg as win_registry
from distutils import msvccompiler
@@ -20,8 +21,12 @@
def get_msvcr_path( self ):
vss_installed = self.__get_installed_vs_dirs()
- #TODO: better algorithm to find the path
- return os.path.join( vss_installed[0], 'vc', 'redist', 'x86', 'microsoft.vc90.crt', 'MSVCR90.DLL' )
+ for f in utils.files_walker( vss_installed, ["*.dll"], ):
+ f_path, f_name = os.path.split( f.upper() )
+ if f_name.startswith( 'MSVCR' ):
+ return f
+ else:
+ raise RuntimeError( 'Unable to find msvcrXX.dll. Search path is: %s' % vss_installed )
def get_msdia_path( self ):
vss_installed = self.__get_installed_vs_dirs()
Modified: pygccxml_dev/pygccxml/utils/__init__.py
===================================================================
--- pygccxml_dev/pygccxml/utils/__init__.py 2008-04-22 19:35:17 UTC (rev 1311)
+++ pygccxml_dev/pygccxml/utils/__init__.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -12,6 +12,8 @@
import sys
import logging
import tempfile
+from fs_utils import files_walker
+from fs_utils import directories_walker
def _create_logger_( name ):
"""implementation details"""
@@ -151,4 +153,4 @@
return name
else:
raise RuntimeError( 'Unable to find name for value(%d) in enumeration "%s"'
- % ( enum_numeric_value, cls.__name__ ) )
\ No newline at end of file
+ % ( enum_numeric_value, cls.__name__ ) )
Added: pygccxml_dev/pygccxml/utils/fs_utils.py
===================================================================
--- pygccxml_dev/pygccxml/utils/fs_utils.py (rev 0)
+++ pygccxml_dev/pygccxml/utils/fs_utils.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -0,0 +1,136 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+from types import *
+
+##If you want include files that doesn't have extension then use filter like '*.'
+
+def _make_list( argument ):
+ if type(argument) in StringTypes:
+ if argument:
+ return [argument]
+ else:
+ return []
+ elif type(argument) is ListType:
+ return argument
+ else:
+ raise TypeError( 'Argument "%s" must be or list of strings or string.' % argument )
+
+class base_files_iterator:
+ def __init__(self, file_exts, is_include_exts = True):
+ self.__file_exts = _make_list( file_exts )
+ self.__is_include_exts = is_include_exts
+
+ def _is_to_skip(self, file_path):
+ if not self.__file_exts:
+ return 0
+ file_ext = os.path.splitext( file_path )[1]
+ if not file_ext:
+ file_ext = '.' + file_ext
+ file_ext = '*' + file_ext
+ if file_ext.lower() in self.__file_exts:
+ return not self.__is_include_exts
+ else:
+ return self.__is_include_exts
+
+ def _subdirectories_and_files(self, directory_path):
+ files, directories = [], []
+ directory_contents = os.listdir(directory_path)
+ for object_name in directory_contents:
+ object_path = os.path.join(directory_path, object_name)
+ if os.path.isfile( object_path ) and not self._is_to_skip( object_path ):
+ files.append( object_path )
+ elif os.path.isdir( object_path ):
+ directories.append( object_path )
+ else:
+ pass
+ return directories, files
+
+ def __iter__(self):
+ raise NotImplementedError
+
+ def next(self):
+ raise NotImplementedError
+
+ def restart(self):
+ raise NotImplementedError
+
+class files_walker(base_files_iterator):
+ def __init__(self, directories, file_ext_filter = '', is_include_filter = True, is_recursive = True):
+ base_files_iterator.__init__(self, file_ext_filter, is_include_filter)
+ self.__directories = _make_list( directories )
+ self.__is_recursive = is_recursive
+ self.__file_generator = None
+
+ def __walk(self):
+ directories = self.__directories[:]
+ while directories:
+ sub_directories, files = self._subdirectories_and_files( directories.pop(0) )
+ if self.__is_recursive:
+ for directory in sub_directories:
+ directories.append( directory )
+ for file_os in files:
+ yield file_os
+
+ def __iter__(self):
+ self.__file_generator = self.__walk()
+ return self
+
+ def next(self):
+ return self.__file_generator.next()
+
+ def restart(self):
+ self.__file_generator = None
+
+
+class directories_walker:
+ def __init__(self, directories, is_recursive = 1):
+ self.__directories = []
+ for root in _make_list( directories ):
+ self.__directories.extend( self.__sub_directories( root ) )
+ self.__is_recursive = is_recursive
+ self.__directory_generator = None
+
+ def __sub_directories(self, directory_path):
+ sub_directories = []
+ directory_contains = os.listdir(directory_path)
+ for object_in_directory in directory_contains:
+ full_path = os.path.join(directory_path, object_in_directory)
+ if os.path.isdir( full_path ):
+ sub_directories.append( full_path )
+ return sub_directories
+
+ def __walk(self):
+ directories = self.__directories[:]
+ for curr_directory in directories:
+ yield curr_directory
+ if self.__is_recursive:
+ for f in directories_walker( [curr_directory], True ):
+ yield f
+
+ def __iter__(self):
+ self.__directory_generator = self.__walk()
+ return self
+
+ def next(self):
+ return self.__directory_generator.next()
+
+ def restart(self):
+ self.__directory_generator = None
+
+
+if '__main__' == __name__:
+ pass
+ #lFileCount = 0
+ #for file_os in files_iterator( r'C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport', ['*.h', '*.'], True, False):
+ #print file_os
+ #lFileCount += 1
+ #print lFileCount
+
+ #~ for directory in directories_iterator( '/home/roman/language-binding', False ):
+ #~ print directory
+ #~ for directory in directories_iterator( '/home/roman/language-binding', True ):
+ #~ print directory
Modified: pygccxml_dev/unittests/autoconfig.py
===================================================================
--- pygccxml_dev/unittests/autoconfig.py 2008-04-22 19:35:17 UTC (rev 1311)
+++ pygccxml_dev/unittests/autoconfig.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -59,6 +59,7 @@
def get_pdb_global_ns():
+ return None
return cxx_parsers_cfg.get_pdb_loader().global_ns
Modified: pygccxml_dev/unittests/core_tester.py
===================================================================
--- pygccxml_dev/unittests/core_tester.py 2008-04-22 19:35:17 UTC (rev 1311)
+++ pygccxml_dev/unittests/core_tester.py 2008-04-23 05:56:08 UTC (rev 1312)
@@ -359,10 +359,10 @@
def create_suite():
suite = unittest.TestSuite()
- #~ suite.addTest( unittest.makeSuite(core_all_at_once_t))
- #~ suite.addTest( unittest.makeSuite(core_all_at_once_no_opt_t))
- #~ suite.addTest( unittest.makeSuite(core_file_by_file_t))
- #~ suite.addTest( unittest.makeSuite(core_file_by_file_no_opt_t))
+ suite.addTest( unittest.makeSuite(core_all_at_once_t))
+ suite.addTest( unittest.makeSuite(core_all_at_once_no_opt_t))
+ suite.addTest( unittest.makeSuite(core_file_by_file_t))
+ suite.addTest( unittest.makeSuite(core_file_by_file_no_opt_t))
if sys.platform == 'win32':
suite.addTest( unittest.makeSuite(pdb_based_core_tester_t))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|