X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Finclude%2Flibsigrokcxx%2Flibsigrokcxx.hpp;h=b9e8a4f268288ff0c1b916d15e9e22b6f6eb7ece;hb=e2eaf8580aaa8869a694b3c6af4c7f832a752b31;hp=f96901f335ffbeef4be67262fbf428f895ab3ccb;hpb=8e2d6c9db788785466d61fdac4d8fdc1535bc20c;p=libsigrok.git diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index f96901f3..b9e8a4f2 100644 --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp @@ -232,6 +232,29 @@ protected: /** Type of log callback */ typedef function LogCallbackFunction; +/** Resource reader delegate. */ +class SR_API ResourceReader +{ +public: + ResourceReader() {} + virtual ~ResourceReader(); +private: + /** Resource open hook. */ + virtual void open(struct sr_resource *res, string name) = 0; + /** Resource close hook. */ + virtual void close(struct sr_resource *res) = 0; + /** Resource read hook. */ + virtual size_t read(const struct sr_resource *res, void *buf, size_t count) = 0; + + static SR_PRIV int open_callback(struct sr_resource *res, + const char *name, void *cb_data); + static SR_PRIV int close_callback(struct sr_resource *res, + void *cb_data); + static SR_PRIV ssize_t read_callback(const struct sr_resource *res, + void *buf, size_t count, void *cb_data); + friend class Context; +}; + /** The global libsigrok context */ class SR_API Context : public UserOwned { @@ -258,6 +281,9 @@ public: void set_log_callback(LogCallbackFunction callback); /** Set the log callback to the default handler. */ void set_log_callback_default(); + /** Install a delegate for reading resource files. + * @param reader The resource reader delegate, or nullptr to unset. */ + void set_resource_reader(ResourceReader *reader); /** Create a new session. */ shared_ptr create_session(); /** Create a new user device. */