-%attribute(sigrok::Analog, int, num_samples, get_num_samples);
-%attribute(sigrok::Analog, const sigrok::Quantity *, mq, get_mq);
-%attribute(sigrok::Analog, const sigrok::Unit *, unit, get_unit);
-%attributeval(sigrok::Analog, std::vector<const sigrok::QuantityFlag *>, mq_flags, get_mq_flags);
+%attributestring(sigrok::Session, std::string, filename, filename);
+
+%attribute(sigrok::Packet,
+ const sigrok::PacketType *, type, type);
+
+%attributemap(Meta, map_ConfigKey_Variant, config, config);
+
+%attributevector(Analog,
+ std::vector<std::shared_ptr<sigrok::Channel> >, channels, channels);
+%attribute(sigrok::Analog, int, num_samples, num_samples);
+%attribute(sigrok::Analog, const sigrok::Quantity *, mq, mq);
+%attribute(sigrok::Analog, const sigrok::Unit *, unit, unit);
+%attributevector(Analog, std::vector<const sigrok::QuantityFlag *>, mq_flags, mq_flags);
+
+%include <libsigrokcxx/libsigrokcxx.hpp>
+
+%include "swig/enums.i"
+
+namespace sigrok {
+%include <libsigrokcxx/enums.hpp>
+}