Home | History | Annotate | Download | only in chromeos-dbus-bindings
      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_INTERFACE_H_
      6 #define CHROMEOS_DBUS_BINDINGS_INTERFACE_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 namespace chromeos_dbus_bindings {
     12 
     13 struct Interface {
     14   struct Argument {
     15     Argument(const std::string& name_in,
     16              const std::string& type_in) : name(name_in), type(type_in) {}
     17     std::string name;
     18     std::string type;
     19   };
     20   struct Method {
     21     enum class Kind {
     22       kSimple,
     23       kNormal,
     24       kAsync,
     25       kRaw
     26     };
     27     Method(const std::string& name_in,
     28            const std::vector<Argument>& input_arguments_in,
     29            const std::vector<Argument>& output_arguments_in)
     30         : name(name_in),
     31           input_arguments(input_arguments_in),
     32           output_arguments(output_arguments_in) {}
     33     Method(const std::string& name_in,
     34            const std::vector<Argument>& input_arguments_in)
     35         : name(name_in),
     36           input_arguments(input_arguments_in) {}
     37     explicit Method(const std::string& name_in) : name(name_in) {}
     38     std::string name;
     39     std::vector<Argument> input_arguments;
     40     std::vector<Argument> output_arguments;
     41     std::string doc_string;
     42     Kind kind{Kind::kNormal};
     43     bool is_const{false};
     44     bool include_dbus_message{false};
     45   };
     46   struct Signal {
     47     Signal(const std::string& name_in,
     48            const std::vector<Argument>& arguments_in)
     49         : name(name_in), arguments(arguments_in) {}
     50     explicit Signal(const std::string& name_in) : name(name_in) {}
     51     std::string name;
     52     std::vector<Argument> arguments;
     53     std::string doc_string;
     54   };
     55   struct Property {
     56     Property(const std::string& name_in,
     57              const std::string& type_in,
     58              const std::string& access_in)
     59         : name(name_in), type(type_in), access(access_in) {}
     60     std::string name;
     61     std::string type;
     62     std::string access;
     63     std::string doc_string;
     64   };
     65 
     66   Interface() = default;
     67   Interface(const std::string& name_in,
     68             const std::vector<Method>& methods_in,
     69             const std::vector<Signal>& signals_in,
     70             const std::vector<Property>& properties_in)
     71       : name(name_in), methods(methods_in), signals(signals_in),
     72         properties(properties_in) {}
     73   std::string name;
     74   std::string path;
     75   std::vector<Method> methods;
     76   std::vector<Signal> signals;
     77   std::vector<Property> properties;
     78   std::string doc_string;
     79 };
     80 
     81 }  // namespace chromeos_dbus_bindings
     82 
     83 #endif  // CHROMEOS_DBUS_BINDINGS_INTERFACE_H_
     84