summaryrefslogtreecommitdiff
path: root/misc/swig/callback/callback.h
diff options
context:
space:
mode:
Diffstat (limited to 'misc/swig/callback/callback.h')
-rw-r--r--misc/swig/callback/callback.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/misc/swig/callback/callback.h b/misc/swig/callback/callback.h
new file mode 100644
index 000000000..80232a8b3
--- /dev/null
+++ b/misc/swig/callback/callback.h
@@ -0,0 +1,24 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+class Callback {
+public:
+ virtual ~Callback() { }
+ virtual std::string run() { return "Callback::run"; }
+};
+
+class Caller {
+private:
+ Callback *callback_;
+public:
+ Caller(): callback_(0) { }
+ ~Caller() { delCallback(); }
+ void delCallback() { delete callback_; callback_ = 0; }
+ void setCallback(Callback *cb) { delCallback(); callback_ = cb; }
+ std::string call() {
+ if (callback_ != 0)
+ return callback_->run();
+ return "";
+ }
+};