00001
00002
00003
00004 #include "psddl_pds2psana/control.ddl.h"
00005
00006 #include <cstddef>
00007
00008 #include <stdexcept>
00009
00010 namespace psddl_pds2psana {
00011 namespace ControlData {
00012 Psana::ControlData::PVControl pds_to_psana(Pds::ControlData::PVControl pds)
00013 {
00014 return Psana::ControlData::PVControl(pds.name(), pds.index(), pds.value());
00015 }
00016
00017 Psana::ControlData::PVMonitor pds_to_psana(Pds::ControlData::PVMonitor pds)
00018 {
00019 return Psana::ControlData::PVMonitor(pds.name(), pds.index(), pds.loValue(), pds.hiValue());
00020 }
00021
00022 Psana::ControlData::PVLabel pds_to_psana(Pds::ControlData::PVLabel pds)
00023 {
00024 return Psana::ControlData::PVLabel(pds.name(), pds.value());
00025 }
00026
00027 ConfigV1::ConfigV1(const boost::shared_ptr<const XtcType>& xtcPtr)
00028 : Psana::ControlData::ConfigV1()
00029 , m_xtcObj(xtcPtr)
00030 , _duration(xtcPtr->duration())
00031 {
00032 {
00033 typedef ndarray<Psana::ControlData::PVControl, 1> NDArray;
00034 typedef ndarray<const Pds::ControlData::PVControl, 1> XtcNDArray;
00035 const XtcNDArray& xtc_ndarr = xtcPtr->pvControls();
00036 _pvControls_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00037 NDArray::iterator out = _pvControls_ndarray_storage_.begin();
00038 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00039 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00040 }
00041 }
00042 {
00043 typedef ndarray<Psana::ControlData::PVMonitor, 1> NDArray;
00044 typedef ndarray<const Pds::ControlData::PVMonitor, 1> XtcNDArray;
00045 const XtcNDArray& xtc_ndarr = xtcPtr->pvMonitors();
00046 _pvMonitors_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00047 NDArray::iterator out = _pvMonitors_ndarray_storage_.begin();
00048 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00049 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00050 }
00051 }
00052 }
00053 ConfigV1::~ConfigV1()
00054 {
00055 }
00056
00057
00058 uint32_t ConfigV1::events() const {
00059 return m_xtcObj->events();
00060 }
00061
00062
00063 uint8_t ConfigV1::uses_duration() const {
00064 return m_xtcObj->uses_duration();
00065 }
00066
00067
00068 uint8_t ConfigV1::uses_events() const {
00069 return m_xtcObj->uses_events();
00070 }
00071
00072 const Pds::ClockTime& ConfigV1::duration() const { return _duration; }
00073
00074 uint32_t ConfigV1::npvControls() const {
00075 return m_xtcObj->npvControls();
00076 }
00077
00078
00079 uint32_t ConfigV1::npvMonitors() const {
00080 return m_xtcObj->npvMonitors();
00081 }
00082
00083 ndarray<const Psana::ControlData::PVControl, 1> ConfigV1::pvControls() const { return _pvControls_ndarray_storage_; }
00084 ndarray<const Psana::ControlData::PVMonitor, 1> ConfigV1::pvMonitors() const { return _pvMonitors_ndarray_storage_; }
00085 ConfigV2::ConfigV2(const boost::shared_ptr<const XtcType>& xtcPtr)
00086 : Psana::ControlData::ConfigV2()
00087 , m_xtcObj(xtcPtr)
00088 , _duration(xtcPtr->duration())
00089 {
00090 {
00091 typedef ndarray<Psana::ControlData::PVControl, 1> NDArray;
00092 typedef ndarray<const Pds::ControlData::PVControl, 1> XtcNDArray;
00093 const XtcNDArray& xtc_ndarr = xtcPtr->pvControls();
00094 _pvControls_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00095 NDArray::iterator out = _pvControls_ndarray_storage_.begin();
00096 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00097 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00098 }
00099 }
00100 {
00101 typedef ndarray<Psana::ControlData::PVMonitor, 1> NDArray;
00102 typedef ndarray<const Pds::ControlData::PVMonitor, 1> XtcNDArray;
00103 const XtcNDArray& xtc_ndarr = xtcPtr->pvMonitors();
00104 _pvMonitors_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00105 NDArray::iterator out = _pvMonitors_ndarray_storage_.begin();
00106 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00107 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00108 }
00109 }
00110 {
00111 typedef ndarray<Psana::ControlData::PVLabel, 1> NDArray;
00112 typedef ndarray<const Pds::ControlData::PVLabel, 1> XtcNDArray;
00113 const XtcNDArray& xtc_ndarr = xtcPtr->pvLabels();
00114 _pvLabels_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00115 NDArray::iterator out = _pvLabels_ndarray_storage_.begin();
00116 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00117 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00118 }
00119 }
00120 }
00121 ConfigV2::~ConfigV2()
00122 {
00123 }
00124
00125
00126 uint32_t ConfigV2::events() const {
00127 return m_xtcObj->events();
00128 }
00129
00130
00131 uint8_t ConfigV2::uses_duration() const {
00132 return m_xtcObj->uses_duration();
00133 }
00134
00135
00136 uint8_t ConfigV2::uses_events() const {
00137 return m_xtcObj->uses_events();
00138 }
00139
00140 const Pds::ClockTime& ConfigV2::duration() const { return _duration; }
00141
00142 uint32_t ConfigV2::npvControls() const {
00143 return m_xtcObj->npvControls();
00144 }
00145
00146
00147 uint32_t ConfigV2::npvMonitors() const {
00148 return m_xtcObj->npvMonitors();
00149 }
00150
00151
00152 uint32_t ConfigV2::npvLabels() const {
00153 return m_xtcObj->npvLabels();
00154 }
00155
00156 ndarray<const Psana::ControlData::PVControl, 1> ConfigV2::pvControls() const { return _pvControls_ndarray_storage_; }
00157 ndarray<const Psana::ControlData::PVMonitor, 1> ConfigV2::pvMonitors() const { return _pvMonitors_ndarray_storage_; }
00158 ndarray<const Psana::ControlData::PVLabel, 1> ConfigV2::pvLabels() const { return _pvLabels_ndarray_storage_; }
00159 ConfigV3::ConfigV3(const boost::shared_ptr<const XtcType>& xtcPtr)
00160 : Psana::ControlData::ConfigV3()
00161 , m_xtcObj(xtcPtr)
00162 , _duration(xtcPtr->duration())
00163 {
00164 {
00165 typedef ndarray<Psana::ControlData::PVControl, 1> NDArray;
00166 typedef ndarray<const Pds::ControlData::PVControl, 1> XtcNDArray;
00167 const XtcNDArray& xtc_ndarr = xtcPtr->pvControls();
00168 _pvControls_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00169 NDArray::iterator out = _pvControls_ndarray_storage_.begin();
00170 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00171 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00172 }
00173 }
00174 {
00175 typedef ndarray<Psana::ControlData::PVMonitor, 1> NDArray;
00176 typedef ndarray<const Pds::ControlData::PVMonitor, 1> XtcNDArray;
00177 const XtcNDArray& xtc_ndarr = xtcPtr->pvMonitors();
00178 _pvMonitors_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00179 NDArray::iterator out = _pvMonitors_ndarray_storage_.begin();
00180 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00181 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00182 }
00183 }
00184 {
00185 typedef ndarray<Psana::ControlData::PVLabel, 1> NDArray;
00186 typedef ndarray<const Pds::ControlData::PVLabel, 1> XtcNDArray;
00187 const XtcNDArray& xtc_ndarr = xtcPtr->pvLabels();
00188 _pvLabels_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00189 NDArray::iterator out = _pvLabels_ndarray_storage_.begin();
00190 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00191 *out = psddl_pds2psana::ControlData::pds_to_psana(*it);
00192 }
00193 }
00194 }
00195 ConfigV3::~ConfigV3()
00196 {
00197 }
00198
00199
00200 uint32_t ConfigV3::events() const {
00201 return m_xtcObj->events();
00202 }
00203
00204
00205 uint8_t ConfigV3::uses_l3t_events() const {
00206 return m_xtcObj->uses_l3t_events();
00207 }
00208
00209
00210 uint8_t ConfigV3::uses_duration() const {
00211 return m_xtcObj->uses_duration();
00212 }
00213
00214
00215 uint8_t ConfigV3::uses_events() const {
00216 return m_xtcObj->uses_events();
00217 }
00218
00219 const Pds::ClockTime& ConfigV3::duration() const { return _duration; }
00220
00221 uint32_t ConfigV3::npvControls() const {
00222 return m_xtcObj->npvControls();
00223 }
00224
00225
00226 uint32_t ConfigV3::npvMonitors() const {
00227 return m_xtcObj->npvMonitors();
00228 }
00229
00230
00231 uint32_t ConfigV3::npvLabels() const {
00232 return m_xtcObj->npvLabels();
00233 }
00234
00235 ndarray<const Psana::ControlData::PVControl, 1> ConfigV3::pvControls() const { return _pvControls_ndarray_storage_; }
00236 ndarray<const Psana::ControlData::PVMonitor, 1> ConfigV3::pvMonitors() const { return _pvMonitors_ndarray_storage_; }
00237 ndarray<const Psana::ControlData::PVLabel, 1> ConfigV3::pvLabels() const { return _pvLabels_ndarray_storage_; }
00238 }
00239 }