from mpyCppWrapper import CppWrapperClass
import sys, os, inspect
filename = inspect.getframeinfo(inspect.currentframe()).filename
path = os.path.dirname(os.path.abspath(filename))
sys.path.append(path + '/../fswExamples/')
from desktopFswSim import DesktopFSW
[docs]def empty_wraps_folder(outputPath):
    """
    This function cleans the directory where output will be stored provided that such directory exists.
    If it doesn't exist, it will create a fresh one.
    :param outputPath: absolute folder plath where the outputs will be stored
    :return:
    """
    if os.path.exists(outputPath):
        print("Cleaning directory: %s" % outputPath)
        for plot_file in os.listdir(outputPath):
            os.remove(outputPath + '/' + plot_file)
    else:
        print("Creating new directory: %s" % outputPath)
        os.makedirs(outputPath) 
[docs]def run_auto_wrapper():
    """
       This is the main function to run for creating C++ wrapper classes around the existing C modules.
       Detailed comments are provided below.
    """
    # Import your FSW simulation
    TheSim = DesktopFSW()
    # Define the FSW tasks whose modules are to be parsed
    taskActivityDir = dict()
    taskActivityDir["initOnlyTask"] = str(0)
    taskActivityDir["inertial3DPointTask"] = str(0)
    taskActivityDir["feedbackControlTask"] = str(0)
    # Define the path where the C++ wrapper classes will be stored
    outputPath = os.path.dirname(os.path.abspath(filename)) + "/outputFiles"
    empty_wraps_folder(outputPath=outputPath)
    # Run the auto-wrapper
    CppWrapperClass(TheSim=TheSim, taskActivityDir=taskActivityDir,
                    simTag="TheSim.fswModels", outputPath=outputPath) 
if __name__ == "__main__":
    run_auto_wrapper()