1 // Copyright 2014 The Chromium OS 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 CHROMEOS_DBUS_BINDINGS_ADAPTOR_GENERATOR_H_ 6 #define CHROMEOS_DBUS_BINDINGS_ADAPTOR_GENERATOR_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include <base/macros.h> 12 13 #include "chromeos-dbus-bindings/header_generator.h" 14 #include "chromeos-dbus-bindings/indented_text.h" 15 16 namespace base { 17 18 class FilePath; 19 20 } // namespace base 21 22 namespace chromeos_dbus_bindings { 23 24 class IndentedText; 25 struct Interface; 26 27 class AdaptorGenerator : public HeaderGenerator { 28 public: 29 static bool GenerateAdaptors(const std::vector<Interface>& interfaces, 30 const base::FilePath& output_file); 31 32 private: 33 friend class AdaptorGeneratorTest; 34 35 // Generates one interface adaptor. 36 static void GenerateInterfaceAdaptor(const Interface& interface, 37 IndentedText *text); 38 39 // Generates the method prototypes for an interface declaration. 40 static void AddInterfaceMethods(const Interface& interface, 41 IndentedText *text); 42 43 // Generates the constructor for the adaptor. 44 static void AddConstructor(const std::string& class_name, 45 const std::string& itf_name, 46 IndentedText *text); 47 48 // Generates RegisterWithDBusObject() method. 49 static void AddRegisterWithDBusObject(const std::string& itf_name, 50 const Interface& interface, 51 IndentedText *text); 52 53 // Generates the code to register the interface with a D-Bus object. 54 static void RegisterInterface(const std::string& itf_name, 55 const Interface& interface, 56 IndentedText *text); 57 58 // Generates adaptor methods to send the signals. 59 static void AddSendSignalMethods(const Interface& interface, 60 IndentedText *text); 61 62 // Generates DBusSignal data members for the signals. 63 static void AddSignalDataMembers(const Interface& interface, 64 IndentedText *text); 65 66 // Generates adaptor accessor methods for the properties. 67 static void AddPropertyMethodImplementation(const Interface& interface, 68 IndentedText *text); 69 70 // Generate ExportProperty data members for the properties. 71 static void AddPropertyDataMembers(const Interface& interface, 72 IndentedText *text); 73 74 DISALLOW_COPY_AND_ASSIGN(AdaptorGenerator); 75 }; 76 77 } // namespace chromeos_dbus_bindings 78 79 #endif // CHROMEOS_DBUS_BINDINGS_ADAPTOR_GENERATOR_H_ 80