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

Side by Side Diff: chromeos/dbus/ibus/ibus_object.h

Issue 10384141: Extends IBusObject. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Change my mind to add IBusText handling into IBusObject. Created 8 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ 5 #ifndef CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_
6 #define CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ 6 #define CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_
7 7
8 #include <string> 8 #include <string>
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "chromeos/chromeos_export.h" 11 #include "chromeos/chromeos_export.h"
12 12
13 namespace dbus { 13 namespace dbus {
14 class MessageReader; 14 class MessageReader;
15 class MessageWriter; 15 class MessageWriter;
16 } // dbus 16 } // dbus
17 17
18 namespace chromeos { 18 namespace chromeos {
19 19
20 // The data structure of IBusObject is represented as variant in "(sav...)" 20 // The data structure of IBusObject is represented as variant in "(sav...)"
21 // signatur. The IBusObject is constructed with two sections, header and 21 // signatur. The IBusObject is constructed with two sections, header and
22 // contents. The header section is represent as "sav" which contains type name 22 // contents. The header section is represent as "sav" which contains type name
23 // and attachement array. The contents section is corresponding to "..." in 23 // and attachement array. The contents section is corresponding to "..." in
24 // above signature, which can store arbitary type values including IBusObject. 24 // above signature, which can store arbitary type values including IBusObject.
25 // 25 //
26 // DATA STRUCTURE OVERVIEW: 26 // DATA STRUCTURE OVERVIEW:
27 // 27 //
28 // variant struct { 28 // variant // Handle with top_variant_writer_/top_variant_reader_.
29 // struct { // Handle with contents_writer_/contents_reader_.
29 // // Header section 30 // // Header section
30 // string typename // The type name of object, like "IBusText" 31 // string typename // The type name of object, like "IBusText"
31 // array [] // attachement array. 32 // array [] // attachement array.
32 // 33 //
33 // // Contents section 34 // // Contents section
34 // ... // The contents area. 35 // ... // The contents area.
35 // } 36 // }
36 // 37 //
37 // EXAMPLE: IBusText 38 // EXAMPLE: IBusText
38 // 39 //
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 // Reads IBusOBject with |reader| and checks if the type name is valid. 85 // Reads IBusOBject with |reader| and checks if the type name is valid.
85 bool InitWithParentReader(dbus::MessageReader* reader); 86 bool InitWithParentReader(dbus::MessageReader* reader);
86 87
87 // Returns true if the IBusObject is valid. 88 // Returns true if the IBusObject is valid.
88 bool IsValid() const; 89 bool IsValid() const;
89 90
90 // The following functions delegate dbus::MessageReader's functions. 91 // The following functions delegate dbus::MessageReader's functions.
91 bool PopString(std::string* out); 92 bool PopString(std::string* out);
92 bool PopUint32(uint32* out); 93 bool PopUint32(uint32* out);
93 bool PopArray(dbus::MessageReader* reader); 94 bool PopArray(dbus::MessageReader* reader);
95 bool PopBool(bool* out);
96 bool PopInt32(int32* out);
97 bool HasMoreData();
98
99 // Sets up |reader| for reading an IBusObject entry.
94 bool PopIBusObject(IBusObjectReader* reader); 100 bool PopIBusObject(IBusObjectReader* reader);
95 bool HasMoreData(); 101
102 // Returns main reader if the specified IBusObject is valid, otherwise returns
103 // NULL. This reader corresponds to second depth struct field(see above
satorux1 2012/05/18 01:23:36 please add a space before (
Seigo Nonaka 2012/05/18 01:41:52 Done.
104 // description). This function is useful in the case of adding other
105 // IBusObjects.
106 dbus::MessageReader* GetContentsReader();
satorux1 2012/05/18 01:23:36 I'm confused. Why do we need to expose this? Canno
Seigo Nonaka 2012/05/18 01:41:52 If I want to add IBusText into some IBusObject, Ap
satorux1 2012/05/18 04:54:46 Where is the IBusObject class? Is there such a cla
Seigo Nonaka 2012/05/18 17:01:47 Sorry not IBusObject, IBusObjectWriter is correct.
96 107
97 private: 108 private:
98 enum CheckResult { 109 enum CheckResult {
99 IBUS_OBJECT_VALID, // Already checked and valid type. 110 IBUS_OBJECT_VALID, // Already checked and valid type.
100 IBUS_OBJECT_INVALID, // Already checked but invalid type. 111 IBUS_OBJECT_INVALID, // Already checked but invalid type.
101 IBUS_OBJECT_NOT_CHECKED, // Not checked yet. 112 IBUS_OBJECT_NOT_CHECKED, // Not checked yet.
102 }; 113 };
103 114
104 std::string type_name_; 115 std::string type_name_;
105 dbus::MessageReader* original_reader_; 116 dbus::MessageReader* original_reader_;
(...skipping 28 matching lines...) Expand all
134 const std::string& signature, 145 const std::string& signature,
135 dbus::MessageWriter* writer); 146 dbus::MessageWriter* writer);
136 virtual ~IBusObjectWriter(); 147 virtual ~IBusObjectWriter();
137 148
138 // Appends IBusObject headers with |writer|, should be called once. 149 // Appends IBusObject headers with |writer|, should be called once.
139 void InitWithParentWriter(dbus::MessageWriter* writer); 150 void InitWithParentWriter(dbus::MessageWriter* writer);
140 151
141 // The following functions delegate dbus::MessageReader's functions. 152 // The following functions delegate dbus::MessageReader's functions.
142 void AppendString(const std::string& input); 153 void AppendString(const std::string& input);
143 void AppendUint32(uint32 value); 154 void AppendUint32(uint32 value);
155 void AppendInt32(int32 value);
156 void AppendBool(bool value);
144 void OpenArray(const std::string& signature, 157 void OpenArray(const std::string& signature,
145 dbus::MessageWriter* writer); 158 dbus::MessageWriter* writer);
146 void CloseContainer(dbus::MessageWriter* writer); 159 void CloseContainer(dbus::MessageWriter* writer);
147 160
148 // Sets up |writer| for writing new IBusObject entry. 161 // Sets up |writer| for writing new IBusObject entry.
149 void AppendIBusObject(IBusObjectWriter* writer); 162 void AppendIBusObject(IBusObjectWriter* writer);
150 163
151 // Closes all opened containers. 164 // Closes all opened containers.
152 void CloseAll(); 165 void CloseAll();
153 166
154 // Returns true if writer is initialized. 167 // Returns true if writer is initialized.
155 bool IsInitialized() const; 168 bool IsInitialized() const;
156 169
170 // Returns main contents writer if it is initialized, otherwise returns NULL.
171 // this writer corresponds to second depth struct(see above description). This
172 // function is useful in the case of appeding other IBusObjects.
173 dbus::MessageWriter* GetContentsWriter();
174
157 private: 175 private:
158 friend class TestableIBusObjectWriter; 176 friend class TestableIBusObjectWriter;
159 // Appends IBusObject headers, should be called once. 177 // Appends IBusObject headers, should be called once.
160 void Init(); 178 void Init();
161 179
162 std::string type_name_; 180 std::string type_name_;
163 std::string signature_; 181 std::string signature_;
164 dbus::MessageWriter* original_writer_; 182 dbus::MessageWriter* original_writer_;
165 scoped_ptr<dbus::MessageWriter> top_variant_writer_; 183 scoped_ptr<dbus::MessageWriter> top_variant_writer_;
166 scoped_ptr<dbus::MessageWriter> contents_writer_; 184 scoped_ptr<dbus::MessageWriter> contents_writer_;
167 185
168 DISALLOW_COPY_AND_ASSIGN(IBusObjectWriter); 186 DISALLOW_COPY_AND_ASSIGN(IBusObjectWriter);
169 }; 187 };
170 188
171 } // namespace chromeos 189 } // namespace chromeos
172 190
173 #endif // CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ 191 #endif // CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_
OLDNEW
« no previous file with comments | « no previous file | chromeos/dbus/ibus/ibus_object.cc » ('j') | chromeos/dbus/ibus/ibus_object_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698