Cleanup: utility classes

This commit is contained in:
Charles J. Cliffe 2021-04-04 22:21:05 -04:00
parent a0f1ccf68d
commit 7aa7daa55f
11 changed files with 171 additions and 200 deletions

View File

@ -25,10 +25,8 @@
#include "DataTree.h" #include "DataTree.h"
#include <fstream> #include <fstream>
#include <math.h>
#include <iomanip> #include <iomanip>
#include <locale> #include <cstdlib>
#include <stdlib.h>
#include <algorithm> #include <algorithm>
@ -48,10 +46,7 @@ DataElement::DataElement(DataElement &cloneFrom) : data_type(cloneFrom.getDataTy
// //
} }
DataElement::~DataElement() { DataElement::~DataElement() = default;
//nothing
}
char * DataElement::getDataPointer() { char * DataElement::getDataPointer() {
@ -91,7 +86,7 @@ void DataElement::set(const std::set<string> &strset_in) {
vector<string> tmp_vect; vector<string> tmp_vect;
for (auto single_string : strset_in) { for (const auto& single_string : strset_in) {
tmp_vect.push_back(single_string); tmp_vect.push_back(single_string);
} }
@ -120,14 +115,14 @@ void DataElement::get(std::set<string> &strset_out) {
strset_out.clear(); strset_out.clear();
for (auto single_string : tmp_vect) { for (const auto& single_string : tmp_vect) {
strset_out.insert(single_string); strset_out.insert(single_string);
} }
} }
std::string DataElement::toString() { std::string DataElement::toString() {
int dataType = getDataType(); int dataType = getDataType();
std::string strValue = ""; std::string strValue;
try { try {
if (dataType == DATA_STRING) { if (dataType == DATA_STRING) {
@ -151,7 +146,7 @@ std::string DataElement::toString() {
else { else {
std::cout << "Unhandled DataElement toString for type: " << dataType << std::endl; std::cout << "Unhandled DataElement toString for type: " << dataType << std::endl;
} }
} catch (DataTypeMismatchException e) { } catch (const DataTypeMismatchException &e) {
std::cout << "toString() DataTypeMismatch: " << dataType << std::endl; std::cout << "toString() DataTypeMismatch: " << dataType << std::endl;
} }
@ -160,16 +155,16 @@ std::string DataElement::toString() {
/* DataNode class */ /* DataNode class */
DataNode::DataNode(): parentNode(NULL), ptr(0) { DataNode::DataNode(): parentNode(nullptr), ptr(0) {
data_elem = new DataElement(); data_elem = new DataElement();
} }
DataNode::DataNode(const char *name_in): parentNode(NULL), ptr(0) { DataNode::DataNode(const char *name_in): parentNode(nullptr), ptr(0) {
node_name = name_in; node_name = name_in;
data_elem = new DataElement(); data_elem = new DataElement();
} }
DataNode::DataNode(const char *name_in, DataNode &cloneFrom): parentNode(NULL), ptr(0) { DataNode::DataNode(const char *name_in, DataNode &cloneFrom): parentNode(nullptr), ptr(0) {
node_name = name_in; node_name = name_in;
data_elem = new DataElement(*cloneFrom.element()); data_elem = new DataElement(*cloneFrom.element());
@ -180,20 +175,18 @@ DataNode::DataNode(const char *name_in, DataNode &cloneFrom): parentNode(NULL),
} }
} }
DataNode::DataNode(const char *name_in, DataElement &cloneFrom): parentNode(NULL), ptr(0) { DataNode::DataNode(const char *name_in, DataElement &cloneFrom): parentNode(nullptr), ptr(0) {
node_name = name_in; node_name = name_in;
data_elem = new DataElement(cloneFrom); data_elem = new DataElement(cloneFrom);
} }
DataNode::~DataNode() { DataNode::~DataNode() {
while (children.size()) { while (!children.empty()) {
DataNode *del = children.back(); DataNode *del = children.back();
children.pop_back(); children.pop_back();
delete del; delete del;
} }
if (data_elem) { delete data_elem;
delete data_elem;
}
} }
void DataNode::setName(const char *name_in) { void DataNode::setName(const char *name_in) {
@ -223,7 +216,7 @@ DataNode *DataNode::newChild(const char *name_in, DataNode *otherNode) {
} }
DataNode *DataNode::newChildCloneFrom(const char *name_in, DataNode *cloneFrom) { DataNode *DataNode::newChildCloneFrom(const char *name_in, DataNode *cloneFrom) {
DataNode *cloneNode = new DataNode(name_in, *cloneFrom->element()); auto *cloneNode = new DataNode(name_in, *cloneFrom->element());
children.push_back(cloneNode); children.push_back(cloneNode);
childmap[name_in].push_back(children.back()); childmap[name_in].push_back(children.back());
@ -309,13 +302,9 @@ DataTree::DataTree(const char *name_in) {
dn_root.setName(name_in); dn_root.setName(name_in);
} }
DataTree::DataTree() { DataTree::DataTree() = default;
} DataTree::~DataTree() = default;
DataTree::~DataTree() {
}
;
DataNode *DataTree::rootNode() { DataNode *DataTree::rootNode() {
return &dn_root; return &dn_root;
@ -342,8 +331,8 @@ string DataTree::wsEncode(const wstring& wstr) {
encStream << std::hex; encStream << std::hex;
for(auto i = byte_str.begin(); i != byte_str.end(); i++) { for(char & i : byte_str) {
encStream << '%' << setfill('0') << (unsigned int)((unsigned char)(*i)); encStream << '%' << setfill('0') << (unsigned int)((unsigned char)i);
} }
return encStream.str(); return encStream.str();
@ -366,7 +355,7 @@ wstring DataTree::wsDecode(const string& str) {
size_t maxLen = decStr.length(); size_t maxLen = decStr.length();
//wchar_t is typically 16 bits on windows, and 32 bits on Unix, so use sizeof(wchar_t) everywhere. //wchar_t is typically 16 bits on windows, and 32 bits on Unix, so use sizeof(wchar_t) everywhere.
wchar_t *wc_str = (wchar_t *) ::calloc(maxLen + 1, sizeof(wchar_t)); auto *wc_str = (wchar_t *) ::calloc(maxLen + 1, sizeof(wchar_t));
while (!decStream.eof()) { while (!decStream.eof()) {
decStream >> std::hex >> x; decStream >> std::hex >> x;
@ -589,7 +578,7 @@ void DataTree::setFromXML(DataNode *elem, TiXmlNode *elxml, bool root_node, DT_F
if (elxml->FirstChild()->Value() == TIXML_STRING("str")) { if (elxml->FirstChild()->Value() == TIXML_STRING("str")) {
std::vector<std::string> tmp_strvect; std::vector<std::string> tmp_strvect;
for (pChild = elxml->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) { for (pChild = elxml->FirstChild(); pChild != nullptr; pChild = pChild->NextSibling()) {
if (pChild->Value() == TIXML_STRING("str")) { if (pChild->Value() == TIXML_STRING("str")) {
if (!pChild->FirstChild()) { if (!pChild->FirstChild()) {
tmp_strvect.push_back(""); tmp_strvect.push_back("");
@ -612,7 +601,7 @@ void DataTree::setFromXML(DataNode *elem, TiXmlNode *elxml, bool root_node, DT_F
} }
} }
for (pChild = elxml->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) { for (pChild = elxml->FirstChild(); pChild != nullptr; pChild = pChild->NextSibling()) {
setFromXML(elem, pChild, false, fpp); setFromXML(elem, pChild, false, fpp);
} }
@ -678,7 +667,7 @@ void DataTree::nodeToXML(DataNode *elem, TiXmlElement *elxml) {
if (nodeName.substr(0, 1) == string("@")) { if (nodeName.substr(0, 1) == string("@")) {
elxml->SetAttribute(nodeName.substr(1).c_str(), tmp_pstr_as_string.c_str()); //the c_str take care of adding a null erminated character... elxml->SetAttribute(nodeName.substr(1).c_str(), tmp_pstr_as_string.c_str()); //the c_str take care of adding a null erminated character...
delete element; delete element;
element = NULL; element = nullptr;
} else { } else {
text = new TiXmlText(tmp_pstr_as_string.c_str()); text = new TiXmlText(tmp_pstr_as_string.c_str());
element->LinkEndChild(text); element->LinkEndChild(text);
@ -779,7 +768,7 @@ void DataTree::nodeToXML(DataNode *elem, TiXmlElement *elxml) {
if (nodeName.substr(0, 1) == string("@")) { if (nodeName.substr(0, 1) == string("@")) {
elxml->SetAttribute(nodeName.substr(1).c_str(), tmp.c_str()); elxml->SetAttribute(nodeName.substr(1).c_str(), tmp.c_str());
delete element; delete element;
element = NULL; element = nullptr;
} else { } else {
text = new TiXmlText(tmp.c_str()); text = new TiXmlText(tmp.c_str());
element->LinkEndChild(text); element->LinkEndChild(text);
@ -791,7 +780,7 @@ void DataTree::nodeToXML(DataNode *elem, TiXmlElement *elxml) {
if (nodeName.substr(0, 1) == string("@")) { if (nodeName.substr(0, 1) == string("@")) {
elxml->SetAttribute(nodeName.substr(1).c_str(), tmp.c_str()); elxml->SetAttribute(nodeName.substr(1).c_str(), tmp.c_str());
delete element; delete element;
element = NULL; element = nullptr;
} else { } else {
text = new TiXmlText(tmp.c_str()); text = new TiXmlText(tmp.c_str());
element->LinkEndChild(text); element->LinkEndChild(text);
@ -802,7 +791,7 @@ void DataTree::nodeToXML(DataNode *elem, TiXmlElement *elxml) {
tmp_stream.str(""); tmp_stream.str("");
for (auto single_string : tmp_stringvect) { for (const auto& single_string : tmp_stringvect) {
tmp_node = new TiXmlElement("str"); tmp_node = new TiXmlElement("str");
text = new TiXmlText(single_string.c_str()); text = new TiXmlText(single_string.c_str());
tmp_node->LinkEndChild(text); tmp_node->LinkEndChild(text);
@ -964,14 +953,14 @@ void DataTree::nodeToXML(DataNode *elem, TiXmlElement *elxml) {
void DataTree::printXML() /* get serialized size + return node names header */ void DataTree::printXML() /* get serialized size + return node names header */
{ {
TiXmlDocument doc; TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration("1.0", "", ""); auto * decl = new TiXmlDeclaration("1.0", "", "");
doc.LinkEndChild(decl); doc.LinkEndChild(decl);
DataNode *root = rootNode(); DataNode *root = rootNode();
string rootName = root->getName(); string rootName = root->getName();
TiXmlElement *element = new TiXmlElement(rootName.empty() ? "root" : rootName.c_str()); auto *element = new TiXmlElement(rootName.empty() ? "root" : rootName.c_str());
doc.LinkEndChild(element); doc.LinkEndChild(element);
if (!root->numChildren()) if (!root->numChildren())
@ -1079,12 +1068,12 @@ bool DataTree::LoadFromFileXML(const std::string& filename, DT_FloatingPointPoli
bool DataTree::SaveToFileXML(const std::string& filename) { bool DataTree::SaveToFileXML(const std::string& filename) {
TiXmlDocument doc; TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration("1.0", "", ""); auto * decl = new TiXmlDeclaration("1.0", "", "");
doc.LinkEndChild(decl); doc.LinkEndChild(decl);
string rootName = rootNode()->getName(); string rootName = rootNode()->getName();
TiXmlElement *element = new TiXmlElement(rootName.empty() ? "root" : rootName.c_str()); auto *element = new TiXmlElement(rootName.empty() ? "root" : rootName.c_str());
doc.LinkEndChild(element); doc.LinkEndChild(element);

View File

@ -48,29 +48,29 @@ struct string_less
/* Data Exceptions */ /* Data Exceptions */
class DataException class DataException : public exception
{ {
private: private:
string reason; string reason;
public: public:
DataException(const char *why) : reason(why) {} explicit DataException(const char *why) : reason(why) {}
string what() { return reason; } const char* what() const noexcept override { return reason.c_str(); }
operator string() { return reason; } explicit operator string() { return reason; }
}; };
class DataTypeMismatchException : public DataException class DataTypeMismatchException : public DataException
{ {
public: public:
DataTypeMismatchException(const char *why) : DataException(why) { } explicit DataTypeMismatchException(const char *why) : DataException(why) { }
}; };
class DataInvalidChildException : public DataException class DataInvalidChildException : public DataException
{ {
public: public:
DataInvalidChildException(const char *why) : DataException(why) { } explicit DataInvalidChildException(const char *why) : DataException(why) { }
}; };
@ -206,7 +206,7 @@ public:
int unit_size = sizeof(T); int unit_size = sizeof(T);
//copy in a temporary variable (needed ?) //copy in a temporary variable (needed ?)
T local_copy = scalar_in; T local_copy = scalar_in;
unsigned char* local_copy_ptr = reinterpret_cast<unsigned char*>(&local_copy); auto* local_copy_ptr = reinterpret_cast<unsigned char*>(&local_copy);
data_val.assign(local_copy_ptr, local_copy_ptr + unit_size); data_val.assign(local_copy_ptr, local_copy_ptr + unit_size);
} }
@ -227,7 +227,7 @@ public:
//copy in a temporary variable (needed ?) //copy in a temporary variable (needed ?)
T local_copy = single_element; T local_copy = single_element;
unsigned char* local_copy_ptr = reinterpret_cast<unsigned char*>(&local_copy); auto* local_copy_ptr = reinterpret_cast<unsigned char*>(&local_copy);
single_buffer.assign(local_copy_ptr, local_copy_ptr + unit_size); single_buffer.assign(local_copy_ptr, local_copy_ptr + unit_size);
@ -308,7 +308,7 @@ public:
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_UCHAR) { } else if (storageType == DATA_UCHAR) {
unsigned char* storage_ptr = reinterpret_cast<unsigned char*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<unsigned char*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_INT) { } else if (storageType == DATA_INT) {
@ -316,7 +316,7 @@ public:
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_UINT) { } else if (storageType == DATA_UINT) {
unsigned int* storage_ptr = reinterpret_cast<unsigned int*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<unsigned int*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_LONG) { } else if (storageType == DATA_LONG) {
@ -324,19 +324,19 @@ public:
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_ULONG) { } else if (storageType == DATA_ULONG) {
unsigned long* storage_ptr = reinterpret_cast<unsigned long*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<unsigned long*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_LONGLONG) { } else if (storageType == DATA_LONGLONG) {
long long* storage_ptr = reinterpret_cast<long long*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<long long*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_FLOAT) { } else if (storageType == DATA_FLOAT) {
float* storage_ptr = reinterpret_cast<float*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<float*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_DOUBLE) { } else if (storageType == DATA_DOUBLE) {
double* storage_ptr = reinterpret_cast<double*>(&data_val[0]); auto* storage_ptr = reinterpret_cast<double*>(&data_val[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} }
@ -367,7 +367,7 @@ public:
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_UCHAR_VECTOR) { } else if (storageType == DATA_UCHAR_VECTOR) {
unsigned char* storage_ptr = reinterpret_cast<unsigned char*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<unsigned char*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_INT_VECTOR) { } else if (storageType == DATA_INT_VECTOR) {
@ -375,7 +375,7 @@ public:
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_UINT_VECTOR) { } else if (storageType == DATA_UINT_VECTOR) {
unsigned int* storage_ptr = reinterpret_cast<unsigned int*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<unsigned int*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_LONG_VECTOR) { } else if (storageType == DATA_LONG_VECTOR) {
@ -383,19 +383,19 @@ public:
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_ULONG_VECTOR) { } else if (storageType == DATA_ULONG_VECTOR) {
unsigned long* storage_ptr = reinterpret_cast<unsigned long*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<unsigned long*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_LONGLONG_VECTOR) { } else if (storageType == DATA_LONGLONG_VECTOR) {
long long* storage_ptr = reinterpret_cast<long long*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<long long*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_FLOAT_VECTOR) { } else if (storageType == DATA_FLOAT_VECTOR) {
float* storage_ptr = reinterpret_cast<float*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<float*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} else if (storageType == DATA_DOUBLE_VECTOR) { } else if (storageType == DATA_DOUBLE_VECTOR) {
double* storage_ptr = reinterpret_cast<double*>(&single_storage_element[0]); auto* storage_ptr = reinterpret_cast<double*>(&single_storage_element[0]);
//constructor-like //constructor-like
scalar_out = T(*storage_ptr); scalar_out = T(*storage_ptr);
} }
@ -450,7 +450,7 @@ public:
size_t maxNbWchars = getDataSize() / sizeof(wchar_t); size_t maxNbWchars = getDataSize() / sizeof(wchar_t);
//be paranoid, zero the buffer //be paranoid, zero the buffer
wchar_t *tmp_wstr = (wchar_t *)::calloc(maxNbWchars + 1, sizeof(wchar_t)); auto *tmp_wstr = (wchar_t *)::calloc(maxNbWchars + 1, sizeof(wchar_t));
//the last wchar_t is actually zero if anything goes wrong... //the last wchar_t is actually zero if anything goes wrong...
::mbstowcs(tmp_wstr, (const char*)&data_val[0], maxNbWchars); ::mbstowcs(tmp_wstr, (const char*)&data_val[0], maxNbWchars);
@ -516,7 +516,7 @@ private:
public: public:
DataNode(); DataNode();
DataNode(const char *name_in); explicit DataNode(const char *name_in);
DataNode(const char *name_in, DataElement &cloneFrom); DataNode(const char *name_in, DataElement &cloneFrom);
DataNode(const char *name_in, DataNode &cloneFrom); DataNode(const char *name_in, DataNode &cloneFrom);
@ -550,26 +550,26 @@ public:
void findAll(const char *name_in, vector<DataNode *> &node_list_out); void findAll(const char *name_in, vector<DataNode *> &node_list_out);
// operator string () { string s; element()->get(s); return s; } explicit operator string () { string s; element()->get(s); return s; }
operator const char * () { if (element()->getDataType() == DataElement::DATA_STRING) { return element()->getDataPointer(); } else { return NULL; } } explicit operator const char * () { if (element()->getDataType() == DataElement::DATA_STRING) { return element()->getDataPointer(); } else { return nullptr; } }
operator char () { char v; element()->get(v); return v; } explicit operator char () { char v=0; element()->get(v); return v; }
operator unsigned char () { unsigned char v; element()->get(v); return v; } explicit operator unsigned char () { unsigned char v=0; element()->get(v); return v; }
operator int () { int v; element()->get(v); return v; } explicit operator int () { int v=0; element()->get(v); return v; }
operator unsigned int () { unsigned int v; element()->get(v); return v; } explicit operator unsigned int () { unsigned int v=0; element()->get(v); return v; }
operator long () { long v; element()->get(v); return v; } explicit operator long () { long v=0; element()->get(v); return v; }
operator unsigned long () { unsigned long v; element()->get(v); return v; } explicit operator unsigned long () { unsigned long v=0; element()->get(v); return v; }
operator long long () { long long v; element()->get(v); return v; } explicit operator long long () { long long v=0; element()->get(v); return v; }
operator float () { float v; element()->get(v); return v; } explicit operator float () { float v=0; element()->get(v); return v; }
operator double () { double v; element()->get(v); return v; } explicit operator double () { double v=0; element()->get(v); return v; }
operator vector<char> () { vector<char> v; element()->get(v); return v; } explicit operator vector<char> () { vector<char> v; element()->get(v); return v; }
operator vector<unsigned char> () { vector<unsigned char> v; element()->get(v); return v; } explicit operator vector<unsigned char> () { vector<unsigned char> v; element()->get(v); return v; }
operator vector<int> () { vector<int> v; element()->get(v); return v; } explicit operator vector<int> () { vector<int> v; element()->get(v); return v; }
operator vector<unsigned int> () { vector<unsigned int> v; element()->get(v); return v; } explicit operator vector<unsigned int> () { vector<unsigned int> v; element()->get(v); return v; }
operator vector<long> () { vector<long> v; element()->get(v); return v; } explicit operator vector<long> () { vector<long> v; element()->get(v); return v; }
operator vector<unsigned long> () { vector<unsigned long> v; element()->get(v); return v; } explicit operator vector<unsigned long> () { vector<unsigned long> v; element()->get(v); return v; }
operator vector<float> () { vector<float> v; element()->get(v); return v; } explicit operator vector<float> () { vector<float> v; element()->get(v); return v; }
operator vector<double> () { vector<double> v; element()->get(v); return v; } explicit operator vector<double> () { vector<double> v; element()->get(v); return v; }
const string &operator= (const string &s) { element()->set(s); return s; } const string &operator= (const string &s) { element()->set(s); return s; }
const wstring &operator= (const wstring &s) { element()->set(s); return s; } const wstring &operator= (const wstring &s) { element()->set(s); return s; }
@ -619,7 +619,7 @@ private:
wstring wsDecode(const string& str); wstring wsDecode(const string& str);
public: public:
DataTree(const char *name_in); explicit DataTree(const char *name_in);
DataTree(); DataTree();
~DataTree(); ~DataTree();

View File

@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
#include "GLExt.h" #include "GLExt.h"
#include <cstring>
#include <iostream> #include <iostream>
#ifdef __APPLE__ #ifdef __APPLE__
@ -64,10 +63,10 @@ void initGLExtensions() {
#if defined(__linux__) || defined(__FreeBSD__) #if defined(__linux__) || defined(__FreeBSD__)
dlopen("libglx.so",RTLD_LAZY); dlopen("libglx.so",RTLD_LAZY);
void (*glxSwapIntervalEXTFunc) (Display *dpy, GLXDrawable drawable, int interval) = 0; void (*glxSwapIntervalEXTFunc) (Display *dpy, GLXDrawable drawable, int interval) = nullptr;
int (*glxSwapIntervalMESAFunc)(unsigned int interval) = 0; int (*glxSwapIntervalMESAFunc)(unsigned int interval) = nullptr;
int (*glxSwapIntervalSGIFunc) (int interval) = 0; int (*glxSwapIntervalSGIFunc) (int interval) = nullptr;
void (*DRI2SwapIntervalFunc) (Display *dpy, XID drawable, int interval) = 0; void (*DRI2SwapIntervalFunc) (Display *dpy, XID drawable, int interval) = nullptr;
glxSwapIntervalEXTFunc = (void (*) (Display *dpy, GLXDrawable drawable, int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalEXT"); glxSwapIntervalEXTFunc = (void (*) (Display *dpy, GLXDrawable drawable, int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalEXT");
glxSwapIntervalMESAFunc = (int (*)(unsigned int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalMESA"); glxSwapIntervalMESAFunc = (int (*)(unsigned int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalMESA");
@ -75,10 +74,10 @@ void initGLExtensions() {
DRI2SwapIntervalFunc = (void (*) (Display *dpy, XID drawable, int interval)) dlsym(RTLD_DEFAULT,"DRI2SwapInterval"); DRI2SwapIntervalFunc = (void (*) (Display *dpy, XID drawable, int interval)) dlsym(RTLD_DEFAULT,"DRI2SwapInterval");
std::cout << "Available vertical sync SwapInterval functions: " << std::endl; std::cout << "Available vertical sync SwapInterval functions: " << std::endl;
std::cout << "\tglxSwapIntervalEXT: " << ((glxSwapIntervalEXTFunc != 0)?"Yes":"No") << std::endl; std::cout << "\tglxSwapIntervalEXT: " << ((glxSwapIntervalEXTFunc != nullptr)?"Yes":"No") << std::endl;
std::cout << "\tDRI2SwapInterval: " << ((DRI2SwapIntervalFunc != 0)?"Yes":"No") << std::endl; std::cout << "\tDRI2SwapInterval: " << ((DRI2SwapIntervalFunc != nullptr)?"Yes":"No") << std::endl;
std::cout << "\tglxSwapIntervalMESA: " << ((glxSwapIntervalMESAFunc != 0)?"Yes":"No") << std::endl; std::cout << "\tglxSwapIntervalMESA: " << ((glxSwapIntervalMESAFunc != nullptr)?"Yes":"No") << std::endl;
std::cout << "\tglxSwapIntervalSGI: " << ((glxSwapIntervalSGIFunc != 0)?"Yes":"No") << std::endl; std::cout << "\tglxSwapIntervalSGI: " << ((glxSwapIntervalSGIFunc != nullptr)?"Yes":"No") << std::endl;
if (glxSwapIntervalEXTFunc) { if (glxSwapIntervalEXTFunc) {
Display *dpy = glXGetCurrentDisplay(); Display *dpy = glXGetCurrentDisplay();

View File

@ -54,15 +54,13 @@ GLFontChar::GLFontChar() :
} }
GLFontChar::~GLFontChar() { GLFontChar::~GLFontChar() = default;
}
void GLFontChar::setId(int idval) { void GLFontChar::setId(int idval) {
id = idval; id = idval;
} }
int GLFontChar::getId() { int GLFontChar::getId() const {
return id; return id;
} }
@ -116,7 +114,7 @@ void GLFontChar::setHeight(int h) {
} }
} }
int GLFontChar::getHeight() { int GLFontChar::getHeight() const {
return height; return height;
} }
@ -128,7 +126,7 @@ int GLFontChar::getXAdvance() {
return xadvance; return xadvance;
} }
float GLFontChar::getAspect() { float GLFontChar::getAspect() const {
return aspect; return aspect;
} }
@ -136,7 +134,7 @@ void GLFontChar::setIndex(unsigned int idx) {
index = idx; index = idx;
} }
int GLFontChar::getIndex() { int GLFontChar::getIndex() const {
return index; return index;
} }
@ -148,9 +146,7 @@ GLFont::GLFont(GLFontSize size, std::wstring defFileName):
fontDefFileSource = defFileName; fontDefFileSource = defFileName;
} }
GLFont::~GLFont() { GLFont::~GLFont() = default;
}
std::wstring GLFont::nextParam(std::wistringstream &str) { std::wstring GLFont::nextParam(std::wistringstream &str) {
std::wstring param_str; std::wstring param_str;
@ -171,7 +167,7 @@ std::wstring GLFont::nextParam(std::wistringstream &str) {
std::wstring GLFont::getParamKey(const std::wstring& param_str) { std::wstring GLFont::getParamKey(const std::wstring& param_str) {
std::wstring keyName; std::wstring keyName;
size_t eqpos = param_str.find(L"="); size_t eqpos = param_str.find(L'=');
if (eqpos != std::wstring::npos) { if (eqpos != std::wstring::npos) {
keyName = param_str.substr(0, eqpos); keyName = param_str.substr(0, eqpos);
@ -183,7 +179,7 @@ std::wstring GLFont::getParamKey(const std::wstring& param_str) {
std::wstring GLFont::getParamValue(const std::wstring& param_str) { std::wstring GLFont::getParamValue(const std::wstring& param_str) {
std::wstring value; std::wstring value;
size_t eqpos = param_str.find(L"="); size_t eqpos = param_str.find(L'=');
if (eqpos != std::wstring::npos) { if (eqpos != std::wstring::npos) {
value = param_str.substr(eqpos + 1); value = param_str.substr(eqpos + 1);
@ -334,7 +330,7 @@ void GLFont::loadFontOnce() {
getline(input, char_param_str); getline(input, char_param_str);
std::wistringstream char_param(char_param_str); std::wistringstream char_param(char_param_str);
GLFontChar *newChar = new GLFontChar; auto *newChar = new GLFontChar;
while (!char_param.eof()) { while (!char_param.eof()) {
std::wstring param = nextParam(char_param); std::wstring param = nextParam(char_param);
@ -381,7 +377,7 @@ void GLFont::loadFontOnce() {
} }
} }
if (imageFile != "" && imageWidth && imageHeight && characters.size()) { if (!imageFile.empty() && imageWidth && imageHeight && !characters.empty()) {
// Load file and decode image. // Load file and decode image.
std::vector<unsigned char> image; std::vector<unsigned char> image;
@ -393,7 +389,7 @@ void GLFont::loadFontOnce() {
int png_size = png_file.Length(); int png_size = png_file.Length();
unsigned char* raw_image = new unsigned char[png_size]; auto* raw_image = new unsigned char[png_size];
if (png_size > 0) { if (png_size > 0) {
@ -482,9 +478,7 @@ float GLFont::getStringWidth(const std::wstring& str, float size, float viewAspe
float width = 0; float width = 0;
for (int i = 0, iMax = str.length(); i < iMax; i++) { for (int charId : str) {
int charId = str.at(i);
if (characters.find(charId) == characters.end()) { if (characters.find(charId) == characters.end()) {
continue; continue;
} }
@ -599,9 +593,7 @@ void GLFont::drawString(const std::wstring& str, int pxHeight, float xpos, float
glVertexPointer(2, GL_FLOAT, 0, &gl_vertices[0]); glVertexPointer(2, GL_FLOAT, 0, &gl_vertices[0]);
glTexCoordPointer(2, GL_FLOAT, 0, &gl_uv[0]); glTexCoordPointer(2, GL_FLOAT, 0, &gl_uv[0]);
for (int i = 0, iMax = str.length(); i < iMax; i++) { for (int charId : str) {
int charId = str.at(i);
if (characters.find(charId) == characters.end()) { if (characters.find(charId) == characters.end()) {
continue; continue;
} }
@ -644,7 +636,7 @@ void GLFont::drawString(const std::string& str, int pxHeight, float xpos, float
} }
// Draw cached GLFontCacheString // Draw cached GLFontCacheString
void GLFont::drawCacheString(GLFontStringCache *fc, float xpos, float ypos, Align hAlign, Align vAlign) { void GLFont::drawCacheString(GLFontStringCache *fc, float xpos, float ypos, Align hAlign, Align vAlign) const {
float size = (float) fc->pxHeight / (float) fc->vpy; float size = (float) fc->pxHeight / (float) fc->vpy;
@ -701,7 +693,7 @@ void GLFont::drawCacheString(GLFontStringCache *fc, float xpos, float ypos, Alig
// Compile optimized GLFontCacheString // Compile optimized GLFontCacheString
GLFontStringCache *GLFont::cacheString(const std::wstring& str, int pxHeight, int vpx, int vpy) { GLFontStringCache *GLFont::cacheString(const std::wstring& str, int pxHeight, int vpx, int vpy) {
GLFontStringCache *fc = new GLFontStringCache; auto *fc = new GLFontStringCache;
fc->pxHeight = pxHeight; fc->pxHeight = pxHeight;
fc->vpx = vpx; fc->vpx = vpx;
@ -713,9 +705,7 @@ GLFontStringCache *GLFont::cacheString(const std::wstring& str, int pxHeight, in
fc->msgWidth = getStringWidth(str, size, viewAspect); fc->msgWidth = getStringWidth(str, size, viewAspect);
int nChar = 0; int nChar = 0;
for (int i = 0, iMax = str.length(); i < iMax; i++) { for (int charId : str) {
int charId = str.at(i);
if (characters.find(charId) == characters.end()) { if (characters.find(charId) == characters.end()) {
continue; continue;
} }
@ -730,9 +720,7 @@ GLFontStringCache *GLFont::cacheString(const std::wstring& str, int pxHeight, in
CubicVR::mat4 trans = CubicVR::mat4::scale(size / viewAspect, size, 1.0f); CubicVR::mat4 trans = CubicVR::mat4::scale(size / viewAspect, size, 1.0f);
int c = 0; int c = 0;
for (int i = 0, iMax = str.length(); i < iMax; i++) { for (int charId : str) {
int charId = str.at(i);
if (characters.find(charId) == characters.end()) { if (characters.find(charId) == characters.end()) {
continue; continue;
} }
@ -915,7 +903,7 @@ GLFont::Drawer::Drawer(int basicFontSize, double scaleFactor) {
renderingFontScaleFactor = (double) targetSize / rawSize; renderingFontScaleFactor = (double) targetSize / rawSize;
} }
void GLFont::Drawer::drawString(const std::wstring& str, float xpos, float ypos, Align hAlign, Align vAlign, int vpx, int vpy, bool cacheable) { void GLFont::Drawer::drawString(const std::wstring& str, float xpos, float ypos, Align hAlign, Align vAlign, int vpx, int vpy, bool cacheable) const {
GLFont& appliedFont = fonts[renderingFontIndex]; GLFont& appliedFont = fonts[renderingFontIndex];
@ -923,7 +911,7 @@ void GLFont::Drawer::drawString(const std::wstring& str, float xpos, float ypos,
} }
//Public drawing font, 8 bit char version. //Public drawing font, 8 bit char version.
void GLFont::Drawer::drawString(const std::string& str, float xpos, float ypos, Align hAlign, Align vAlign, int vpx, int vpy, bool cacheable) { void GLFont::Drawer::drawString(const std::string& str, float xpos, float ypos, Align hAlign, Align vAlign, int vpx, int vpy, bool cacheable) const {
GLFont& appliedFont = fonts[renderingFontIndex]; GLFont& appliedFont = fonts[renderingFontIndex];

View File

@ -35,7 +35,7 @@ public:
void setId(int idval); void setId(int idval);
// Returns the code point of the 16bit character, supposely Unicode. // Returns the code point of the 16bit character, supposely Unicode.
int getId(); int getId() const;
void setXOffset(int xofs); void setXOffset(int xofs);
int getXOffset(); int getXOffset();
@ -53,15 +53,15 @@ public:
int getWidth(); int getWidth();
void setHeight(int h); void setHeight(int h);
int getHeight(); int getHeight() const;
void setXAdvance(int xadv); void setXAdvance(int xadv);
int getXAdvance(); int getXAdvance();
float getAspect(); float getAspect() const;
void setIndex(unsigned int idx); void setIndex(unsigned int idx);
int getIndex(); int getIndex() const;
private: private:
// this is the code point of the 16bit character, supposly Unicode. // this is the code point of the 16bit character, supposly Unicode.
@ -140,7 +140,7 @@ private:
void drawString(const std::string& str, int pxHeight, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false); void drawString(const std::string& str, int pxHeight, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false);
GLFontStringCache *cacheString(const std::wstring& str, int pxHeight, int vpx, int vpy); GLFontStringCache *cacheString(const std::wstring& str, int pxHeight, int vpx, int vpy);
void drawCacheString(GLFontStringCache *fc, float xpos, float ypos, Align hAlign, Align vAlign); void drawCacheString(GLFontStringCache *fc, float xpos, float ypos, Align hAlign, Align vAlign) const;
void doCacheGC(); void doCacheGC();
void clearCache(); void clearCache();
@ -195,10 +195,10 @@ public:
Drawer(int basicFontSize, double scaleFactor); Drawer(int basicFontSize, double scaleFactor);
//Public drawing font, 16 bit char version. //Public drawing font, 16 bit char version.
void drawString(const std::wstring& str, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false); void drawString(const std::wstring& str, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false) const;
//Public drawing font, 8 bit char version. //Public drawing font, 8 bit char version.
void drawString(const std::string& str, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false); void drawString(const std::string& str, float xpos, float ypos, Align hAlign = GLFONT_ALIGN_LEFT, Align vAlign = GLFONT_ALIGN_TOP, int vpx = 0, int vpy = 0, bool cacheable = false) const;
}; //end class Drawer }; //end class Drawer

View File

@ -2,11 +2,9 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
#include "Gradient.h" #include "Gradient.h"
#include <stddef.h> #include <cstddef>
Gradient::Gradient() { Gradient::Gradient() = default;
//nothing
}
void Gradient::clear() { void Gradient::clear() {
colors.clear(); colors.clear();
@ -86,6 +84,4 @@ void Gradient::generate(unsigned int len) {
} }
} }
Gradient::~Gradient() { Gradient::~Gradient() = default;
}

View File

@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
#include "MouseTracker.h" #include "MouseTracker.h"
#include <iostream>
MouseTracker::MouseTracker(wxWindow *target) : MouseTracker::MouseTracker(wxWindow *target) :
mouseX(0), mouseY(0), lastMouseX(0), lastMouseY(0), originMouseX(0), originMouseY(0), deltaMouseX(0), deltaMouseY(0), vertDragLock(false), horizDragLock( mouseX(0), mouseY(0), lastMouseX(0), lastMouseY(0), originMouseX(0), originMouseY(0), deltaMouseX(0), deltaMouseY(0), vertDragLock(false), horizDragLock(
@ -11,12 +10,12 @@ MouseTracker::MouseTracker(wxWindow *target) :
} }
MouseTracker::MouseTracker() : MouseTracker::MouseTracker() :
MouseTracker(NULL) { MouseTracker(nullptr) {
} }
void MouseTracker::OnMouseMoved(wxMouseEvent& event) { void MouseTracker::OnMouseMoved(wxMouseEvent& event) {
if (target == NULL) { if (target == nullptr) {
return; return;
} }
@ -55,7 +54,7 @@ void MouseTracker::OnMouseWheelMoved(wxMouseEvent& /* event */) {
} }
void MouseTracker::OnMouseDown(wxMouseEvent& event) { void MouseTracker::OnMouseDown(wxMouseEvent& event) {
if (isMouseRightDown || target == NULL) { if (isMouseRightDown || target == nullptr) {
return; return;
} }
@ -75,7 +74,7 @@ void MouseTracker::OnMouseReleased(wxMouseEvent& /* event */) {
} }
void MouseTracker::OnMouseRightDown(wxMouseEvent& event) { void MouseTracker::OnMouseRightDown(wxMouseEvent& event) {
if (isMouseDown || target == NULL) { if (isMouseDown || target == nullptr) {
return; return;
} }
@ -106,47 +105,47 @@ void MouseTracker::OnMouseLeftWindow(wxMouseEvent& /* event */) {
isMouseInView = false; isMouseInView = false;
} }
float MouseTracker::getOriginMouseX() { float MouseTracker::getOriginMouseX() const {
return originMouseX; return originMouseX;
} }
float MouseTracker::getOriginMouseY() { float MouseTracker::getOriginMouseY() const {
return originMouseY; return originMouseY;
} }
float MouseTracker::getOriginDeltaMouseX() { float MouseTracker::getOriginDeltaMouseX() const {
return mouseX - originMouseX; return mouseX - originMouseX;
} }
float MouseTracker::getOriginDeltaMouseY() { float MouseTracker::getOriginDeltaMouseY() const {
return mouseY - originMouseY; return mouseY - originMouseY;
} }
float MouseTracker::getDeltaMouseX() { float MouseTracker::getDeltaMouseX() const {
return deltaMouseX; return deltaMouseX;
} }
float MouseTracker::getDeltaMouseY() { float MouseTracker::getDeltaMouseY() const {
return deltaMouseY; return deltaMouseY;
} }
float MouseTracker::getLastMouseX() { float MouseTracker::getLastMouseX() const {
return lastMouseX; return lastMouseX;
} }
float MouseTracker::getLastMouseY() { float MouseTracker::getLastMouseY() const {
return lastMouseY; return lastMouseY;
} }
CubicVR::vec2 MouseTracker::getGLXY() { CubicVR::vec2 MouseTracker::getGLXY() const {
return CubicVR::vec2((getMouseX()-0.5)*2.0, (getMouseY()-0.5)*2.0); return CubicVR::vec2((getMouseX()-0.5)*2.0, (getMouseY()-0.5)*2.0);
} }
float MouseTracker::getMouseX() { float MouseTracker::getMouseX() const {
return mouseX; return mouseX;
} }
float MouseTracker::getMouseY() { float MouseTracker::getMouseY() const {
return mouseY; return mouseY;
} }
@ -158,19 +157,19 @@ void MouseTracker::setHorizDragLock(bool dragLock) {
horizDragLock = dragLock; horizDragLock = dragLock;
} }
bool MouseTracker::getVertDragLock() { bool MouseTracker::getVertDragLock() const {
return vertDragLock; return vertDragLock;
} }
bool MouseTracker::getHorizDragLock() { bool MouseTracker::getHorizDragLock() const {
return horizDragLock; return horizDragLock;
} }
bool MouseTracker::mouseDown() { bool MouseTracker::mouseDown() const {
return isMouseDown; return isMouseDown;
} }
bool MouseTracker::mouseInView() { bool MouseTracker::mouseInView() const {
return isMouseInView; return isMouseInView;
} }
@ -179,6 +178,6 @@ void MouseTracker::setTarget(wxWindow *target_in) {
} }
bool MouseTracker::mouseRightDown() { bool MouseTracker::mouseRightDown() const {
return isMouseRightDown; return isMouseRightDown;
} }

View File

@ -20,25 +20,25 @@ public:
void OnMouseEnterWindow(wxMouseEvent& event); void OnMouseEnterWindow(wxMouseEvent& event);
void OnMouseLeftWindow(wxMouseEvent& event); void OnMouseLeftWindow(wxMouseEvent& event);
float getOriginMouseX(); float getOriginMouseX() const;
float getOriginMouseY(); float getOriginMouseY() const;
float getOriginDeltaMouseX(); float getOriginDeltaMouseX() const;
float getOriginDeltaMouseY(); float getOriginDeltaMouseY() const;
float getDeltaMouseX(); float getDeltaMouseX() const;
float getDeltaMouseY(); float getDeltaMouseY() const;
float getLastMouseX(); float getLastMouseX() const;
float getLastMouseY(); float getLastMouseY() const;
CubicVR::vec2 getGLXY(); CubicVR::vec2 getGLXY() const;
float getMouseX(); float getMouseX() const;
float getMouseY(); float getMouseY() const;
void setVertDragLock(bool dragLock); void setVertDragLock(bool dragLock);
void setHorizDragLock(bool dragLock); void setHorizDragLock(bool dragLock);
bool getVertDragLock(); bool getVertDragLock() const;
bool getHorizDragLock(); bool getHorizDragLock() const;
bool mouseDown(); bool mouseDown() const;
bool mouseRightDown(); bool mouseRightDown() const;
bool mouseInView(); bool mouseInView() const;
void setTarget(wxWindow *target_in); void setTarget(wxWindow *target_in);
private: private:

View File

@ -7,7 +7,7 @@
#include <mutex> #include <mutex>
#include <thread> #include <thread>
#include <cstdint> #include <cstdint>
#include <stddef.h> #include <cstddef>
#include <condition_variable> #include <condition_variable>
#include <typeinfo> #include <typeinfo>
#include <iostream> #include <iostream>

View File

@ -4,7 +4,7 @@
#include <iostream> #include <iostream>
#include "Timer.h" #include "Timer.h"
Timer::Timer(void) : time_elapsed(0), system_milliseconds(0), start_time(0), end_time(0), last_update(0), num_updates(0), paused_time(0), offset(0), paused_state(false), lock_state(false), lock_rate(0) Timer::Timer() : time_elapsed(0), system_milliseconds(0), start_time(0), end_time(0), last_update(0), num_updates(0), paused_time(0), offset(0), paused_state(false), lock_state(false), lock_rate(0)
{ {
#ifdef _WIN32 #ifdef _WIN32
// According to Microsoft, QueryPerformanceXXX API is perfectly // According to Microsoft, QueryPerformanceXXX API is perfectly
@ -15,7 +15,7 @@ Timer::Timer(void) : time_elapsed(0), system_milliseconds(0), start_time(0), end
} }
void Timer::start(void) void Timer::start()
{ {
update(); update();
num_updates = 0; num_updates = 0;
@ -29,13 +29,13 @@ void Timer::start(void)
} }
void Timer::stop(void) void Timer::stop()
{ {
end_time = system_milliseconds; end_time = system_milliseconds;
} }
void Timer::reset(void) void Timer::reset()
{ {
start(); start();
} }
@ -63,12 +63,12 @@ void Timer::unlock()
lock_rate = 0; lock_rate = 0;
} }
bool Timer::locked() bool Timer::locked() const
{ {
return lock_state; return lock_state;
} }
void Timer::update(void) void Timer::update()
{ {
num_updates++; num_updates++;
last_update = system_milliseconds; last_update = system_milliseconds;
@ -105,14 +105,14 @@ void Timer::update(void)
} }
unsigned long Timer::getMilliseconds(void) unsigned long Timer::getMilliseconds() const
{ {
return time_elapsed; return time_elapsed;
} }
double Timer::getSeconds(void) double Timer::getSeconds() const
{ {
return ((double)getMilliseconds())/1000.0; return ((double)getMilliseconds())/1000.0;
} }
@ -131,30 +131,30 @@ void Timer::setSeconds(double seconds_in)
} }
double Timer::lastUpdateSeconds(void) double Timer::lastUpdateSeconds() const
{ {
return ((double)lastUpdateMilliseconds())/1000.0; return ((double)lastUpdateMilliseconds())/1000.0;
} }
unsigned long Timer::lastUpdateMilliseconds(void) unsigned long Timer::lastUpdateMilliseconds() const
{ {
return system_milliseconds-last_update; return system_milliseconds-last_update;
} }
unsigned long Timer::totalMilliseconds() unsigned long Timer::totalMilliseconds() const
{ {
return system_milliseconds-start_time; return system_milliseconds-start_time;
} }
double Timer::totalSeconds(void) double Timer::totalSeconds() const
{ {
return totalMilliseconds()/1000.0; return totalMilliseconds()/1000.0;
} }
unsigned long Timer::getNumUpdates(void) unsigned long Timer::getNumUpdates() const
{ {
return num_updates; return num_updates;
} }
@ -165,7 +165,7 @@ void Timer::paused(bool pause_in)
paused_state = pause_in; paused_state = pause_in;
} }
bool Timer::paused() bool Timer::paused() const
{ {
return paused_state; return paused_state;
} }

View File

@ -47,13 +47,13 @@ public:
/** /**
* Resets the timer to 0 and begins timing * Resets the timer to 0 and begins timing
*/ */
void start(void); void start();
/// Stop the timer /// Stop the timer
/** /**
* Stops the timer and records the end time * Stops the timer and records the end time
*/ */
void stop(void); void stop();
/// Locks the timer to a specified framerate (for recording / benchmarking purposes typically) /// Locks the timer to a specified framerate (for recording / benchmarking purposes typically)
/** /**
@ -71,20 +71,20 @@ public:
/** /**
* Check locked state * Check locked state
*/ */
bool locked(); bool locked() const;
/// Reset the timer counter /// Reset the timer counter
/** /**
* Resetting the timer will reset the current time to 0 * Resetting the timer will reset the current time to 0
*/ */
void reset(void); void reset();
/// Timer update /// Timer update
/** /**
* Calling the update command will bring the timer value up to date, this is meant * Calling the update command will bring the timer value up to date, this is meant
* to be called at the begining of the frame to establish the time index which is being drawn. * to be called at the begining of the frame to establish the time index which is being drawn.
*/ */
void update(void); void update();
/// Get the total time elapsed since the timer start, not counting paused time /// Get the total time elapsed since the timer start, not counting paused time
/** /**
@ -92,13 +92,13 @@ public:
* does not count the time elapsed while the timer is paused(). * does not count the time elapsed while the timer is paused().
* \return Total time elapsed since the timer start() to the last update() excluding time paused() in milliseconds * \return Total time elapsed since the timer start() to the last update() excluding time paused() in milliseconds
*/ */
unsigned long getMilliseconds(void); unsigned long getMilliseconds() const;
/// Alias of getMilliseconds() which returns time in seconds /// Alias of getMilliseconds() which returns time in seconds
/** /**
* \return Total time elapsed since the timer start() to the last update() excluding time paused() in seconds * \return Total time elapsed since the timer start() to the last update() excluding time paused() in seconds
*/ */
double getSeconds(void); double getSeconds() const;
/// Get the total time elapsed since the timer start /// Get the total time elapsed since the timer start
/** /**
@ -106,12 +106,12 @@ public:
* this includes any time accumulated during updates while paused() * this includes any time accumulated during updates while paused()
* \return Total time elapsed since the timer start() to the last update() including time paused() in milliseconds * \return Total time elapsed since the timer start() to the last update() including time paused() in milliseconds
*/ */
unsigned long totalMilliseconds(void); unsigned long totalMilliseconds() const;
/// Alias of totalMilliseconds() which returns time in seconds /// Alias of totalMilliseconds() which returns time in seconds
/** /**
* \return Total time elapsed since the timer start() to the last update() including time paused() in seconds * \return Total time elapsed since the timer start() to the last update() including time paused() in seconds
*/ */
double totalSeconds(void); double totalSeconds() const;
/// Set the amount of time elapsed /// Set the amount of time elapsed
/** /**
@ -132,7 +132,7 @@ public:
* an average frame rate. Also useful for merely determining how many frames have been drawn. * an average frame rate. Also useful for merely determining how many frames have been drawn.
* \return Number of times update() has been called * \return Number of times update() has been called
*/ */
unsigned long getNumUpdates(void); unsigned long getNumUpdates() const;
/// Get the timer duration during the last update /// Get the timer duration during the last update
/** /**
@ -140,12 +140,12 @@ public:
* can be used to accurately control values with a per-second rate or determine the current frame rate. * can be used to accurately control values with a per-second rate or determine the current frame rate.
* \return Duration of time between the last two calls to update() in milliseconds * \return Duration of time between the last two calls to update() in milliseconds
*/ */
unsigned long lastUpdateMilliseconds(void); unsigned long lastUpdateMilliseconds() const;
/// Alias of lastUpdateMilliseconds() which returns time in seconds /// Alias of lastUpdateMilliseconds() which returns time in seconds
/** /**
* \return Duration of time between the last two calls to update() in seconds * \return Duration of time between the last two calls to update() in seconds
*/ */
double lastUpdateSeconds(void); double lastUpdateSeconds() const;
/// Set the timer pause state /// Set the timer pause state
/** /**
@ -160,7 +160,7 @@ public:
/** /**
* \return Current pause state, true if paused, false otherwise * \return Current pause state, true if paused, false otherwise
*/ */
bool paused(); bool paused() const;