[mlpack-svn] r10851 - mlpack/trunk/src/mlpack/core/util
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Fri Dec 16 09:32:05 EST 2011
Author: rcurtin
Date: 2011-12-16 09:32:05 -0500 (Fri, 16 Dec 2011)
New Revision: 10851
Modified:
mlpack/trunk/src/mlpack/core/util/save_restore_utility.cpp
mlpack/trunk/src/mlpack/core/util/save_restore_utility.hpp
mlpack/trunk/src/mlpack/core/util/save_restore_utility_impl.hpp
Log:
Give a few specializations for vectors, and remove using directives.
Modified: mlpack/trunk/src/mlpack/core/util/save_restore_utility.cpp
===================================================================
--- mlpack/trunk/src/mlpack/core/util/save_restore_utility.cpp 2011-12-16 14:31:09 UTC (rev 10850)
+++ mlpack/trunk/src/mlpack/core/util/save_restore_utility.cpp 2011-12-16 14:32:05 UTC (rev 10851)
@@ -4,15 +4,13 @@
*
* The SaveRestoreUtility provides helper functions in saving and
* restoring models. The current output file type is XML.
- *
- * @experimental
*/
#include "save_restore_utility.hpp"
using namespace mlpack;
using namespace utilities;
-bool SaveRestoreUtility::ReadFile(std::string filename)
+bool SaveRestoreUtility::ReadFile(const std::string filename)
{
xmlDocPtr xmlDocTree = NULL;
if (NULL == (xmlDocTree = xmlReadFile(filename.c_str(), NULL, 0)))
@@ -26,6 +24,7 @@
xmlFreeDoc(xmlDocTree);
return true;
}
+
void SaveRestoreUtility::RecurseOnNodes(xmlNode* n)
{
xmlNodePtr current = NULL;
@@ -40,7 +39,8 @@
RecurseOnNodes(current->children);
}
}
-bool SaveRestoreUtility::WriteFile(std::string filename)
+
+bool SaveRestoreUtility::WriteFile(const std::string filename)
{
bool success = false;
xmlDocPtr xmlDocTree = xmlNewDoc(BAD_CAST "1.0");
@@ -64,7 +64,9 @@
xmlFreeDoc(xmlDocTree);
return success;
}
-arma::mat& SaveRestoreUtility::LoadParameter(arma::mat& matrix, std::string name)
+
+arma::mat& SaveRestoreUtility::LoadParameter(arma::mat& matrix,
+ const std::string name)
{
std::map<std::string, std::string>::iterator it = parameters.find(name);
if (it != parameters.end())
@@ -121,7 +123,9 @@
}
return matrix;
}
-std::string SaveRestoreUtility::LoadParameter(std::string str, std::string name)
+
+std::string SaveRestoreUtility::LoadParameter(std::string str,
+ const std::string name)
{
std::map<std::string, std::string>::iterator it = parameters.find(name);
if (it != parameters.end())
@@ -134,7 +138,8 @@
}
return "";
}
-char SaveRestoreUtility::LoadParameter(char c, std::string name)
+
+char SaveRestoreUtility::LoadParameter(char c, const std::string name)
{
int temp;
std::map<std::string, std::string>::iterator it = parameters.find(name);
@@ -151,14 +156,17 @@
}
return 0;
}
-void SaveRestoreUtility::SaveParameter(char c, std::string name)
+
+void SaveRestoreUtility::SaveParameter(const char c, const std::string name)
{
int temp = (int) c;
std::ostringstream output;
output << temp;
parameters[name] = output.str();
}
-void SaveRestoreUtility::SaveParameter(arma::mat& mat, std::string name)
+
+void SaveRestoreUtility::SaveParameter(const arma::mat& mat,
+ const std::string name)
{
std::ostringstream output;
size_t columns = mat.n_cols;
@@ -173,3 +181,25 @@
}
parameters[name] = output.str();
}
+
+// Special template specializations for vectors.
+
+namespace mlpack {
+namespace utilities {
+
+template<>
+arma::vec& SaveRestoreUtility::LoadParameter(arma::vec& t,
+ const std::string name)
+{
+ return (arma::vec&) LoadParameter((arma::mat&) t, name);
+}
+
+template<>
+void SaveRestoreUtility::SaveParameter(const arma::vec& t,
+ const std::string name)
+{
+ SaveParameter((const arma::mat&) t, name);
+}
+
+}; // namespace utilities
+}; // namespace mlpack
Modified: mlpack/trunk/src/mlpack/core/util/save_restore_utility.hpp
===================================================================
--- mlpack/trunk/src/mlpack/core/util/save_restore_utility.hpp 2011-12-16 14:31:09 UTC (rev 10850)
+++ mlpack/trunk/src/mlpack/core/util/save_restore_utility.hpp 2011-12-16 14:32:05 UTC (rev 10851)
@@ -7,7 +7,6 @@
*
* @experimental
*/
-
#ifndef SAVE_RESTORE_MODEL_HPP
#define SAVE_RESTORE_MODEL_HPP
@@ -45,66 +44,80 @@
/**
* ReadFile reads an XML tree from a file.
*/
- bool ReadFile(std::string filename);
+ bool ReadFile(const std::string filename);
/**
* WriteFile writes the XML tree to a file.
*/
- bool WriteFile(std::string filename);
+ bool WriteFile(const std::string filename);
/**
* LoadParameter loads a parameter from the parameters map.
*/
template<typename T>
- T& LoadParameter(T& t, std::string name);
+ T& LoadParameter(T& t, const std::string name);
/**
* LoadParameter loads a parameter from the parameters map.
*/
template<typename T>
- std::vector<T>& LoadParameter(std::vector<T>& v, std::string name);
+ std::vector<T>& LoadParameter(std::vector<T>& v, const std::string name);
/**
* LoadParameter loads a character from the parameters map.
*/
- char LoadParameter(char c, std::string name);
+ char LoadParameter(char c, const std::string name);
/**
* LoadParameter loads a string from the parameters map.
*/
- std::string LoadParameter(std::string str, std::string name);
+ std::string LoadParameter(std::string str, const std::string name);
/**
* LoadParameter loads an arma::mat from the parameters map.
*/
- arma::mat& LoadParameter(arma::mat& matrix, std::string name);
+ arma::mat& LoadParameter(arma::mat& matrix, const std::string name);
/**
* SaveParameter saves a parameter to the parameters map.
*/
template<typename T>
- void SaveParameter(T& t, std::string name);
+ void SaveParameter(const T& t, const std::string name);
+
+
/**
* SaveParameter saves a parameter to the parameters map.
*/
template<typename T>
- void SaveParameter(std::vector<T>& v, std::string name);
+ void SaveParameter(const std::vector<T>& v, const std::string name);
/**
* SaveParameter saves a character to the parameters map.
*/
- void SaveParameter(char c, std::string name);
+ void SaveParameter(const char c, const std::string name);
/**
* SaveParameter saves an arma::mat to the parameters map.
*/
- void SaveParameter(arma::mat& mat, std::string name);
+ void SaveParameter(const arma::mat& mat, const std::string name);
};
+//! Specialization for arma::vec.
+template<>
+arma::vec& SaveRestoreUtility::LoadParameter(arma::vec& t,
+ const std::string name);
+
+//! Specialization for arma::vec.
+template<>
+void SaveRestoreUtility::SaveParameter(const arma::vec& t,
+ const std::string name);
+
} /* namespace utilities */
} /* namespace mlpack */
#include "save_restore_utility_impl.hpp"
+
+
#endif
Modified: mlpack/trunk/src/mlpack/core/util/save_restore_utility_impl.hpp
===================================================================
--- mlpack/trunk/src/mlpack/core/util/save_restore_utility_impl.hpp 2011-12-16 14:31:09 UTC (rev 10850)
+++ mlpack/trunk/src/mlpack/core/util/save_restore_utility_impl.hpp 2011-12-16 14:32:05 UTC (rev 10851)
@@ -11,11 +11,11 @@
// In case it hasn't been included already.
#include "save_restore_utility.hpp"
-using namespace mlpack;
-using namespace mlpack::utilities;
+namespace mlpack {
+namespace utilities {
template<typename T>
-T& SaveRestoreUtility::LoadParameter(T& t, std::string name)
+T& SaveRestoreUtility::LoadParameter(T& t, const std::string name)
{
std::map<std::string, std::string>::iterator it = parameters.find(name);
if (it != parameters.end())
@@ -31,8 +31,10 @@
}
return t;
}
+
template<typename T>
-std::vector<T>& SaveRestoreUtility::LoadParameter(std::vector<T>& v, std::string name)
+std::vector<T>& SaveRestoreUtility::LoadParameter(std::vector<T>& v,
+ const std::string name)
{
std::map<std::string, std::string>::iterator it = parameters.find(name);
if (it != parameters.end())
@@ -59,8 +61,9 @@
}
return v;
}
+
template<typename T>
-void SaveRestoreUtility::SaveParameter(T& t, std::string name)
+void SaveRestoreUtility::SaveParameter(const T& t, const std::string name)
{
std::ostringstream output;
output << t;
@@ -68,7 +71,8 @@
}
template<typename T>
-void SaveRestoreUtility::SaveParameter(std::vector<T>& t, std::string name)
+void SaveRestoreUtility::SaveParameter(const std::vector<T>& t,
+ const std::string name)
{
std::ostringstream output;
for (size_t index = 0; index < t.size(); ++index)
@@ -80,4 +84,7 @@
parameters[name] = vectorAsStr;
}
+}; // namespace utilities
+}; // namespace mlpack
+
#endif
More information about the mlpack-svn
mailing list