object_path.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// 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_ 7 8#include <string> 9 10#include "dbus/dbus_export.h" 11 12namespace dbus { 13 14// ObjectPath is a type used to distinguish D-Bus object paths from simple 15// strings, especially since normal practice is that these should be only 16// initialized from static constants or obtained from remote objects and no 17// assumptions about their value made. 18class CHROME_DBUS_EXPORT ObjectPath { 19 public: 20 // Permit initialization without a value for passing to 21 // dbus::MessageReader::PopObjectPath to fill in and from std::string 22 // objects. 23 // 24 // The compiler synthesised copy constructor and assignment operator are 25 // sufficient for our needs, as is implicit initialization of a std::string 26 // from a string constant. 27 ObjectPath() {} 28 explicit ObjectPath(const std::string& value) : value_(value) {} 29 30 // Retrieves value as a std::string. 31 const std::string& value() const { return value_; } 32 33 // Returns true if the value is a valid object path. 34 bool IsValid() const; 35 36 // Permit sufficient comparison to allow an ObjectPath to be used as a 37 // key in a std::map. 38 bool operator<(const ObjectPath&) const; 39 40 // Permit testing for equality, required for mocks to work and useful for 41 // observers. 42 bool operator==(const ObjectPath&) const; 43 bool operator!=(const ObjectPath&) const; 44 45 private: 46 std::string value_; 47}; 48 49} // namespace dbus 50 51#endif // DBUS_OBJECT_PATH_H_ 52