Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: tonic/dart_converter_wtf.h

Issue 1244983003: Make mojo dart controller depend on tonic and get building without wtf (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tonic/dart_converter.h ('k') | tonic/dart_converter_wtf.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tonic/dart_converter_wtf.h
diff --git a/tonic/dart_converter.h b/tonic/dart_converter_wtf.h
similarity index 53%
copy from tonic/dart_converter.h
copy to tonic/dart_converter_wtf.h
index 47d9f8409d0468fe47ba819950a11769a6dc24a6..5a4874810410e39fe40c863d85f8a8fa2d34f382 100644
--- a/tonic/dart_converter.h
+++ b/tonic/dart_converter_wtf.h
@@ -2,180 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef SKY_ENGINE_TONIC_DART_CONVERTER_H_
-#define SKY_ENGINE_TONIC_DART_CONVERTER_H_
+#ifndef SKY_ENGINE_TONIC_DART_CONVERTER_WTF_H_
+#define SKY_ENGINE_TONIC_DART_CONVERTER_WTF_H_
#include <string>
-#include "tonic/dart_state.h"
+#include "sky/engine/wtf/text/StringUTF8Adaptor.h"
+#include "sky/engine/wtf/text/WTFString.h"
+#include "tonic/dart_converter.h"
#include "tonic/dart_string.h"
#include "tonic/dart_string_cache.h"
#include "tonic/dart_value.h"
-#include "sky/engine/wtf/text/StringUTF8Adaptor.h"
-#include "sky/engine/wtf/text/WTFString.h"
namespace blink {
-// DartConvert converts types back and forth from Sky to Dart. The template
-// parameter |T| determines what kind of type conversion to perform.
-template <typename T, typename Enable = void>
-struct DartConverter {
-};
-
-// This is to work around the fact that typedefs do not create new types. If you
-// have a typedef, and want it to use a different converter, specialize this
-// template and override the types here.
-// Ex:
-// typedef int ColorType; // Want to use a different converter.
-// class ColorConverterType {}; // Dummy type.
-// template<> struct DartConvertType<ColorConverterType> {
-// using ConverterType = ColorConverterType;
-// using ValueType = ColorType;
-// };
-template <typename T>
-struct DartConverterTypes {
- using ConverterType = T;
- using ValueType = T;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// Boolean
-
-template <>
-struct DartConverter<bool> {
- static Dart_Handle ToDart(bool val) { return Dart_NewBoolean(val); }
-
- static void SetReturnValue(Dart_NativeArguments args, bool val) {
- Dart_SetBooleanReturnValue(args, val);
- }
-
- static bool FromDart(Dart_Handle handle) {
- bool result = 0;
- Dart_BooleanValue(handle, &result);
- return result;
- }
-
- static bool FromArguments(Dart_NativeArguments args,
- int index,
- Dart_Handle& exception) {
- bool result = false;
- Dart_GetNativeBooleanArgument(args, index, &result);
- return result;
- }
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// Numbers
-
-template <typename T>
-struct DartConverterInteger {
- static Dart_Handle ToDart(T val) { return Dart_NewInteger(val); }
-
- static void SetReturnValue(Dart_NativeArguments args, T val) {
- Dart_SetIntegerReturnValue(args, val);
- }
-
- static T FromDart(Dart_Handle handle) {
- int64_t result = 0;
- Dart_IntegerToInt64(handle, &result);
- return static_cast<T>(result);
- }
-
- static T FromArguments(Dart_NativeArguments args,
- int index,
- Dart_Handle& exception) {
- int64_t result = 0;
- Dart_GetNativeIntegerArgument(args, index, &result);
- return static_cast<T>(result);
- }
-};
-
-template <>
-struct DartConverter<int> : public DartConverterInteger<int> {};
-
-template <>
-struct DartConverter<unsigned> : public DartConverterInteger<unsigned> {};
-
-template <>
-struct DartConverter<long long> : public DartConverterInteger<long long> {};
-
-template <>
-struct DartConverter<unsigned long long> {
- static Dart_Handle ToDart(unsigned long long val) {
- // FIXME: WebIDL unsigned long long is guaranteed to fit into 64-bit
- // unsigned,
- // so we need a dart API for constructing an integer from uint64_t.
- DCHECK(val <= 0x7fffffffffffffffLL);
- return Dart_NewInteger(static_cast<int64_t>(val));
- }
-
- static void SetReturnValue(Dart_NativeArguments args,
- unsigned long long val) {
- DCHECK(val <= 0x7fffffffffffffffLL);
- Dart_SetIntegerReturnValue(args, val);
- }
-
- static unsigned long long FromDart(Dart_Handle handle) {
- int64_t result = 0;
- Dart_IntegerToInt64(handle, &result);
- return result;
- }
-
- static unsigned long long FromArguments(Dart_NativeArguments args,
- int index,
- Dart_Handle& exception) {
- int64_t result = 0;
- Dart_GetNativeIntegerArgument(args, index, &result);
- return result;
- }
-};
-
-template <typename T>
-struct DartConverterFloatingPoint {
- static Dart_Handle ToDart(T val) { return Dart_NewDouble(val); }
-
- static void SetReturnValue(Dart_NativeArguments args, T val) {
- Dart_SetDoubleReturnValue(args, val);
- }
-
- static T FromDart(Dart_Handle handle) {
- double result = 0;
- Dart_DoubleValue(handle, &result);
- return result;
- }
-
- static T FromArguments(Dart_NativeArguments args,
- int index,
- Dart_Handle& exception) {
- double result = 0;
- Dart_GetNativeDoubleArgument(args, index, &result);
- return result;
- }
-};
-
-template <>
-struct DartConverter<float> : public DartConverterFloatingPoint<float> {};
-
-template <>
-struct DartConverter<double> : public DartConverterFloatingPoint<double> {};
-
-////////////////////////////////////////////////////////////////////////////////
-// Enums
-
-template <typename T>
-struct DartConverterEnum {
- static T FromArguments(Dart_NativeArguments args,
- int index,
- Dart_Handle& exception) {
- Dart_Handle enum_handle = Dart_GetNativeArgument(args, index);
- Dart_Handle index_handle =
- Dart_GetField(enum_handle, DartState::Current()->index_handle());
-
- uint64_t enum_index = 0;
- Dart_IntegerToUint64(index_handle, &enum_index);
- return static_cast<T>(enum_index);
- }
-};
-
////////////////////////////////////////////////////////////////////////////////
// Strings
@@ -358,26 +197,15 @@ Dart_Handle ToDart(const T& object) {
return DartConverter<T>::ToDart(object);
}
-////////////////////////////////////////////////////////////////////////////////
-// std::string support (slower, but more convienent for some clients)
-
-inline Dart_Handle StdStringToDart(const std::string& val) {
- return Dart_NewStringFromUTF8(reinterpret_cast<const uint8_t*>(val.data()),
- val.length());
-}
-
-inline std::string StdStringFromDart(Dart_Handle handle) {
- String string = StringFromDart(handle);
- StringUTF8Adaptor utf8(string);
- return std::string(utf8.data(), utf8.length());
-}
-
-
-// Alias Dart_NewStringFromCString for less typing.
-inline Dart_Handle ToDart(const char* val) {
- return Dart_NewStringFromCString(val);
-}
+template<typename T>
+struct DartConverter<RefPtr<T>> {
+ static Dart_Handle ToDart(RefPtr<T> val) {
+ return DartConverter<T*>::ToDart(val.get());
+ }
-} // namespace blink
+ static RefPtr<T> FromDart(Dart_Handle handle) {
+ return DartConverter<T*>::FromDart(handle);
+ }
+};
-#endif // SKY_ENGINE_TONIC_DART_CONVERTER_H_
+#endif // SKY_ENGINE_TONIC_DART_CONVERTER_WTF_H_
« no previous file with comments | « tonic/dart_converter.h ('k') | tonic/dart_converter_wtf.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698