Revision: 1067
http://svn.sourceforge.net/pygccxml/?rev=1067&view=rev
Author: roman_yakovenko
Date: 2007-06-21 12:05:25 -0700 (Thu, 21 Jun 2007)
Log Message:
-----------
adding initial support to unicode
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/file_writers/__init__.py
pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
pyplusplus_dev/pyplusplus/file_writers/single_file.py
pyplusplus_dev/pyplusplus/file_writers/writer.py
Modified: pyplusplus_dev/pyplusplus/file_writers/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/__init__.py 2007-06-20 05:23:38 UTC (rev 1066)
+++ pyplusplus_dev/pyplusplus/file_writers/__init__.py 2007-06-21 19:05:25 UTC (rev 1067)
@@ -31,22 +31,22 @@
return True
return False
-def write_file( data, file_path ):
+def write_file( data, file_path, encoding='ascii' ):
"""writes data to file"""
if isinstance( data, types.StringTypes ):
- writer_t.write_file( data, file_path )
+ writer_t.write_file( data, file_path, encoding=encoding )
else:
- sf = single_file_t( data, file_path )
+ sf = single_file_t( data, file_path, encoding=encoding )
sf.write()
-def write_multiple_files( extmodule, dir_path, files_sum_repository=None ):
+def write_multiple_files( extmodule, dir_path, files_sum_repository=None, encoding='ascii' ):
"""writes extmodule to multiple files"""
- mfs = multiple_files_t( extmodule, dir_path, files_sum_repository=files_sum_repository )
+ mfs = multiple_files_t( extmodule, dir_path, files_sum_repository=files_sum_repository, encoding=encoding )
mfs.write()
return mfs.written_files
-def write_class_multiple_files( extmodule, dir_path, huge_classes, files_sum_repository ):
+def write_class_multiple_files( extmodule, dir_path, huge_classes, files_sum_repository, encoding='ascii' ):
"""writes extmodule to multiple files and splits huge classes to few source files"""
- mfs = class_multiple_files_t( extmodule, dir_path, huge_classes, files_sum_repository=files_sum_repository )
+ mfs = class_multiple_files_t( extmodule, dir_path, huge_classes, files_sum_repository=files_sum_repository, encoding=encoding )
mfs.write()
return mfs.written_files
Modified: pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2007-06-20 05:23:38 UTC (rev 1066)
+++ pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2007-06-21 19:05:25 UTC (rev 1067)
@@ -34,11 +34,13 @@
, directory_path
, huge_classes
, num_of_functions_per_file=20
- , files_sum_repository=None ):
+ , files_sum_repository=None
+ , encoding='ascii'):
multiple_files.multiple_files_t.__init__(self
, extmodule
, directory_path
- , files_sum_repository=files_sum_repository)
+ , files_sum_repository=files_sum_repository
+ , encoding=encoding)
self.huge_classes = huge_classes
self.num_of_functions_per_file = num_of_functions_per_file
self.internal_splitters = [
Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2007-06-20 05:23:38 UTC (rev 1066)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2007-06-21 19:05:25 UTC (rev 1067)
@@ -22,7 +22,7 @@
HEADER_EXT = '.pypp.hpp'
SOURCE_EXT = '.pypp.cpp'
- def __init__(self, extmodule, directory_path, write_main=True, files_sum_repository=None):
+ def __init__(self, extmodule, directory_path, write_main=True, files_sum_repository=None, encoding='ascii'):
"""Constructor.
@param extmodule: The root of a code creator tree
@@ -34,7 +34,7 @@
that calls all the registration methods.
@type write_main: boolean
"""
- writer.writer_t.__init__( self, extmodule, files_sum_repository )
+ writer.writer_t.__init__( self, extmodule, files_sum_repository, encoding=encoding )
self.__directory_path = directory_path
self.create_dir( directory_path )
self.include_creators = [] # List of include_t creators that contain the generated headers
@@ -49,7 +49,7 @@
def write_file( self, fpath, content ):
self.written_files.append( fpath )
- writer.writer_t.write_file( fpath, content, self.files_sum_repository )
+ writer.writer_t.write_file( fpath, content, self.files_sum_repository, self.encoding )
def create_dir( self, directory_path ):
"""Create the output directory if it doesn't already exist.
Modified: pyplusplus_dev/pyplusplus/file_writers/single_file.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/single_file.py 2007-06-20 05:23:38 UTC (rev 1066)
+++ pyplusplus_dev/pyplusplus/file_writers/single_file.py 2007-06-21 19:05:25 UTC (rev 1067)
@@ -11,18 +11,18 @@
class single_file_t(writer.writer_t):
"""generates all code into single cpp file"""
- def __init__(self, extmodule, file_name):
- writer.writer_t.__init__(self, extmodule)
+ def __init__(self, extmodule, file_name, encoding='ascii'):
+ writer.writer_t.__init__(self, extmodule, encoding=encoding)
self.__fname = file_name
- def _get_file_name(self):
+ @property
+ def file_name(self):
return self.__fname
- file_name = property( _get_file_name )
def write(self):
headers = self.get_user_headers( [self.extmodule] )
map( lambda header: self.extmodule.add_include( header )
, headers )
self.write_code_repository( os.path.split( self.file_name )[0] )
- self.write_file( self.file_name, self.extmodule.create() )
+ self.write_file( self.file_name, self.extmodule.create(), encoding=self.encoding )
Modified: pyplusplus_dev/pyplusplus/file_writers/writer.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/writer.py 2007-06-20 05:23:38 UTC (rev 1066)
+++ pyplusplus_dev/pyplusplus/file_writers/writer.py 2007-06-21 19:05:25 UTC (rev 1067)
@@ -7,6 +7,7 @@
import os
import time
+import codecs
from pyplusplus import _logging_
from pyplusplus import code_creators
from pyplusplus import code_repository
@@ -22,14 +23,20 @@
"""
logger = _logging_.loggers.file_writer
- def __init__(self, extmodule, files_sum_repository=None):
+ def __init__(self, extmodule, files_sum_repository=None, encoding='ascii'):
object.__init__(self)
self.__extmodule = extmodule
self.__files_sum_repository = files_sum_repository
+ self.__encoding=encoding
if None is files_sum_repository:
self.__files_sum_repository = md5sum_repository.dummy_repository_t()
-
+
@property
+ def encoding( self ):
+ """encoding name used to write generated code to files"""
+ return self.__encoding
+
+ @property
def extmodule(self):
"""The root of the code creator tree ( code_creators.module_t )"""
return self.__extmodule
@@ -63,7 +70,7 @@
self.write_file( os.path.join( dir, code_repository.named_tuple.file_name )
, code_repository.named_tuple.code )
@staticmethod
- def write_file( fpath, content, files_sum_repository=None ):
+ def write_file( fpath, content, files_sum_repository=None, encoding='ascii' ):
"""Write a source file.
This method writes the string content into the specified file.
@@ -102,7 +109,7 @@
#It could be a first time the user uses files_sum_repository, don't force him
#to recompile the code
#small optimization to cut down compilation time
- f = file( fpath, 'rb' )
+ f = codecs.open( fpath, 'rb', encoding )
fcontent = f.read()
f.close()
if fcontent == fcontent_new:
@@ -113,8 +120,8 @@
writer_t.logger.debug( 'file changed or it does not exist' )
writer_t.create_backup( fpath )
- f = file( fpath, 'w+b' )
- f.write( fcontent_new )
+ f = codecs.open( fpath, 'w+b', encoding )
+ f.write( unicode( fcontent_new, encoding ) )
f.close()
if new_hash_value:
files_sum_repository.update_value( fname, new_hash_value )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|