19 #ifndef _MFORMS_BASE_H_
20 #define _MFORMS_BASE_H_
24 #include "base/threading.h"
27 # ifdef DECL_MFORMS_EXPORT
28 # define MFORMS_EXPORT __declspec(dllexport)
30 # define MFORMS_EXPORT __declspec(dllimport)
33 # define MFORMS_EXPORT
36 #if defined(__APPLE__) && !defined(MFORMS_STUB)
40 #define nil __DARWIN_NULL
41 #include <objc/objc-runtime.h>
44 #ifndef DOXYGEN_SHOULD_SKIP_THIS
53 virtual void set_managed();
54 void set_release_on_add();
56 bool release_on_add();
63 void set_destroying();
67 #if defined(__APPLE__) && !defined(MFORMS_STUB)
74 void set_data(
id data);
84 typedef void (*FreeDataFn)(
void*);
85 void set_data(
void *data, FreeDataFn free_fn = 0);
88 C* get_data()
const {
return reinterpret_cast<C*
>(_data); }
90 void *get_data_ptr()
const;
94 FreeDataFn _data_free_fn;
96 volatile mutable base::refcount_t _refcount;
98 Object(Object
const& o) {
throw std::logic_error(
"Copy c-tor unsupported in mforms::Object"); }
99 Object& operator= (Object
const& o) {
throw std::logic_error(
"Assignment operator not supported in mforms::Object");
return *
this; }
102 bool _release_on_add;
112 C* manage(C *obj,
bool release_on_add =
true)
116 obj->set_release_on_add();
121 #endif // !DOXYGEN_SHOULD_SKIP_THIS