Index: mojo/public/tests/mojom/math_calculator.cc |
diff --git a/mojo/public/tests/mojom/math_calculator.cc b/mojo/public/tests/mojom/math_calculator.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c989b38dff8a10a6cc4c3591286a13581adcfba5 |
--- /dev/null |
+++ b/mojo/public/tests/mojom/math_calculator.cc |
@@ -0,0 +1,366 @@ |
+// Copyright 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. |
+ |
+#include "./math_calculator.h" |
+ |
+#include "mojo/public/bindings/lib/message_builder.h" |
+#include "./math_calculator_internal.h" |
+ |
+namespace math { |
+namespace { |
+ |
+#pragma pack(push, 1) |
+#if defined(__clang__) |
+#pragma clang diagnostic push |
+#pragma clang diagnostic ignored "-Wunused-private-field" |
+#endif |
+const uint32_t kCalculator_Clear_Name = 0; |
+class Calculator_Clear_Params { |
+ public: |
+ static Calculator_Clear_Params* New(mojo::Buffer* buf) { |
+ return new (buf->Allocate(sizeof(Calculator_Clear_Params))) |
+ Calculator_Clear_Params(); |
+ } |
+ |
+ |
+ |
+ |
+ |
+ private: |
+ friend class mojo::internal::ObjectTraits<Calculator_Clear_Params>; |
+ |
+ Calculator_Clear_Params() { |
+ _header_.num_bytes = sizeof(*this); |
+ _header_.num_fields = 3; |
+ } |
+ |
+ mojo::internal::StructHeader _header_; |
+ |
+}; |
+MOJO_COMPILE_ASSERT(sizeof(Calculator_Clear_Params) == 8, |
+ bad_sizeof_Calculator_Clear_Params); |
+ |
+const uint32_t kCalculator_Add_Name = 1; |
+class Calculator_Add_Params { |
+ public: |
+ static Calculator_Add_Params* New(mojo::Buffer* buf) { |
+ return new (buf->Allocate(sizeof(Calculator_Add_Params))) |
+ Calculator_Add_Params(); |
+ } |
+ |
+ void set_value(double value) { value_ = value; } |
+ |
+ double value() const { return value_; } |
+ |
+ private: |
+ friend class mojo::internal::ObjectTraits<Calculator_Add_Params>; |
+ |
+ Calculator_Add_Params() { |
+ _header_.num_bytes = sizeof(*this); |
+ _header_.num_fields = 3; |
+ } |
+ |
+ mojo::internal::StructHeader _header_; |
+ double value_; |
+}; |
+MOJO_COMPILE_ASSERT(sizeof(Calculator_Add_Params) == 16, |
+ bad_sizeof_Calculator_Add_Params); |
+ |
+const uint32_t kCalculator_Multiply_Name = 2; |
+class Calculator_Multiply_Params { |
+ public: |
+ static Calculator_Multiply_Params* New(mojo::Buffer* buf) { |
+ return new (buf->Allocate(sizeof(Calculator_Multiply_Params))) |
+ Calculator_Multiply_Params(); |
+ } |
+ |
+ void set_value(double value) { value_ = value; } |
+ |
+ double value() const { return value_; } |
+ |
+ private: |
+ friend class mojo::internal::ObjectTraits<Calculator_Multiply_Params>; |
+ |
+ Calculator_Multiply_Params() { |
+ _header_.num_bytes = sizeof(*this); |
+ _header_.num_fields = 3; |
+ } |
+ |
+ mojo::internal::StructHeader _header_; |
+ double value_; |
+}; |
+MOJO_COMPILE_ASSERT(sizeof(Calculator_Multiply_Params) == 16, |
+ bad_sizeof_Calculator_Multiply_Params); |
+ |
+const uint32_t kCalculatorUI_Output_Name = 0; |
+class CalculatorUI_Output_Params { |
+ public: |
+ static CalculatorUI_Output_Params* New(mojo::Buffer* buf) { |
+ return new (buf->Allocate(sizeof(CalculatorUI_Output_Params))) |
+ CalculatorUI_Output_Params(); |
+ } |
+ |
+ void set_value(double value) { value_ = value; } |
+ |
+ double value() const { return value_; } |
+ |
+ private: |
+ friend class mojo::internal::ObjectTraits<CalculatorUI_Output_Params>; |
+ |
+ CalculatorUI_Output_Params() { |
+ _header_.num_bytes = sizeof(*this); |
+ _header_.num_fields = 3; |
+ } |
+ |
+ mojo::internal::StructHeader _header_; |
+ double value_; |
+}; |
+MOJO_COMPILE_ASSERT(sizeof(CalculatorUI_Output_Params) == 16, |
+ bad_sizeof_CalculatorUI_Output_Params); |
+ |
+#if defined(__clang__) |
+#pragma clang diagnostic pop |
+#endif |
+#pragma pack(pop) |
+ |
+} // namespace |
+ |
+ |
+ |
+CalculatorProxy::CalculatorProxy(mojo::MessageReceiver* receiver) |
+ : receiver_(receiver) { |
+} |
+ |
+void CalculatorProxy::Clear() { |
+ size_t payload_size = |
+ mojo::internal::Align(sizeof(Calculator_Clear_Params)); |
+ |
+ |
+ mojo::MessageBuilder builder(kCalculator_Clear_Name, payload_size); |
+ |
+ Calculator_Clear_Params* params = |
+ Calculator_Clear_Params::New(builder.buffer()); |
+ |
+ |
+ |
+ mojo::Message message; |
+ mojo::internal::EncodePointersAndHandles(params, &message.handles); |
+ |
+ message.data = builder.Finish(); |
+ |
+ receiver_->Accept(&message); |
+} |
+ |
+ |
+void CalculatorProxy::Add(double value) { |
+ size_t payload_size = |
+ mojo::internal::Align(sizeof(Calculator_Add_Params)); |
+ |
+ |
+ mojo::MessageBuilder builder(kCalculator_Add_Name, payload_size); |
+ |
+ Calculator_Add_Params* params = |
+ Calculator_Add_Params::New(builder.buffer()); |
+ |
+ params->set_value(value); |
+ |
+ mojo::Message message; |
+ mojo::internal::EncodePointersAndHandles(params, &message.handles); |
+ |
+ message.data = builder.Finish(); |
+ |
+ receiver_->Accept(&message); |
+} |
+ |
+ |
+void CalculatorProxy::Multiply(double value) { |
+ size_t payload_size = |
+ mojo::internal::Align(sizeof(Calculator_Multiply_Params)); |
+ |
+ |
+ mojo::MessageBuilder builder(kCalculator_Multiply_Name, payload_size); |
+ |
+ Calculator_Multiply_Params* params = |
+ Calculator_Multiply_Params::New(builder.buffer()); |
+ |
+ params->set_value(value); |
+ |
+ mojo::Message message; |
+ mojo::internal::EncodePointersAndHandles(params, &message.handles); |
+ |
+ message.data = builder.Finish(); |
+ |
+ receiver_->Accept(&message); |
+} |
+ |
+ |
+bool CalculatorStub::Accept(mojo::Message* message) { |
+ switch (message->data->header.name) { |
+ case kCalculator_Clear_Name: { |
+ Calculator_Clear_Params* params = |
+ reinterpret_cast<Calculator_Clear_Params*>( |
+ message->data->payload); |
+ |
+ if (!mojo::internal::DecodePointersAndHandles(params, *message)) |
+ return false; |
+ Clear(); |
+ break; |
+ } |
+ |
+ case kCalculator_Add_Name: { |
+ Calculator_Add_Params* params = |
+ reinterpret_cast<Calculator_Add_Params*>( |
+ message->data->payload); |
+ |
+ if (!mojo::internal::DecodePointersAndHandles(params, *message)) |
+ return false; |
+ Add(params->value()); |
+ break; |
+ } |
+ |
+ case kCalculator_Multiply_Name: { |
+ Calculator_Multiply_Params* params = |
+ reinterpret_cast<Calculator_Multiply_Params*>( |
+ message->data->payload); |
+ |
+ if (!mojo::internal::DecodePointersAndHandles(params, *message)) |
+ return false; |
+ Multiply(params->value()); |
+ break; |
+ } |
+ |
+ } |
+ return true; |
+} |
+ |
+ |
+CalculatorUIProxy::CalculatorUIProxy(mojo::MessageReceiver* receiver) |
+ : receiver_(receiver) { |
+} |
+ |
+void CalculatorUIProxy::Output(double value) { |
+ size_t payload_size = |
+ mojo::internal::Align(sizeof(CalculatorUI_Output_Params)); |
+ |
+ |
+ mojo::MessageBuilder builder(kCalculatorUI_Output_Name, payload_size); |
+ |
+ CalculatorUI_Output_Params* params = |
+ CalculatorUI_Output_Params::New(builder.buffer()); |
+ |
+ params->set_value(value); |
+ |
+ mojo::Message message; |
+ mojo::internal::EncodePointersAndHandles(params, &message.handles); |
+ |
+ message.data = builder.Finish(); |
+ |
+ receiver_->Accept(&message); |
+} |
+ |
+ |
+bool CalculatorUIStub::Accept(mojo::Message* message) { |
+ switch (message->data->header.name) { |
+ case kCalculatorUI_Output_Name: { |
+ CalculatorUI_Output_Params* params = |
+ reinterpret_cast<CalculatorUI_Output_Params*>( |
+ message->data->payload); |
+ |
+ if (!mojo::internal::DecodePointersAndHandles(params, *message)) |
+ return false; |
+ Output(params->value()); |
+ break; |
+ } |
+ |
+ } |
+ return true; |
+} |
+ |
+ |
+} // namespace math |
+ |
+namespace mojo { |
+namespace internal { |
+ |
+ |
+ |
+template <> |
+class ObjectTraits<math::Calculator_Clear_Params> { |
+ public: |
+ static void EncodePointersAndHandles( |
+ math::Calculator_Clear_Params* params, |
+ std::vector<Handle>* handles) { |
+ |
+ |
+ } |
+ |
+ static bool DecodePointersAndHandles( |
+ math::Calculator_Clear_Params* params, |
+ const Message& message) { |
+ |
+ |
+ return true; |
+ } |
+}; |
+ |
+template <> |
+class ObjectTraits<math::Calculator_Add_Params> { |
+ public: |
+ static void EncodePointersAndHandles( |
+ math::Calculator_Add_Params* params, |
+ std::vector<Handle>* handles) { |
+ |
+ |
+ } |
+ |
+ static bool DecodePointersAndHandles( |
+ math::Calculator_Add_Params* params, |
+ const Message& message) { |
+ |
+ |
+ return true; |
+ } |
+}; |
+ |
+template <> |
+class ObjectTraits<math::Calculator_Multiply_Params> { |
+ public: |
+ static void EncodePointersAndHandles( |
+ math::Calculator_Multiply_Params* params, |
+ std::vector<Handle>* handles) { |
+ |
+ |
+ } |
+ |
+ static bool DecodePointersAndHandles( |
+ math::Calculator_Multiply_Params* params, |
+ const Message& message) { |
+ |
+ |
+ return true; |
+ } |
+}; |
+ |
+template <> |
+class ObjectTraits<math::CalculatorUI_Output_Params> { |
+ public: |
+ static void EncodePointersAndHandles( |
+ math::CalculatorUI_Output_Params* params, |
+ std::vector<Handle>* handles) { |
+ |
+ |
+ } |
+ |
+ static bool DecodePointersAndHandles( |
+ math::CalculatorUI_Output_Params* params, |
+ const Message& message) { |
+ |
+ |
+ return true; |
+ } |
+}; |
+ |
+ |
+} // namespace internal |
+} // namespace mojo |