Index: chromeos/dbus/ibus/ibus_object.h |
diff --git a/chromeos/dbus/ibus/ibus_object.h b/chromeos/dbus/ibus/ibus_object.h |
deleted file mode 100644 |
index 9737dfa3b3202092f958af2f11054ec07bc73c4c..0000000000000000000000000000000000000000 |
--- a/chromeos/dbus/ibus/ibus_object.h |
+++ /dev/null |
@@ -1,241 +0,0 @@ |
-// Copyright (c) 2012 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 CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ |
-#define CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ |
- |
-#include <map> |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chromeos/chromeos_export.h" |
-#include "chromeos/dbus/ibus/ibus_text.h" |
- |
-namespace base { |
-class Value; |
-} // namespace base |
- |
-namespace dbus { |
-class MessageReader; |
-class MessageWriter; |
-} // namespace dbus |
- |
-namespace chromeos { |
- |
-// The data structure of IBusObject is represented as variant in "(sav...)" |
-// signature. The IBusObject is constructed with two sections, header and |
-// contents. The header section is represent as "sav" which contains type name |
-// and attachment array. The contents section is corresponding to "..." in |
-// above signature, which can store arbitrary type values including IBusObject. |
-// |
-// DATA STRUCTURE OVERVIEW: |
-// |
-// variant // Handle with top_variant_writer_/top_variant_reader_. |
-// struct { // Handle with contents_writer_/contents_reader_. |
-// // Header section |
-// string typename // The type name of object, like "IBusText" |
-// array [ // attachment array. |
-// dict_entry ( |
-// string "mozc.candidates" // The key in the dictionary entry. |
-// variant ... // The value in the dictionary entry. |
-// ) |
-// ... |
-// ] |
-// |
-// // Contents section |
-// ... // The contents area. |
-// } |
-// |
-// EXAMPLE: IBusText |
-// |
-// variant struct { |
-// string "IBusText" // Header of IBusText |
-// array[] |
-// string "A" // The 1st value of IBusText |
-// variant struct { // THe 2nd value of IBusText |
-// string "IBusAttrList" // Header of IBusAttrList |
-// array[] |
-// array[ // The 1st value of IBusAttrList |
-// variant struct{ |
-// string "IBusAttribute" // Header of IBusAttribute |
-// array[] |
-// uint32 1 // The 1st value of IBusAttribute |
-// uint32 1 // The 2nd value of IBusAttribute |
-// uint32 0 // The 3rd value of IBusAttribute |
-// uint32 1 // The 4th value of IBusAttribute |
-// } |
-// ] |
-// } |
-// } |
-// |
-// The IBusObjectReader class provides reading IBusObject including attachment |
-// field from dbus message. This class checks the IBusObject header structure |
-// and type name before reading contents. |
-// |
-// EXAPMLE USAGE: |
-// // Creates reader for IBusText |
-// IBusObjectReader object_reader("IBusText", &reader); |
-// |
-// // Initialize for reading attachment field. |
-// object_reader.Init(); |
-// |
-// // Get attachment field. |
-// base::Value* value = object_reader.GetAttachment("annotation"); |
-// |
-// std::string text; |
-// reader.PopString(&text); // Reading 1st value as string. |
-// |
-// // We can also read nested IBusObject. |
-// IBusObjectReader nested_object_reader("IBusAttrList", NULL); |
-// reader.PopIBusObject(&nested_object_reader); |
-class CHROMEOS_EXPORT IBusObjectReader { |
- public: |
- // |reader| must be released by caller. |
- IBusObjectReader(const std::string& type_name, |
- dbus::MessageReader* reader); |
- virtual ~IBusObjectReader(); |
- |
- // Reads IBusObject headers and checks if the type name is valid. |
- // Returns true on success. Uses InitWitAttachmentReader instead if you want |
- // to read attachment field. |
- bool Init(); |
- |
- // Reads IBusOBject with |reader| and checks if the type name is valid. |
- bool InitWithParentReader(dbus::MessageReader* reader); |
- |
- // Returns true if the IBusObject is valid. |
- bool IsValid() const; |
- |
- // The following functions delegate dbus::MessageReader's functions. |
- bool PopString(std::string* out); |
- bool PopUint32(uint32* out); |
- bool PopArray(dbus::MessageReader* reader); |
- bool PopBool(bool* out); |
- bool PopInt32(int32* out); |
- bool HasMoreData(); |
- |
- // Sets up |reader| for reading an IBusObject entry. |
- bool PopIBusObject(IBusObjectReader* reader); |
- |
- // Pops a IBusText. |
- // Returns true on success. |
- bool PopIBusText(IBusText* text); |
- |
- // Pops a IBusText and store it's text field into |text|. Use PopIBusText |
- // instead in the case of using any attribute entries in IBusText. |
- // Return true on success. |
- bool PopStringFromIBusText(std::string* text); |
- |
- // Gets attachment entry corresponding to |key|. Do not free returned value. |
- // Returns NULL if there is no entry. |
- const base::Value* GetAttachment(const std::string& key); |
- |
- private: |
- enum CheckResult { |
- IBUS_OBJECT_VALID, // Already checked and valid type. |
- IBUS_OBJECT_INVALID, // Already checked but invalid type. |
- IBUS_OBJECT_NOT_CHECKED, // Not checked yet. |
- }; |
- |
- std::string type_name_; |
- dbus::MessageReader* original_reader_; |
- scoped_ptr<dbus::MessageReader> top_variant_reader_; |
- scoped_ptr<dbus::MessageReader> contents_reader_; |
- CheckResult check_result_; |
- std::map<std::string, base::Value*> attachments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IBusObjectReader); |
-}; |
- |
-// IBusObjectWriter class provides writing IBusObject to dbus message. This |
-// class appends header section before appending contents values. |
-// IBusObjectWriter does not support writing attachment field because writing |
-// attachment field is not used in Chrome. |
-// |
-// EXAMPLE USAGE: |
-// // Creates writer for IBusText |
-// IBusObjectWriter object_writer("IBusText", "sv", &writer); |
-// |
-// // Add some attachments. |
-// base::Value* value = base::Value::CreateStringValue("Noun"); |
-// object_writer.AddAttachment("annotation", *value); |
-// |
-// // Close header section. |
-// object_writer.CloseHeader(); |
-// |
-// const std::string text = "Sample Text"; |
-// writer.AppendString(text); |
-// |
-// // We can also write nested IBusObject. |
-// IBusObjectWriter nested_object_writer("IBusAttrList", "av"); |
-// object_writer.AppendIBusObject(&nested_object_writer); |
-// ... appends values |
-// |
-// nested_object_writer.CloseAll(); // To finish up, should call CloseAll. |
-// object_writer.CloseAll(); |
-class CHROMEOS_EXPORT IBusObjectWriter { |
- public: |
- enum WriterState { |
- NOT_INITIALZED, // Created but not initialized. |
- HEADER_OPEN, // Ready for writing attachment field. |
- INITIALIZED // Ready for writing content values. |
- }; |
- |
- // |writer| must be released by caller. |
- IBusObjectWriter(const std::string& type_name, |
- const std::string& signature, |
- dbus::MessageWriter* writer); |
- virtual ~IBusObjectWriter(); |
- |
- // Closes header to write content values. |
- void CloseHeader(); |
- |
- // Appends IBusObject headers with |writer|, should be called once. |
- void InitWithParentWriter(dbus::MessageWriter* writer); |
- |
- // Adds an attachment, this function can be called only before CloseHeader |
- // function call. |
- bool AddAttachment(const std::string& key, const base::Value& value); |
- |
- // The following functions delegate dbus::MessageReader's functions. |
- void AppendString(const std::string& input); |
- void AppendUint32(uint32 value); |
- void AppendInt32(int32 value); |
- void AppendBool(bool value); |
- void OpenArray(const std::string& signature, |
- dbus::MessageWriter* writer); |
- void CloseContainer(dbus::MessageWriter* writer); |
- |
- // Sets up |writer| for writing new IBusObject entry. |
- void AppendIBusObject(IBusObjectWriter* writer); |
- |
- // Closes all opened containers. |
- void CloseAll(); |
- |
- // Appends a IBusText. |
- void AppendIBusText(const IBusText& text); |
- |
- // Appends a string as IBusText without any attributes. Use AppendIBusText |
- // instead in the case of using any attribute entries. |
- void AppendStringAsIBusText(const std::string& text); |
- |
- private: |
- // Appends IBusObject headers, should be called once. |
- void Init(); |
- |
- std::string type_name_; |
- std::string signature_; |
- dbus::MessageWriter* original_writer_; |
- WriterState state_; |
- scoped_ptr<dbus::MessageWriter> top_variant_writer_; |
- scoped_ptr<dbus::MessageWriter> contents_writer_; |
- scoped_ptr<dbus::MessageWriter> attachment_writer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IBusObjectWriter); |
-}; |
- |
-} // namespace chromeos |
- |
-#endif // CHROMEOS_DBUS_IBUS_IBUS_OBJECT_H_ |