123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #ifndef RUNTIME_INCLUDE_DART_NATIVE_API_H_
- #define RUNTIME_INCLUDE_DART_NATIVE_API_H_
- #include "dart_api.h"
- typedef enum {
- Dart_CObject_kNull = 0,
- Dart_CObject_kBool,
- Dart_CObject_kInt32,
- Dart_CObject_kInt64,
- Dart_CObject_kDouble,
- Dart_CObject_kString,
- Dart_CObject_kArray,
- Dart_CObject_kTypedData,
- Dart_CObject_kExternalTypedData,
- Dart_CObject_kSendPort,
- Dart_CObject_kCapability,
- Dart_CObject_kNativePointer,
- Dart_CObject_kUnsupported,
- Dart_CObject_kUnmodifiableExternalTypedData,
- Dart_CObject_kNumberOfTypes
- } Dart_CObject_Type;
- typedef struct _Dart_CObject {
- Dart_CObject_Type type;
- union {
- bool as_bool;
- int32_t as_int32;
- int64_t as_int64;
- double as_double;
- const char* as_string;
- struct {
- Dart_Port id;
- Dart_Port origin_id;
- } as_send_port;
- struct {
- int64_t id;
- } as_capability;
- struct {
- intptr_t length;
- struct _Dart_CObject** values;
- } as_array;
- struct {
- Dart_TypedData_Type type;
- intptr_t length;
- const uint8_t* values;
- } as_typed_data;
- struct {
- Dart_TypedData_Type type;
- intptr_t length;
- uint8_t* data;
- void* peer;
- Dart_HandleFinalizer callback;
- } as_external_typed_data;
- struct {
- intptr_t ptr;
- intptr_t size;
- Dart_HandleFinalizer callback;
- } as_native_pointer;
- } value;
- } Dart_CObject;
- DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject* message);
- DART_EXPORT bool Dart_PostInteger(Dart_Port port_id, int64_t message);
- typedef void (*Dart_NativeMessageHandler)(Dart_Port dest_port_id,
- Dart_CObject* message);
- DART_EXPORT Dart_Port Dart_NewNativePort(const char* name,
- Dart_NativeMessageHandler handler,
- bool handle_concurrently);
- DART_EXPORT bool Dart_CloseNativePort(Dart_Port native_port_id);
- DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_CompileAll(void);
- DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_FinalizeAllClasses(void);
- DART_EXPORT void* Dart_ExecuteInternalCommand(const char* command, void* arg);
- #endif
|