source: sasview/sansmodels/src/python_wrapper/wrapping.py @ 7034fc0

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 7034fc0 was 082c565, checked in by Kieran Campbell <kieranrcampbell@…>, 12 years ago

Added documentation for StarPolymer? model

  • Property mode set to 100644
File size: 2.2 KB
RevLine 
[9ce41c6]1import sys
2import os
3import os.path
4from WrapperGenerator import WrapperGenerator
5
[642a025]6def generate_wrappers(header_dir, output_dir='.', c_wrapper_dir='.'):
[2d1b700]7    nModels=0
[0a9686d]8    model_list = list()
9
[2d1b700]10    for item in os.listdir(header_dir):
11        toks = os.path.splitext(os.path.basename(item))
12        if toks[1]=='.h':
13            nModels += 1
14            name = toks[0]
[642a025]15            app = WrapperGenerator(os.path.join(header_dir, name+".h"), 
16                                   output_dir=output_dir,
17                                   c_wrapper_dir=c_wrapper_dir)
[2d1b700]18            app.read()
19            app.write_c_wrapper()
20            app.write_python_wrapper()
[0a9686d]21            model_list.append(app.getModelName())
22    write_c_models(model_list)
[2d1b700]23    print "Total number of model  wrappers created is %s" % nModels
24
[0a9686d]25def write_c_models(model_list):
26    # simultaneously generates 'sansmodels/installed_models.txt'
27    # and 'sansmodels/src/c_models/c_models.cpp'
28   
29
30    template_file = open(os.path.join("sansmodels","src","c_models","c_models.cpp.template"),"r")
31    write_file = open(os.path.join("sansmodels","src","c_models","c_models.cpp"),"w")
32    buf = template_file.read()
33    lines = buf.split('\n')
34   
35    tag1 = "[TAG_1]"
36    tag2 = "[TAG_2]"
37   
38    for line in lines:
39       
40        if line.count(tag1) > 0:
41            write_file.write("\n // adding generated code \n")
42            for pyclass in model_list:
43                write_file.write("void addC" + pyclass
44                                 + "(PyObject *module); \n")
45            write_file.write(" // end generated code \n")
46               
47
48        elif line.count(tag2) > 0:
49            write_file.write("\n // adding generated code \n")
50
51            for pyclass in model_list:
52                write_file.write("addC" + pyclass + "(m); \n")
53
54            write_file.write("addDisperser(m); \n")
55            write_file.write("\n // end generated code \n")
56               
57               
58        else:
59            write_file.write(line + "\n")
60
61
62
[2d1b700]63if __name__ == '__main__':
[101065a]64    header_dir = os.path.join('..', 'include')
[642a025]65    generate_wrappers(header_dir, output_dir="../sans/models/", c_wrapper_dir='.')
[9ce41c6]66
67
[0a9686d]68
69
Note: See TracBrowser for help on using the repository browser.