bindings: Add Session::filename() and corresponding SWIG attribute.
diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp
index 9bce464..1747bdf 100644
--- a/bindings/cxx/classes.cpp
+++ b/bindings/cxx/classes.cpp
@@ -1071,6 +1071,11 @@
 	_trigger = trigger;
 }
 
+string Session::filename()
+{
+	return _filename;
+}
+
 Packet::Packet(shared_ptr<Device> device,
 	const struct sr_datafeed_packet *structure) :
 	UserOwned(structure),
diff --git a/bindings/cxx/include/libsigrok/libsigrok.hpp b/bindings/cxx/include/libsigrok/libsigrok.hpp
index 1936d4d..3e49bd5 100644
--- a/bindings/cxx/include/libsigrok/libsigrok.hpp
+++ b/bindings/cxx/include/libsigrok/libsigrok.hpp
@@ -672,6 +672,8 @@
 	/** 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);
diff --git a/bindings/swig/classes.i b/bindings/swig/classes.i
index f4ee3ec..b688a85 100644
--- a/bindings/swig/classes.i
+++ b/bindings/swig/classes.i
@@ -257,6 +257,8 @@
 %attributestring(sigrok::Session,
     std::shared_ptr<sigrok::Trigger>, trigger, trigger, set_trigger);
 
+%attributestring(sigrok::Session, std::string, filename, filename);
+
 %attribute(sigrok::Packet,
     const sigrok::PacketType *, type, type);
 %attributestring(sigrok::Packet,