Give a few specializations for vectors, and remove using directives.
This commit is contained in:
@@ -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 @@ bool SaveRestoreUtility::ReadFile(std::string filename)
|
||||
xmlFreeDoc(xmlDocTree);
|
||||
return true;
|
||||
}
|
||||
|
||||
void SaveRestoreUtility::RecurseOnNodes(xmlNode* n)
|
||||
{
|
||||
xmlNodePtr current = NULL;
|
||||
@@ -40,7 +39,8 @@ void SaveRestoreUtility::RecurseOnNodes(xmlNode* n)
|
||||
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 @@ bool SaveRestoreUtility::WriteFile(std::string filename)
|
||||
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 @@ arma::mat& SaveRestoreUtility::LoadParameter(arma::mat& matrix, std::string name
|
||||
}
|
||||
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 @@ std::string SaveRestoreUtility::LoadParameter(std::string str, std::string name)
|
||||
}
|
||||
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 @@ char SaveRestoreUtility::LoadParameter(char c, std::string name)
|
||||
}
|
||||
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 @@ void SaveRestoreUtility::SaveParameter(arma::mat& mat, std::string name)
|
||||
}
|
||||
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
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
*
|
||||
* @experimental
|
||||
*/
|
||||
|
||||
#ifndef SAVE_RESTORE_MODEL_HPP
|
||||
#define SAVE_RESTORE_MODEL_HPP
|
||||
|
||||
@@ -45,66 +44,80 @@ class SaveRestoreUtility
|
||||
/**
|
||||
* 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
|
||||
|
||||
@@ -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 @@ T& SaveRestoreUtility::LoadParameter(T& t, std::string name)
|
||||
}
|
||||
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 @@ std::vector<T>& SaveRestoreUtility::LoadParameter(std::vector<T>& v, std::string
|
||||
}
|
||||
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 @@ void SaveRestoreUtility::SaveParameter(T& t, std::string name)
|
||||
}
|
||||
|
||||
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 @@ void SaveRestoreUtility::SaveParameter(std::vector<T>& t, std::string name)
|
||||
parameters[name] = vectorAsStr;
|
||||
}
|
||||
|
||||
}; // namespace utilities
|
||||
}; // namespace mlpack
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user