Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type > Struct Template Reference

#include <dart_wrappable.h>

Public Types

using FfiType = DartWrappable *
 

Static Public Member Functions

static Dart_Handle ToDart (DartWrappable *val)
 
static void SetReturnValue (Dart_NativeArguments args, DartWrappable *val, bool auto_scope=true)
 
static TFromDart (Dart_Handle handle)
 
static TFromArguments (Dart_NativeArguments args, int index, Dart_Handle &exception, bool auto_scope=true)
 
static TFromFfi (FfiType val)
 
static FfiType ToFfi (T *val)
 
static const char * GetFfiRepresentation ()
 
static const char * GetDartRepresentation ()
 
static bool AllowedInLeafCall ()
 

Static Public Attributes

static constexpr const char * kFfiRepresentation = "Pointer"
 
static constexpr const char * kDartRepresentation = "Pointer"
 
static constexpr bool kAllowedInLeafCall = true
 

Detailed Description

template<typename T>
struct tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >

Definition at line 92 of file dart_wrappable.h.

Member Typedef Documentation

◆ FfiType

template<typename T >
using tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::FfiType = DartWrappable*

Definition at line 96 of file dart_wrappable.h.

Member Function Documentation

◆ AllowedInLeafCall()

template<typename T >
static bool tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::AllowedInLeafCall ( )
inlinestatic

◆ FromArguments()

template<typename T >
static T * tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::FromArguments ( Dart_NativeArguments  args,
int  index,
Dart_Handle exception,
bool  auto_scope = true 
)
inlinestatic

Definition at line 139 of file dart_wrappable.h.

142 {
143 // TODO(abarth): We're missing a type check.
144 return static_cast<T*>(
146 }
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
#define T
static DartWrappable * FromArguments(Dart_NativeArguments args, int index, Dart_Handle &exception)

◆ FromDart()

template<typename T >
static T * tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::FromDart ( Dart_Handle  handle)
inlinestatic

Definition at line 134 of file dart_wrappable.h.

134 {
135 // TODO(abarth): We're missing a type check.
136 return static_cast<T*>(DartConverterWrappable::FromDart(handle));
137 }
static DartWrappable * FromDart(Dart_Handle handle)

◆ FromFfi()

template<typename T >
static T * tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::FromFfi ( FfiType  val)
inlinestatic

Definition at line 148 of file dart_wrappable.h.

148{ return static_cast<T*>(val); }

◆ GetDartRepresentation()

template<typename T >
static const char * tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::GetDartRepresentation ( )
inlinestatic

◆ GetFfiRepresentation()

template<typename T >
static const char * tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::GetFfiRepresentation ( )
inlinestatic

◆ SetReturnValue()

template<typename T >
static void tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::SetReturnValue ( Dart_NativeArguments  args,
DartWrappable val,
bool  auto_scope = true 
)
inlinestatic

Definition at line 116 of file dart_wrappable.h.

118 {
119 if (!val) {
121 return;
122 } else if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) {
123 auto strong_handle = Dart_HandleFromWeakPersistent(wrapper);
124 if (!Dart_IsNull(strong_handle)) {
125 Dart_SetReturnValue(args, strong_handle);
126 return;
127 }
128 // After the weak referenced object has been GCed, the handle points to
129 // Dart_Null(). Fall through create a new wrapper object.
130 }
131 Dart_SetReturnValue(args, val->CreateDartWrapper(DartState::Current()));
132 }
static DartState * Current()
Definition dart_state.cc:56
DART_EXPORT Dart_Handle Dart_Null(void)
DART_EXPORT void Dart_SetReturnValue(Dart_NativeArguments args, Dart_Handle retval)
DART_EXPORT bool Dart_IsNull(Dart_Handle object)
struct _Dart_WeakPersistentHandle * Dart_WeakPersistentHandle
Definition dart_api.h:260
DART_EXPORT Dart_Handle Dart_HandleFromWeakPersistent(Dart_WeakPersistentHandle object)

◆ ToDart()

template<typename T >
static Dart_Handle tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::ToDart ( DartWrappable val)
inlinestatic

Definition at line 101 of file dart_wrappable.h.

101 {
102 if (!val) {
103 return Dart_Null();
104 }
105 if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) {
106 auto strong_handle = Dart_HandleFromWeakPersistent(wrapper);
107 if (!Dart_IsNull(strong_handle)) {
108 return strong_handle;
109 }
110 // After the weak referenced object has been GCed, the handle points to
111 // Dart_Null(). Fall through create a new wrapper object.
112 }
113 return val->CreateDartWrapper(DartState::Current());
114 }

◆ ToFfi()

template<typename T >
static FfiType tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::ToFfi ( T val)
inlinestatic

Definition at line 149 of file dart_wrappable.h.

149{ return val; }

Member Data Documentation

◆ kAllowedInLeafCall

template<typename T >
constexpr bool tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::kAllowedInLeafCall = true
staticconstexpr

Definition at line 99 of file dart_wrappable.h.

◆ kDartRepresentation

template<typename T >
constexpr const char* tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::kDartRepresentation = "Pointer"
staticconstexpr

Definition at line 98 of file dart_wrappable.h.

◆ kFfiRepresentation

template<typename T >
constexpr const char* tonic::DartConverter< T *, typename std::enable_if< std::is_convertible< T *, const DartWrappable * >::value >::type >::kFfiRepresentation = "Pointer"
staticconstexpr

Definition at line 97 of file dart_wrappable.h.


The documentation for this struct was generated from the following file: