+ /** true if any content was missing when read() was last called on this SPL */
+ bool _missing;
+};
+
+
+class SignalSPL : public SPL
+{
+public:
+ enum class Change {
+ NAME,
+ CONTENT,
+ };
+
+ SignalSPL () {}
+
+ SignalSPL (std::string name)
+ : SPL (name)
+ {}
+
+ void set_name (std::string name) {
+ SPL::set_name (name);
+ Changed(Change::NAME);
+ }
+
+ void add(SPLEntry e) {
+ SPL::add(e);
+ Changed(Change::CONTENT);
+ }
+
+ void remove(std::size_t index) {
+ SPL::remove(index);
+ Changed(Change::CONTENT);
+ }
+
+ void swap(size_t a, size_t b) {
+ SPL::swap(a, b);
+ Changed(Change::CONTENT);
+ }
+
+ boost::signals2::signal<void (Change)> Changed;