• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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