Ignore:
Timestamp:
Jun 25, 2012 9:07:41 AM (12 years ago)
Author:
Kieran Campbell <kieranrcampbell@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
33c671e
Parents:
f8be87d
Message:

Updated python wrapping to automatically generate c_models.cpp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/python_wrapper/wrapping.py

    r101065a r0a9686d  
    66def generate_wrappers(header_dir, output_dir='.', c_wrapper_dir='.'): 
    77    nModels=0 
     8    model_list = list() 
     9 
    810    for item in os.listdir(header_dir): 
    911        toks = os.path.splitext(os.path.basename(item)) 
     
    1719            app.write_c_wrapper() 
    1820            app.write_python_wrapper() 
    19             #print app 
     21            model_list.append(app.getModelName()) 
     22    write_c_models(model_list) 
    2023    print "Total number of model  wrappers created is %s" % nModels 
     24 
     25def write_c_models(model_list): 
     26    # simultaneously generates 'sansmodels/installed_models.txt' 
     27    # and 'sansmodels/src/c_models/c_models.cpp' 
     28    model_list_file = open(os.path.join("sansmodels","installed_models.txt"),"w") 
     29    for model in model_list: 
     30        model_list_file.write(model + "\n") 
     31 
     32    model_list_file.close() 
     33     
     34 
     35    template_file = open(os.path.join("sansmodels","src","c_models","c_models.cpp.template"),"r") 
     36    write_file = open(os.path.join("sansmodels","src","c_models","c_models.cpp"),"w") 
     37    buf = template_file.read() 
     38    lines = buf.split('\n') 
     39     
     40    tag1 = "[TAG_1]" 
     41    tag2 = "[TAG_2]" 
     42     
     43    for line in lines: 
     44         
     45        if line.count(tag1) > 0: 
     46            write_file.write("\n // adding generated code \n") 
     47            for pyclass in model_list: 
     48                write_file.write("void addC" + pyclass 
     49                                 + "(PyObject *module); \n") 
     50            write_file.write(" // end generated code \n") 
     51                 
     52 
     53        elif line.count(tag2) > 0: 
     54            write_file.write("\n // adding generated code \n") 
     55 
     56            for pyclass in model_list: 
     57                write_file.write("addC" + pyclass + "(m); \n") 
     58 
     59            write_file.write("addDisperser(m); \n") 
     60            write_file.write("\n // end generated code \n") 
     61                 
     62                 
     63        else: 
     64            write_file.write(line + "\n") 
     65 
     66 
    2167 
    2268if __name__ == '__main__': 
     
    2571 
    2672 
     73 
     74 
Note: See TracChangeset for help on using the changeset viewer.