Package pyplusplus :: Package file_writers

Source Code for Package pyplusplus.file_writers

 1  # Copyright 2004-2008 Roman Yakovenko. 
 2  # Distributed under the Boost Software License, Version 1.0. (See 
 3  # accompanying file LICENSE_1_0.txt or copy at 
 4  # http://www.boost.org/LICENSE_1_0.txt) 
 5   
 6  """ 
 7  This package contains few classes, that writes L{code_creators.module_t} to files. 
 8   
 9  Right now 3 strategies were implemented: 
10   
11      1. All code is written in one file 
12   
13      2. Classic strategy of deviding classes to files: one class in one header + source files. 
14   
15          2.1 Huge classes are splitten to few source files. 
16   
17  """ 
18   
19  import types 
20  from writer import writer_t 
21  from single_file import single_file_t 
22  from multiple_files import multiple_files_t 
23  from balanced_files import balanced_files_t 
24  from class_multiple_files import class_multiple_files_t 
25  from md5sum_repository import repository_t 
26  from md5sum_repository import cached_repository_t 
27   
28 -def has_pypp_extenstion( fname ):
29 """returns True if file has Py++ specific extension, otherwise False""" 30 for ext in ( multiple_files_t.HEADER_EXT, multiple_files_t.SOURCE_EXT ): 31 if fname.endswith( ext ): 32 return True 33 return False
34
35 -def write_file( data, file_path, encoding='ascii' ):
36 """writes data to file""" 37 if isinstance( data, types.StringTypes ): 38 writer_t.write_file( data, file_path, encoding=encoding ) 39 else: 40 sf = single_file_t( data, file_path, encoding=encoding ) 41 sf.write()
42
43 -def write_multiple_files( extmodule, dir_path, files_sum_repository=None, encoding='ascii' ):
44 """writes extmodule to multiple files""" 45 mfs = multiple_files_t( extmodule, dir_path, files_sum_repository=files_sum_repository, encoding=encoding ) 46 mfs.write() 47 return mfs.written_files
48
49 -def write_balanced_files( extmodule, dir_path, number_of_buckets, files_sum_repository=None, encoding='ascii' ):
50 """writes extmodule to fixed number of multiple cpp files""" 51 mfs = balanced_files_t( extmodule, dir_path, number_of_buckets, files_sum_repository=files_sum_repository, encoding=encoding ) 52 mfs.write() 53 return mfs.written_files
54
55 -def write_class_multiple_files( extmodule, dir_path, huge_classes, files_sum_repository, encoding='ascii' ):
56 """writes extmodule to multiple files and splits huge classes to few source files""" 57 mfs = class_multiple_files_t( extmodule, dir_path, huge_classes, files_sum_repository=files_sum_repository, encoding=encoding ) 58 mfs.write() 59 return mfs.written_files
60