+#include <forb.h>
+#include "test_obj.h"
+#define WVTEST_CONFIGURED
+#include <wvtest.h>
+#include <forb/executor.h>
+#include <forb/object.h>
+#include <forb/iop.h>
+
+static CORBA_long add(test_obj obj, CORBA_long val, CORBA_Environment *ev)
+{
+ int to_add = (intptr_t)forb_object_instance_data(obj);
+ return val + to_add;
+}
+
+static CORBA_long add_indirect(test_obj obj, test_obj indirect_obj, CORBA_long val, CORBA_Environment *ev)
+{
+ return test_obj_add(indirect_obj, val, ev);
+}
+
+static const struct forb_test_obj_impl test_obj_impl = {
+ .add = add,
+ .add_indirect = add_indirect,
+};
+
+
+void *executor_thread(void *arg)
+{
+ forb_executor_t *executor = arg;
+ forb_executor_run(executor);
+ return NULL;
+}
+
+int forb_main(forb_orb orb, int argc, char *argv[])
+{
+ test_obj testobj;
+
+ testobj = forb_test_obj_new(orb, &test_obj_impl, (void*)1);
+ if (!testobj)
+ return -1;
+ forb_execute_object(testobj);
+ return 0;
+}