Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:51:49

0001 #ifndef TCS_OBSERVABLE_SERVICE_H
0002 #define TCS_OBSERVABLE_SERVICE_H
0003 
0004 /**
0005  * @file TCSObservableService.h
0006  * @author Bryan BERTHOU (SPhN / CEA Saclay)
0007  * @date November 20, 2014
0008  * @version 1.0
0009  */
0010 
0011 #include <string>
0012 
0013 #include "../beans/List.h"
0014 #include "../beans/observable/TCS/TCSObservableKinematic.h"
0015 #include "../beans/observable/TCS/TCSObservableResult.h"
0016 #include "../modules/observable/Observable.h"
0017 #include "../modules/process/ProcessModule.h"
0018 #include "ObservableService.h"
0019 
0020 namespace PARTONS {
0021 class TCSObservable;
0022 class TCSProcessModule;
0023 } /* namespace PARTONS */
0024 
0025 namespace PARTONS {
0026 
0027 /**
0028  * @class TCSObservableService
0029  *
0030  * @brief Singleton to handle and compute some pre-configured observable modules.
0031  *
0032  * See the [general tutorial](@ref usage) and this [table](@ref usage_tasks) of examples.
0033  */
0034 class TCSObservableService: public ObservableService<TCSObservableKinematic,
0035         TCSObservableResult> {
0036 
0037 public:
0038 
0039     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0040 
0041     /**
0042      * Destructor.
0043      */
0044     virtual ~TCSObservableService();
0045 
0046     virtual void resolveObjectDependencies();
0047     virtual TCSObservableKinematic newKinematicFromTask(const Task &task) const;
0048     virtual List<TCSObservableKinematic> newListOfKinematicFromTask(
0049             const Task &task) const;
0050 
0051     /**
0052      * Uses an automation task (XML file) to configure a TCSProcessModule.
0053      * @param task Automation task.
0054      * @return Pre-configured TCSProcessModule.
0055      */
0056     TCSProcessModule* newTCSProcessModuleFromTask(const Task &task) const;
0057 
0058     /**
0059      * Uses an automation task (XML file) to configure a TCSObservable.
0060      * @param task Automation task.
0061      * @return Pre-configured TCSObservable.
0062      */
0063     TCSObservable* newTCSObservableModuleFromTask(const Task &task) const;
0064 
0065 protected:
0066 
0067     /**
0068      * Default constructor.
0069      */
0070     TCSObservableService(const std::string &className);
0071 
0072     virtual ProcessModule<TCSObservableKinematic, TCSObservableResult>* newProcessModuleFromTask(
0073             const Task &task) const;
0074     virtual Observable<TCSObservableKinematic, TCSObservableResult>* newObservableModuleFromTask(
0075             const Task &task) const;
0076 };
0077 
0078 } /* namespace PARTONS */
0079 
0080 #endif /* TCS_OBSERVABLE_SERVICE_H */