blob: 66dd8ba5f7794c18e44e1d2d25a209a9f44d3b12 [file] [log] [blame]
// Copyright 2014 The Chromium OS 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_BINDINGS_PROXY_GENERATOR_H_
#define CHROMEOS_DBUS_BINDINGS_PROXY_GENERATOR_H_
#include <string>
#include <vector>
#include <base/macros.h>
#include "chromeos-dbus-bindings/header_generator.h"
#include "chromeos-dbus-bindings/indented_text.h"
#include "chromeos-dbus-bindings/interface.h"
namespace base {
class FilePath;
} // namespace base
namespace chromeos_dbus_bindings {
class IndentedText;
struct Interface;
class ProxyGenerator : public HeaderGenerator {
public:
static bool GenerateProxy(const Interface& interface,
const base::FilePath& output_file);
private:
friend class ProxyGeneratorTest;
// Generates the constructor and destructor for the proxy.
static void AddConstructor(const Interface& interface,
const std::string& class_name,
IndentedText* text);
static void AddDestructor(const std::string& class_name,
IndentedText* text);
// Generates a callback for signal receiver registration completion.
static void AddSignalConnectedCallback(IndentedText *text);
// Generates the method signatures for signal receivers.
static void AddMethodInterface(const Interface& interface,
IndentedText* text);
// Generates a native C++ method which calls a D-Bus method on the proxy.
static void AddMethodProxy(const Interface::Method& interface,
const std::string& interface_name,
IndentedText* text);
// Generates the signal handler name for a given signal name.
static std::string GetHandlerNameForSignal(const std::string& signal);
DISALLOW_COPY_AND_ASSIGN(ProxyGenerator);
};
} // namespace chromeos_dbus_bindings
#endif // CHROMEOS_DBUS_BINDINGS_PROXY_GENERATOR_H_