/** * {{ namespace_abbr_upper }} Data Topic Client Interface * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2016-01-04 */ {% autoescape off %} // filename: {{ namespace_abbr }}_dtc.h #pragma once #include #include #include #include #include <{{ include_prefix }}/{{ namespace_abbr }}_export.h> #include <{{ include_prefix }}/{{ namespace_abbr }}.hpp> namespace DDSConnector { class DdsConnector; } namespace {{ namespace }} { namespace Interface { class {{ namespace_abbr_upper }}_COMMON_EXPORT Dtc : public QObject { Q_OBJECT protected: Dtc() = default; public: virtual ~Dtc() = default; /** * Create a new instance for {{ namespace }}::Interface::Dtc. */ static std::shared_ptr create(const std::shared_ptr &ddsConnector); /** * A unique identifier for this DTC */ static inline const char *identifier() { return "{{ namespace }}.Interface.Dtc"; } /** * initialize this Dts instance with all data topic readers */ virtual bool enableAll(bool enable = true) = 0; /** * only initialize the specific reader (can be called instead enableAll()) */ {% for dt in dataTopics.member %} {% if dt.dtcImpl %} virtual bool enable{{ dt.name }}(bool enable = true) = 0; virtual bool is{{ dt.name }}Enabled() const = 0; virtual bool waitForHistoricalData{{ dt.name }}(int timeoutMSec = -1) = 0; {% endif %} {% endfor %} {% for cp in custom_dtc_procs %} // custom procs, body must be implemented by user virtual {{ cp.signature }} = 0; {% endfor %} {% for dt in dataTopics.member %} public: // // Data Topic '{{ dt.name }}' // {% if dt.key.name %} virtual QMap<{{ dt.key.cppType }}, {{ namespace }}::{{ dt.type }}> {{ dt.nameFlc }}s() = 0; virtual bool {{ dt.nameFlc }}s(const std::function &cb) = 0; // when the cb returns true, the loop is stopped (useful when searching for a specific topic) virtual bool {{ dt.nameFlc }}s(const std::function &cb) = 0; virtual {{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}) = 0; {% else %} virtual {{ namespace }}::{{ dt.type }} {{ dt.nameFlc }}() = 0; {% endif %} Q_SIGNALS: void {{ dt.nameFlc }}Changed(const {{ namespace }}::{{ dt.type }} &data, DataModification modType); {% endfor %} }; } // namespace Interface } // namespace {{ namespace }} {% endautoescape %}