normativeTypesCPP 6.0.2
ntfield.h
Go to the documentation of this file.
1/* ntfield.h */
2/*
3 * Copyright information and license terms for this software can be
4 * found in the file LICENSE that is included with the distribution
5 */
6#ifndef NTFIELD_H
7#define NTFIELD_H
8
9#include <cstdarg>
10
11#ifdef epicsExportSharedSymbols
12# define ntfieldEpicsExportSharedSymbols
13# undef epicsExportSharedSymbols
14#endif
15
16#include <pv/standardField.h>
17#include <pv/standardPVField.h>
18#include <pv/alarm.h>
19#include <pv/pvAlarm.h>
20#include <pv/timeStamp.h>
21#include <pv/pvTimeStamp.h>
22#include <pv/sharedVector.h>
23
24#ifdef ntfieldEpicsExportSharedSymbols
25# define epicsExportSharedSymbols
26# undef ntfieldEpicsExportSharedSymbols
27#endif
28
29#include <shareLib.h>
30
31namespace epics { namespace nt {
32
33struct Result;
34
35class NTField;
36typedef std::tr1::shared_ptr<NTField> NTFieldPtr;
37
38class PVNTField;
39typedef std::tr1::shared_ptr<PVNTField> PVNTFieldPtr;
40
47class epicsShareClass NTField {
48public:
54 static NTFieldPtr get();
59
65 bool isEnumerated(epics::pvData::FieldConstPtr const & field);
66
72 bool isTimeStamp(epics::pvData::FieldConstPtr const & field);
73
79 bool isAlarm(epics::pvData::FieldConstPtr const & field);
80
86 bool isDisplay(epics::pvData::FieldConstPtr const & field);
87
93 bool isAlarmLimit(epics::pvData::FieldConstPtr const & field);
94
100 bool isControl(epics::pvData::FieldConstPtr const & field);
101
106 epics::pvData::StructureConstPtr createEnumerated();
107
112 epics::pvData::StructureConstPtr createTimeStamp();
113
118 epics::pvData::StructureConstPtr createAlarm();
119
124 epics::pvData::StructureConstPtr createDisplay();
125
130 epics::pvData::StructureConstPtr createControl();
131
136 epics::pvData::StructureArrayConstPtr createEnumeratedArray();
137
142 epics::pvData::StructureArrayConstPtr createTimeStampArray();
143
148 epics::pvData::StructureArrayConstPtr createAlarmArray();
149
150private:
151 NTField();
152 epics::pvData::FieldCreatePtr fieldCreate;
153 epics::pvData::StandardFieldPtr standardField;
154
155 // These won't be public just yet
156 static Result& isEnumerated(Result&);
157 static Result& isTimeStamp(Result&);
158 static Result& isAlarm(Result&);
159 static Result& isDisplay(Result&);
160 static Result& isAlarmLimit(Result&);
161 static Result& isControl(Result&);
162
163 friend class NTAggregate;
164 friend class NTAttribute;
165 friend class NTContinuum;
166 friend class NTEnum;
167 friend class NTHistogram;
168 friend class NTMatrix;
169 friend class NTMultiChannel;
170 friend class NTNameValue;
171 friend class NTNDArray;
172 friend class NTNDArrayAttribute;
173 friend class NTScalar;
174 friend class NTScalarArray;
176 friend class NTTable;
177 friend class NTUnion;
178};
179
186class epicsShareClass PVNTField {
187public:
193 static PVNTFieldPtr get();
194
199
205 epics::pvData::PVStructurePtr createEnumerated(
206 epics::pvData::StringArray const & choices);
207
212 epics::pvData::PVStructurePtr createTimeStamp();
213
218 epics::pvData::PVStructurePtr createAlarm();
219
224 epics::pvData::PVStructurePtr createDisplay();
225
230 epics::pvData::PVStructurePtr createControl();
231
236 epics::pvData::PVStructureArrayPtr createEnumeratedArray();
237
242 epics::pvData::PVStructureArrayPtr createTimeStampArray();
243
248 epics::pvData::PVStructureArrayPtr createAlarmArray();
249
250private:
251 PVNTField();
252 epics::pvData::PVDataCreatePtr pvDataCreate;
253 epics::pvData::StandardFieldPtr standardField;
254 epics::pvData::StandardPVFieldPtr standardPVField;
255 NTFieldPtr ntstructureField;
256};
257
258}}
259
260#endif /* NTFIELD_H */
Convenience Class for NTAggregate.
Convenience Class for NTAttribute.
Convenience Class for NTContinuum.
Convenience Class for NTEnum.
Definition ntenum.h:118
Convenience Class for introspection fields of a Normative Type.
Definition ntfield.h:47
bool isAlarm(epics::pvData::FieldConstPtr const &field)
bool isControl(epics::pvData::FieldConstPtr const &field)
bool isDisplay(epics::pvData::FieldConstPtr const &field)
bool isEnumerated(epics::pvData::FieldConstPtr const &field)
bool isAlarmLimit(epics::pvData::FieldConstPtr const &field)
POINTER_DEFINITIONS(NTField)
bool isTimeStamp(epics::pvData::FieldConstPtr const &field)
Convenience Class for NTHistogram.
Convenience Class for NTMatrix.
Definition ntmatrix.h:135
Convenience Class for NTMultiChannel.
Convenience Class for NTNDArrayAttribute.
Convenience Class for NTNDArray.
Definition ntndarray.h:129
Convenience Class for NTNameValue.
Convenience Class for NTScalarArray.
Convenience Class for NTScalarMultiChannel.
Convenience Class for NTScalar.
Definition ntscalar.h:145
Convenience Class for NTTable.
Definition nttable.h:138
Convenience Class for NTUnion.
Definition ntunion.h:127
Convenience Class for data fields of a Normative Type.
Definition ntfield.h:186
POINTER_DEFINITIONS(PVNTField)
std::tr1::shared_ptr< NTField > NTFieldPtr
Definition ntfield.h:36
std::tr1::shared_ptr< PVNTField > PVNTFieldPtr
Definition ntfield.h:39
Validation methods for NT types.
Definition validator.h:23