Adapting the software for specific needs

The specific description of Biblos abstraction layer can be found in GMV-BIBLOS-UM_User_Manual_1.0.

Creating a new Block
To develop a new block inherit from Block class and specialize it with global and local configuration file. As and example the Biblos.Orbit block is presented:

namespace biblos{namespace geometry{
class B_Orbit : public biblos::Block&ltB_OrbitGlobalConfig, B_OrbitLocalConfig&gt
        : Block(std::make_pair(std::vector&ltstd::string&gt({GeomFilenamesIds::iers_eop_time_init, GeomFilenamesIds::ini_state_vector}), 
            std::vector&ltstd::string&gt({GeomFilenamesIds::real_orbit, GeomFilenamesIds::estimated_orbit})))
    virtual ~B_Orbit(){};
    int B_execute(const B_OrbitGlobalConfig &global_param, const B_OrbitLocalConfig &geom_param,
        const std::vector&ltstd::string&gt &inputFiles, 
        const std::vector&ltstd::string&gt &outputFiles) override;
    std::map&ltDetectorLineID, std::pair&ltB_OrbitGlobalConfig, B_OrbitLocalConfig&gt&gt parseConfigurationFiles(
            const std::string &globalConfigurationFilename, const std::string & localConfigurationFilename) const override;
    Logger B_Log;

}; }}

Creating a new Module from existing Blocks
To develop a new module from existing blocks derrived from Block, just specialize Module class template with these blocks, create object of specialized Module and call execute function. As and example Biblos.SceneGeneration module implementation is presented:

Module&ltB_Resampling, B_AtmosphereSimulatorMain&gt sceneGeneration;
int code = sceneGeneration.execute(moduleInput, moduleOutput, globalFilename_, localFilename_); 
return code;