shill: Add uint64 properties

This is a fairly minimal addition, since we will only need
read-only derived types.

BUG=chromium-os:31584
TEST=New unit tests; list-devices on a real machine

Change-Id: I7b65224ae329443066f563b620b379f29006f8a0
Reviewed-on: https://gerrit.chromium.org/gerrit/27157
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
diff --git a/property_store.h b/property_store.h
index 51576e1..829dcc4 100644
--- a/property_store.h
+++ b/property_store.h
@@ -68,6 +68,10 @@
                                  uint32 value,
                                  Error *error);
 
+  virtual bool SetUint64Property(const std::string &name,
+                                 uint64 value,
+                                 Error *error);
+
   virtual bool SetRpcIdentifierProperty(const std::string &name,
                                         const RpcIdentifier &value,
                                         Error *error);
@@ -109,6 +113,7 @@
   ReadablePropertyConstIterator<uint8> GetUint8PropertiesIter() const;
   ReadablePropertyConstIterator<uint16> GetUint16PropertiesIter() const;
   ReadablePropertyConstIterator<uint32> GetUint32PropertiesIter() const;
+  ReadablePropertyConstIterator<uint64> GetUint64PropertiesIter() const;
 
   // Methods for registering a property.
   //
@@ -172,6 +177,8 @@
                               const StringsAccessor &accessor);
   void RegisterDerivedUint16(const std::string &name,
                              const Uint16Accessor &accessor);
+  void RegisterDerivedUint64(const std::string &name,
+                             const Uint64Accessor &accessor);
 
  private:
   template <class V>
@@ -197,6 +204,7 @@
   std::map<std::string, Uint8Accessor> uint8_properties_;
   std::map<std::string, Uint16Accessor> uint16_properties_;
   std::map<std::string, Uint32Accessor> uint32_properties_;
+  std::map<std::string, Uint64Accessor> uint64_properties_;
 
   DISALLOW_COPY_AND_ASSIGN(PropertyStore);
 };