#include <support/Value.h>
#include <support/StaticValue.h>
#include <support/SupportDefs.h>
#include <support/Context.h>
Go to the source code of this file.
Classes | |
class | BBinder |
Standard implementation of IBinder for a Binder object. More... | |
class | BnInterface |
This is the base implementation for a native (local) IInterface. More... | |
class | BpAtom |
This is the SAtom protocol implementation for a proxy interface. More... | |
class | BpInterface |
This is the base implementation for a remote IInterface. More... | |
struct | effect_action_def |
BBinder::HandleEffect() Helpers | |
These are helper functions for implementing BBinder::HandleEffect(). | |
enum | { B_ACTIONS_SORTED_BY_KEY = 0x00000001 } |
Flags for execute_effect(). More... | |
enum | { B_NO_ACTION = 0x00000000, B_INVOKE_ACTION = 0x00000001, B_GET_ACTION, B_PUT_ACTION } |
Flags for execute_effect(). More... | |
status_t _IMPEXP_SUPPORT | execute_effect (const sptr< IInterface > &target, const SValue &in, const SValue &inBindings, const SValue &outBindings, SValue *out, const effect_action_def *actions, size_t num_actions, uint32_t flags=0) |
Flags for execute_effect(). | |
Defines | |
#define | B_IMPLEMENT_META_INTERFACE(iname, descriptor, leftmostbase) |
B_IMPLEMENT_META_INTERFACE should be used in almost all cases. | |
#define | B_IMPLEMENT_META_INTERFACE_LOCAL(iname, descriptor, leftmostbase) |
B_IMPLEMENT_META_INTERFACE_LOCAL is used for [local] interfaces. | |
#define | B_IMPLEMENT_META_INTERFACE_NO_INSTANTIATE(iname, descriptor, leftmostbase) |
Use the B_IMPLEMENT_META_INTERFACE macro inside of your IInterface subclass's .cpp file to implement the Binder meta-API. |
|
Value: static BNS(::palmos::support::) sptr<BNS(::palmos::support::) IInterface> \ instantiate_proxy_ ## iname (const BNS(::palmos::support::)sptr<BNS(::palmos::support::) IBinder>& b) { \ return static_cast<leftmostbase*>(new Bp ## iname(b)); \ } \ B_IMPLEMENT_META_INTERFACE_NO_INSTANTIATE(iname, descriptor, leftmostbase) \
|
|
Value: static BNS(::palmos::support::) sptr<BNS(::palmos::support::) IInterface> \ instantiate_proxy_ ## iname (const BNS(::palmos::support::)sptr<BNS(::palmos::support::) IBinder>& b) { \ return NULL; \ } \ B_IMPLEMENT_META_INTERFACE_NO_INSTANTIATE(iname, descriptor, leftmostbase) \ (Local to one process and not callable by other languages.) |
|
Use the B_IMPLEMENT_META_INTERFACE macro inside of your IInterface subclass's .cpp file to implement the Binder meta-API. You will not normally use this, instead letting pidgen generate similar code from an IDL file. Note that you must have defined your remote proxy class (with an "Bp" prefix) before using the macro. B_IMPLEMENT_META_INTERFACE_NO_INSTANTIATE implements the internals of B_IMPLEMENT_META_INTERFACE, which is what should be used 99% of the time. B_IMPLEMENT_META_INTERFACE_LOCAL can be used for those cases what want binder functionality without the cross-process or multi-language support. (See documentation for the [local] attribute in PIDgen.) The leftmostbase casts are needed when the interface has multiple bases. Rather than have 2 macro versions, we just always insert the extra cast. In the case of single (or no) inheritance, the leftmostbase will be the same as I ## iname, which results in code like this: static_cast<IFoo*>(static_cast<IFoo*> blah)) |
|
Flags for execute_effect().
|
|
Flags for execute_effect().
|
|
Flags for execute_effect().
|