Index: ppapi/cpp/dev/to_c_type_converter_dev.h |
diff --git a/ppapi/cpp/dev/to_c_type_converter_dev.h b/ppapi/cpp/dev/to_c_type_converter_dev.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7f3d8479d7f2b594418a5a7a0119b2b8d61b73df |
--- /dev/null |
+++ b/ppapi/cpp/dev/to_c_type_converter_dev.h |
@@ -0,0 +1,109 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef PPAPI_CPP_DEV_TO_C_TYPE_CONVERTER_DEV_H_ |
+#define PPAPI_CPP_DEV_TO_C_TYPE_CONVERTER_DEV_H_ |
+ |
+#include <string> |
+ |
+#include "ppapi/c/pp_var.h" |
+#include "ppapi/cpp/dev/memory_dev.h" |
+#include "ppapi/cpp/dev/optional_dev.h" |
+#include "ppapi/cpp/logging.h" |
+#include "ppapi/cpp/var.h" |
+ |
+namespace pp { |
+namespace internal { |
+ |
+template <class T> |
+class ToCTypeConverter { |
+ public: |
+ explicit ToCTypeConverter(const T& object) |
+ : wrapper_(object) { |
+ } |
+ |
+ ~ToCTypeConverter() { |
+ } |
+ |
+ const typename T::CInputType GetArg() const { |
+ return wrapper_.ToStruct(); |
+ } |
+ |
+ private: |
+ // Disallow copying and assignment. |
+ ToCTypeConverter(const ToCTypeConverter<T>&); |
+ ToCTypeConverter<T>& operator=(const ToCTypeConverter<T>&); |
+ |
+ const T& wrapper_; |
+}; |
+ |
+template <> |
+class ToCTypeConverter<std::string> { |
+ public: |
+ explicit ToCTypeConverter(const std::string& object) |
+ : wrapper_(object) { |
+ } |
+ |
+ ~ToCTypeConverter() { |
+ } |
+ |
+ const PP_Var& GetArg() const { return wrapper_.ToVar(); } |
+ |
+ private: |
+ // Disallow copying and assignment. |
+ ToCTypeConverter(const ToCTypeConverter<std::string>&); |
+ ToCTypeConverter<std::string>& operator=( |
+ const ToCTypeConverter<std::string>&); |
+ |
+ StringWrapper wrapper_; |
+}; |
+ |
+template <> |
+class ToCTypeConverter<double> { |
+ public: |
+ explicit ToCTypeConverter(double object) |
+ : storage_(object) { |
+ } |
+ |
+ ~ToCTypeConverter() { |
+ } |
+ |
+ double GetArg() const { return storage_; } |
+ |
+ private: |
+ // Disallow copying and assignment. |
+ ToCTypeConverter(const ToCTypeConverter<double>&); |
+ ToCTypeConverter<double>& operator=(const ToCTypeConverter<double>&); |
+ |
+ double storage_; |
+}; |
+ |
+template <class T> |
+class ToCTypeConverter<Optional<T> > { |
+ public: |
+ typedef typename Optional<T>::CType ArgType; |
+ explicit ToCTypeConverter(const Optional<T>& object) |
+ : wrapper_(object) { |
+ } |
+ |
+ ~ToCTypeConverter() { |
+ } |
+ |
+ ArgType GetArg() const { |
+ return wrapper_.ToCType(); |
+ } |
+ |
+ private: |
+ // Disallow copying and assignment. |
+ ToCTypeConverter(const ToCTypeConverter<Optional<T> >&); |
+ ToCTypeConverter<Optional<T> >& operator=( |
+ const ToCTypeConverter<Optional<T> >&); |
+ |
+ const Optional<T>& wrapper_; |
+}; |
+ |
+} // namespace internal |
+} // namespace pp |
+ |
+#endif // PPAPI_CPP_DEV_TO_C_TYPE_CONVERTER_DEV_H_ |