#include <pv/data/decoderstack.h>
#include <pv/data/decode/decoder.h>
+#include <pv/prop/enum.h>
#include <pv/prop/int.h>
#include <pv/prop/string.h>
using boost::bind;
using boost::none;
using boost::shared_ptr;
+using std::make_pair;
using std::map;
+using std::pair;
using std::string;
+using std::vector;
namespace pv {
namespace prop {
shared_ptr<Property> prop;
- if (g_variant_is_of_type(opt->def, G_VARIANT_TYPE("x")))
+ if (opt->values)
+ prop = bind_enum(name, opt, getter, setter);
+ else if (g_variant_is_of_type(opt->def, G_VARIANT_TYPE("x")))
prop = shared_ptr<Property>(
new Int(name, "", none, getter, setter));
else if (g_variant_is_of_type(opt->def, G_VARIANT_TYPE("s")))
}
}
+shared_ptr<Property> DecoderOptions::bind_enum(
+ const QString &name, const srd_decoder_option *option,
+ Property::Getter getter, Property::Setter setter)
+{
+ vector< pair<GVariant*, QString> > values;
+ for (GSList *l = option->values; l; l = l->next) {
+ GVariant *const var = (GVariant*)l->data;
+ assert(var);
+ values.push_back(make_pair(var, print_gvariant(var)));
+ }
+
+ return shared_ptr<Property>(new Enum(name, values, getter, setter));
+}
+
GVariant* DecoderOptions::getter(const char *id)
{
GVariant *val = NULL;
#include "binding.h"
+#include <pv/prop/property.h>
+
+struct srd_decoder_option;
+
namespace pv {
namespace data {
boost::shared_ptr<pv::data::decode::Decoder> decoder);
private:
+ static boost::shared_ptr<Property> bind_enum(const QString &name,
+ const srd_decoder_option *option,
+ Property::Getter getter, Property::Setter setter);
+
GVariant* getter(const char *id);
void setter(const char *id, GVariant *value);
${PROJECT_SOURCE_DIR}/pv/device/file.cpp
${PROJECT_SOURCE_DIR}/pv/device/inputfile.cpp
${PROJECT_SOURCE_DIR}/pv/device/sessionfile.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/enum.cpp
${PROJECT_SOURCE_DIR}/pv/prop/int.cpp
${PROJECT_SOURCE_DIR}/pv/prop/property.cpp
${PROJECT_SOURCE_DIR}/pv/prop/string.cpp
set(pulseview_TEST_HEADERS
${PROJECT_SOURCE_DIR}/pv/sigsession.h
${PROJECT_SOURCE_DIR}/pv/device/devinst.h
+ ${PROJECT_SOURCE_DIR}/pv/prop/enum.h
${PROJECT_SOURCE_DIR}/pv/prop/int.h
${PROJECT_SOURCE_DIR}/pv/prop/property.h
${PROJECT_SOURCE_DIR}/pv/prop/string.h