OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef MOJO_GENERATED_BINDINGS_SAMPLE_SERVICE_H_ |
| 6 #define MOJO_GENERATED_BINDINGS_SAMPLE_SERVICE_H_ |
| 7 |
| 8 #include "mojo/public/bindings/lib/bindings.h" |
| 9 |
| 10 namespace sample { |
| 11 |
| 12 class Bar { |
| 13 public: |
| 14 static Bar* New(mojo::Buffer* buf) { |
| 15 return new (buf->Allocate(sizeof(Bar))) Bar(); |
| 16 } |
| 17 |
| 18 void set_alpha(uint8_t alpha) { d_.alpha = alpha; } |
| 19 void set_beta(uint8_t beta) { d_.beta = beta; } |
| 20 void set_gamma(uint8_t gamma) { d_.gamma = gamma; } |
| 21 |
| 22 uint8_t alpha() const { return d_.alpha; } |
| 23 uint8_t beta() const { return d_.beta; } |
| 24 uint8_t gamma() const { return d_.gamma; } |
| 25 |
| 26 private: |
| 27 friend class mojo::internal::ObjectTraits<Bar>; |
| 28 |
| 29 Bar() { |
| 30 header_.num_bytes = sizeof(*this); |
| 31 header_.num_fields = 3; |
| 32 } |
| 33 ~Bar(); // NOT IMPLEMENTED |
| 34 |
| 35 mojo::internal::StructHeader header_; |
| 36 struct Data { |
| 37 uint8_t alpha; |
| 38 uint8_t beta; |
| 39 uint8_t gamma; |
| 40 } d_; |
| 41 }; |
| 42 |
| 43 class Foo { |
| 44 public: |
| 45 static Foo* New(mojo::Buffer* buf) { |
| 46 return new (buf->Allocate(sizeof(Foo))) Foo(); |
| 47 } |
| 48 |
| 49 void set_x(int32_t x) { d_.x = x; } |
| 50 void set_y(int32_t y) { d_.y = y; } |
| 51 void set_a(bool a) { d_.a = a; } |
| 52 void set_b(bool b) { d_.b = b; } |
| 53 void set_c(bool c) { d_.c = c; } |
| 54 void set_bar(Bar* bar) { d_.bar.ptr = bar; } |
| 55 void set_data(mojo::Array<uint8_t>* data) { d_.data.ptr = data; } |
| 56 void set_extra_bars(mojo::Array<Bar*>* extra_bars) { |
| 57 d_.extra_bars.ptr = extra_bars; |
| 58 } |
| 59 void set_name(mojo::String* name) { |
| 60 d_.name.ptr = name; |
| 61 } |
| 62 void set_files(mojo::Array<mojo::Handle>* files) { |
| 63 d_.files.ptr = files; |
| 64 } |
| 65 |
| 66 int32_t x() const { return d_.x; } |
| 67 int32_t y() const { return d_.y; } |
| 68 bool a() const { return d_.a; } |
| 69 bool b() const { return d_.b; } |
| 70 bool c() const { return d_.c; } |
| 71 const Bar* bar() const { return d_.bar.ptr; } |
| 72 const mojo::Array<uint8_t>* data() const { return d_.data.ptr; } |
| 73 const mojo::Array<Bar*>* extra_bars() const { |
| 74 // NOTE: extra_bars is an optional field! |
| 75 return header_.num_fields >= 8 ? d_.extra_bars.ptr : NULL; |
| 76 } |
| 77 const mojo::String* name() const { |
| 78 // NOTE: name is also an optional field! |
| 79 return header_.num_fields >= 9 ? d_.name.ptr : NULL; |
| 80 } |
| 81 const mojo::Array<mojo::Handle>* files() const { |
| 82 // NOTE: files is also an optional field! |
| 83 return header_.num_fields >= 10 ? d_.files.ptr : NULL; |
| 84 } |
| 85 |
| 86 private: |
| 87 friend class mojo::internal::ObjectTraits<Foo>; |
| 88 |
| 89 Foo() { |
| 90 header_.num_bytes = sizeof(*this); |
| 91 header_.num_fields = 10; |
| 92 } |
| 93 ~Foo(); // NOT IMPLEMENTED |
| 94 |
| 95 mojo::internal::StructHeader header_; |
| 96 struct Data { |
| 97 int32_t x; |
| 98 int32_t y; |
| 99 uint32_t a : 1; |
| 100 uint32_t b : 1; |
| 101 uint32_t c : 1; |
| 102 mojo::internal::StructPointer<Bar> bar; |
| 103 mojo::internal::ArrayPointer<uint8_t> data; |
| 104 mojo::internal::ArrayPointer<Bar*> extra_bars; |
| 105 mojo::internal::StringPointer name; |
| 106 mojo::internal::ArrayPointer<mojo::Handle> files; |
| 107 } d_; |
| 108 }; |
| 109 |
| 110 class Service { |
| 111 public: |
| 112 virtual void Frobinate(const Foo* foo, bool baz, mojo::Handle port) = 0; |
| 113 }; |
| 114 |
| 115 } // namespace sample |
| 116 |
| 117 #endif // MOJO_GENERATED_BINDINGS_SAMPLE_SERVICE_H_ |
OLD | NEW |