Fixed regression in TFactor::partSum
[libdai.git] / include / dai / properties.h
index 2590ff7..7b94a07 100644 (file)
@@ -1,6 +1,7 @@
-/*  Copyright (C) 2006-2008  Joris Mooij  [j dot mooij at science dot ru dot nl]
-    Radboud University Nijmegen, The Netherlands
-    
+/*  Copyright (C) 2006-2008  Joris Mooij  [joris dot mooij at tuebingen dot mpg dot de]
+    Radboud University Nijmegen, The Netherlands /
+    Max Planck Institute for Biological Cybernetics, Germany
+
     This file is part of libDAI.
 
     libDAI is free software; you can redistribute it and/or modify
 */
 
 
+/// \file
+/// \brief Defines the Property and PropertySet classes
+/// \todo Improve documentation
+
+
 #ifndef __defined_libdai_properties_h
 #define __defined_libdai_properties_h
 
 namespace dai {
 
 
+/// Type of the key of a Property
 typedef std::string PropertyKey;
+
+/// Type of the value of a Property
 typedef boost::any  PropertyValue;
+
+/// A Property is a pair of a key and a corresponding value
 typedef std::pair<PropertyKey, PropertyValue> Property;
 
 
-/// Sends a Property object to an output stream
+/// Writes a Property object to an output stream
 std::ostream& operator<< (std::ostream & os, const Property & p);
 
 
-/// The PropertySet class represents a set of properties
-class PropertySet : public std::map<PropertyKey, PropertyValue> {
+/// Represents a set of properties, mapping keys (of type PropertyKey) to values (of type PropertyValue)
+class PropertySet : private std::map<PropertyKey, PropertyValue> {
     public:
         /// Gets a property
         const PropertyValue & Get(const PropertyKey &key) const { 
@@ -58,7 +69,7 @@ class PropertySet : public std::map<PropertyKey, PropertyValue> {
             return x->second; 
         }
 
-        /// Sets a property 
+        /// Sets a property
         PropertySet & Set(const PropertyKey &key, const PropertyValue &val) { this->operator[](key) = val; return *this; }
 
         /// Gets a property, casted as ValueType
@@ -73,7 +84,7 @@ class PropertySet : public std::map<PropertyKey, PropertyValue> {
             }
         }
 
-        /// Converts a property from string to ValueType, if necessary
+        /// Converts a property from string to ValueType (if necessary)
         template<typename ValueType>
         void ConvertTo(const PropertyKey &key) { 
             PropertyValue val = Get(key);
@@ -122,14 +133,12 @@ class PropertySet : public std::map<PropertyKey, PropertyValue> {
         /// Shorthand for (temporarily) adding properties, e.g. PropertySet p()("method","BP")("verbose",1)("tol",1e-9)
         PropertySet operator()(const PropertyKey &key, const PropertyValue &val) const { PropertySet copy = *this; return copy.Set(key,val); }
 
-        /// Check if a property with given key exists
+        /// Check if a property with the given key exists
         bool hasKey(const PropertyKey &key) const { PropertySet::const_iterator x = find(key); return (x != this->end()); }
 
-        /// Sends a PropertySet object to an output stream
+        // Friends
         friend std::ostream& operator<< (std::ostream & os, const PropertySet & ps);
-
-        /// Reads a PropertySet object from an input stream
-        friend std::istream& operator >> (std::istream& is, PropertySet & ps);
+        friend std::istream& operator>> (std::istream& is, PropertySet & ps);
 };