class SR_API Device : public Configurable
{
public:
- /** Description identifying this device. */
- virtual string description();
/** Vendor name for this device. */
string vendor();
/** Model name for this device. */
public ParentOwned<SessionDevice, Session, struct sr_dev_inst>,
public Device
{
- /** Description identifying this device. */
- string description();
protected:
SessionDevice(struct sr_dev_inst *sdi);
~SessionDevice();
/** Set trigger setting.
* @param trigger Trigger object to use. */
void set_trigger(shared_ptr<Trigger> trigger);
+ /** Get filename this session was loaded from. */
+ string filename();
protected:
Session(shared_ptr<Context> context);
Session(shared_ptr<Context> context, string filename);
public ParentOwned<InputDevice, Input, struct sr_dev_inst>,
public Device
{
-public:
- /** Description identifying this device. */
- string description();
protected:
InputDevice(shared_ptr<Input> input, struct sr_dev_inst *sdi);
~InputDevice();
};
/** Base class for objects which wrap an enumeration value from libsigrok */
-template <typename T> class SR_API EnumValue
+template <class Class, typename Enum> class SR_API EnumValue
{
public:
- /** The enum constant associated with this value. */
- T id() const { return _id; }
+ /** The integer constant associated with this value. */
+ int id() const
+ {
+ return static_cast<int>(_id);
+ }
/** The name associated with this value. */
- string name() const { return _name; }
+ string name() const
+ {
+ return _name;
+ }
+ /** Get value associated with a given integer constant. */
+ static const Class *get(int id)
+ {
+ auto key = static_cast<Enum>(id);
+ if (_values.find(key) == _values.end())
+ throw Error(SR_ERR_ARG);
+ return _values.at(key);
+ }
+ /** Get possible values. */
+ static std::vector<const Class *> values()
+ {
+ std::vector<const Class *> result;
+ for (auto entry : _values)
+ result.push_back(entry.second);
+ return result;
+ }
protected:
- EnumValue(T id, const char name[]) : _id(id), _name(name) {}
- ~EnumValue() {}
- const T _id;
+ EnumValue(Enum id, const char name[]) : _id(id), _name(name)
+ {
+ }
+ ~EnumValue()
+ {
+ }
+ static const std::map<const Enum, const Class * const> _values;
+ const Enum _id;
const string _name;
};