blob: 072c23daae6d1aaac34e382077c81664e88feaa1 [file] [log] [blame]
keybuk@google.combf4649a2012-02-15 06:29:06 +09001// Copyright (c) 2012 The Chromium 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 DBUS_OBJECT_PATH_H_
6#define DBUS_OBJECT_PATH_H_
keybuk@google.combf4649a2012-02-15 06:29:06 +09007
pneubeck@chromium.orgd8ba24c2013-04-12 23:16:32 +09008#include <iosfwd>
keybuk@google.combf4649a2012-02-15 06:29:06 +09009#include <string>
10
tfarina@chromium.org7928ea22012-11-05 10:56:14 +090011#include "dbus/dbus_export.h"
12
keybuk@google.combf4649a2012-02-15 06:29:06 +090013namespace dbus {
14
15// ObjectPath is a type used to distinguish D-Bus object paths from simple
16// strings, especially since normal practice is that these should be only
17// initialized from static constants or obtained from remote objects and no
18// assumptions about their value made.
tfarina@chromium.org7928ea22012-11-05 10:56:14 +090019class CHROME_DBUS_EXPORT ObjectPath {
keybuk@google.combf4649a2012-02-15 06:29:06 +090020 public:
21 // Permit initialization without a value for passing to
22 // dbus::MessageReader::PopObjectPath to fill in and from std::string
23 // objects.
24 //
25 // The compiler synthesised copy constructor and assignment operator are
26 // sufficient for our needs, as is implicit initialization of a std::string
27 // from a string constant.
28 ObjectPath() {}
29 explicit ObjectPath(const std::string& value) : value_(value) {}
30
31 // Retrieves value as a std::string.
32 const std::string& value() const { return value_; }
33
hashimoto@chromium.org5fdbcf72012-06-05 13:15:50 +090034 // Returns true if the value is a valid object path.
35 bool IsValid() const;
36
keybuk@google.combf4649a2012-02-15 06:29:06 +090037 // Permit sufficient comparison to allow an ObjectPath to be used as a
38 // key in a std::map.
39 bool operator<(const ObjectPath&) const;
40
41 // Permit testing for equality, required for mocks to work and useful for
42 // observers.
43 bool operator==(const ObjectPath&) const;
44 bool operator!=(const ObjectPath&) const;
tfarina@chromium.org7928ea22012-11-05 10:56:14 +090045
keybuk@google.combf4649a2012-02-15 06:29:06 +090046 private:
47 std::string value_;
48};
49
pneubeck@chromium.orgd8ba24c2013-04-12 23:16:32 +090050// This is required by gtest to print a readable output on test failures.
51CHROME_DBUS_EXPORT void PrintTo(const ObjectPath& path, std::ostream* out);
52
keybuk@google.combf4649a2012-02-15 06:29:06 +090053} // namespace dbus
54
55#endif // DBUS_OBJECT_PATH_H_