Program Listing for File standardField.h

Return to documentation for file (src/pv/standardField.h)

/* standardField.h */
/*
 * Copyright information and license terms for this software can be
 * found in the file LICENSE that is included with the distribution
 */
#ifndef STANDARDFIELD_H
#define STANDARDFIELD_H

#include <string>
#include <stdexcept>

#include <pv/pvIntrospect.h>

#include <shareLib.h>

namespace epics { namespace pvData {


class StandardField;
typedef std::tr1::shared_ptr<StandardField> StandardFieldPtr;

class epicsShareClass StandardField {
    static void once(void*);
public:
    static const StandardFieldPtr& getStandardField();
    ~StandardField();
    StructureConstPtr scalar(ScalarType type,std::string const & properties);
    StructureConstPtr regUnion(
        UnionConstPtr const & punion,
        std::string const & properties);
    StructureConstPtr variantUnion(std::string const & properties);
    StructureConstPtr scalarArray(ScalarType elementType, std::string const & properties);
    StructureConstPtr structureArray(
        StructureConstPtr const & structure,
        std::string const & properties);
    StructureConstPtr unionArray(
        UnionConstPtr const & punion,
        std::string const & properties);
    StructureConstPtr enumerated();
    StructureConstPtr enumerated(std::string const & properties);
    inline const StructureConstPtr& alarm() const { return alarmField; }
    inline const StructureConstPtr& timeStamp() const { return timeStampField; }
    inline const StructureConstPtr& display() const { return displayField; }
    inline const StructureConstPtr& control() const { return controlField; }
    inline const StructureConstPtr& booleanAlarm() const { return booleanAlarmField; }
    inline const StructureConstPtr& byteAlarm() const { return byteAlarmField; }
    inline const StructureConstPtr& ubyteAlarm() const { return ubyteAlarmField; }
    inline const StructureConstPtr& shortAlarm() const { return shortAlarmField; }
    inline const StructureConstPtr& ushortAlarm() const { return ushortAlarmField; }
    inline const StructureConstPtr& intAlarm() const { return intAlarmField; }
    inline const StructureConstPtr& uintAlarm() const { return uintAlarmField; }
    inline const StructureConstPtr& longAlarm() const { return longAlarmField; }
    inline const StructureConstPtr& ulongAlarm() const { return ulongAlarmField; }
    inline const StructureConstPtr& floatAlarm() const { return floatAlarmField; }
    inline const StructureConstPtr& doubleAlarm() const { return doubleAlarmField; }
    inline const StructureConstPtr& enumeratedAlarm() const { return enumeratedAlarmField; }
private:
    StandardField();
    StructureConstPtr createProperties(
        std::string id,FieldConstPtr field,std::string properties);
    const FieldCreatePtr fieldCreate;
    const std::string notImplemented;
    const std::string valueFieldName;
    const StructureConstPtr alarmField;
    const StructureConstPtr timeStampField;
    const StructureConstPtr displayField;
    const StructureConstPtr controlField;
    const StructureConstPtr booleanAlarmField;
    const StructureConstPtr byteAlarmField;
    const StructureConstPtr shortAlarmField;
    const StructureConstPtr intAlarmField;
    const StructureConstPtr longAlarmField;
    const StructureConstPtr ubyteAlarmField;
    const StructureConstPtr ushortAlarmField;
    const StructureConstPtr uintAlarmField;
    const StructureConstPtr ulongAlarmField;
    const StructureConstPtr floatAlarmField;
    const StructureConstPtr doubleAlarmField;
    const StructureConstPtr enumeratedAlarmField;
};

FORCE_INLINE const StandardFieldPtr& getStandardField() {
    return StandardField::getStandardField();
}

}}
#endif  /* STANDARDFIELD_H */