Port from git

This commit is contained in:
emb
2015-01-01 10:14:26 -06:00
commit 93094bcbed
772 changed files with 621608 additions and 0 deletions

64
Source/Utility/Log.cpp Normal file
View File

@@ -0,0 +1,64 @@
/* This file is subject to the terms and conditions defined in
* file 'LICENSE.txt', which is part of this source code package.
*/
#include "Log.h"
#include <iostream>
#include <sstream>
#include <ctime>
std::ofstream Logger::WriteFileStream;
std::streambuf *Logger::CerrStream = NULL;
std::streambuf *Logger::CoutStream = NULL;
bool Logger::StartLogFile(std::string file)
{
WriteFileStream.open(file.c_str());
CerrStream = std::cerr.rdbuf(WriteFileStream.rdbuf());
CoutStream = std::cout.rdbuf(WriteFileStream.rdbuf());
return WriteFileStream.is_open();
}
void Logger::CloseLogFile()
{
if(WriteFileStream.is_open())
{
WriteFileStream.close();
}
std::cerr.rdbuf(CerrStream);
std::cout.rdbuf(CoutStream);
}
void Logger::Write(Zone zone, std::string component, std::string message)
{
std::string zoneStr;
switch(zone)
{
case ZONE_INFO:
zoneStr = "INFO";
break;
case ZONE_DEBUG:
zoneStr = "DEBUG";
break;
case ZONE_WARNING:
zoneStr = "WARNING";
break;
case ZONE_ERROR:
zoneStr = "ERROR";
break;
}
std::time_t rawtime = std::time(NULL);
struct tm* timeinfo = std::localtime(&rawtime);
static char timeStr[60];
std::strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", timeinfo);
std::stringstream ss;
ss << "[" << timeStr << "] [" << zoneStr << "] [" << component << "] " << message << std::endl;
std::cout << ss.str();
}

31
Source/Utility/Log.h Normal file
View File

@@ -0,0 +1,31 @@
/* This file is subject to the terms and conditions defined in
* file 'LICENSE.txt', which is part of this source code package.
*/
#pragma once
#include <string>
#include <fstream>
#include <sstream>
#include <streambuf>
#include <iostream>
class Logger
{
public:
enum Zone
{
ZONE_DEBUG,
ZONE_INFO,
ZONE_WARNING,
ZONE_ERROR
};
static bool StartLogFile(std::string file);
static void Write(Zone zone, std::string component, std::string message);
static void CloseLogFile();
private:
static std::streambuf *CerrStream;
static std::streambuf *CoutStream;
static std::ofstream WriteFileStream;
};

131
Source/Utility/Utils.cpp Normal file
View File

@@ -0,0 +1,131 @@
/* This file is subject to the terms and conditions defined in
* file 'LICENSE.txt', which is part of this source code package.
*/
#include "Utils.h"
#include "../Database/Configuration.h"
#include "Log.h"
#include <algorithm>
#include <sstream>
#include <fstream>
#include <dirent.h>
Utils::Utils()
{
}
Utils::~Utils()
{
}
bool Utils::FindMatchingFile(std::string prefix, std::vector<std::string> &extensions, std::string &file)
{
for(unsigned int i = 0; i < extensions.size(); ++i)
{
std::string temp = prefix + "." + extensions[i];
temp = Configuration::ConvertToAbsolutePath(Configuration::GetAbsolutePath(), temp);
std::ifstream f(temp.c_str());
if (f.good())
{
file = temp;
return true;
}
}
return false;
}
std::string Utils::Replace(
std::string subject,
const std::string& search,
const std::string& replace)
{
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos)
{
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
return subject;
}
float Utils::ConvertFloat(std::string content)
{
float retVal = 0;
std::stringstream ss;
ss << content;
ss >> retVal;
return retVal;
}
int Utils::ConvertInt(std::string content)
{
int retVal = 0;
std::stringstream ss;
ss << content;
ss >> retVal;
return retVal;
}
void Utils::NormalizeBackSlashes(std::string& content)
{
std::replace(content.begin(), content.end(), '\\', '/');
}
std::string Utils::GetDirectory(std::string filePath)
{
NormalizeBackSlashes(filePath);
std::string directory = filePath;
const size_t last_slash_idx = filePath.rfind('/');
if (std::string::npos != last_slash_idx)
{
directory = filePath.substr(0, last_slash_idx);
}
return directory;
}
std::string Utils::GetParentDirectory(std::string directory)
{
NormalizeBackSlashes(directory);
size_t last_slash_idx = directory.find_last_of('/');
if(directory.length() - 1 == last_slash_idx)
{
directory = directory.erase(last_slash_idx, directory.length()-1);
last_slash_idx = directory.find_last_of('/');
}
if (std::string::npos != last_slash_idx)
{
directory = directory.erase(last_slash_idx, directory.length());
}
return directory;
}
std::string Utils::GetFileName(std::string filePath)
{
NormalizeBackSlashes(filePath);
std::string filename = filePath;
const size_t last_slash_idx = filePath.rfind('/');
if (std::string::npos != last_slash_idx)
{
filename = filePath.erase(0, last_slash_idx+1);
}
return filename;
}

26
Source/Utility/Utils.h Normal file
View File

@@ -0,0 +1,26 @@
/* This file is subject to the terms and conditions defined in
* file 'LICENSE.txt', which is part of this source code package.
*/
#pragma once
#include <string>
#include <vector>
class Utils
{
public:
static std::string Replace(std::string subject, const std::string& search,
const std::string& replace);
static float ConvertFloat(std::string content);
static int ConvertInt(std::string content);
static void NormalizeBackSlashes(std::string &content);
static std::string GetDirectory(std::string filePath);
static std::string GetParentDirectory(std::string filePath);
static std::string GetFileName(std::string filePath);
static bool FindMatchingFile(std::string prefix, std::vector<std::string> &extensions, std::string &file);
private:
Utils();
virtual ~Utils();
};