forked from projectM-visualizer/projectm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommon.hpp
More file actions
executable file
·89 lines (71 loc) · 2.64 KB
/
Common.hpp
File metadata and controls
executable file
·89 lines (71 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
* projectM -- Milkdrop-esque visualisation SDK
* Copyright (C)2003-2007 projectM Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* See 'LICENSE.txt' included within this release
*
*/
#pragma once
#include <algorithm>
#include <cassert>
#include <cstdarg>
#include <locale>
#include <string>
#include <typeinfo>
#include <vector>
//CPP17: std::filesystem::path::preferred_separator
/** Per-platform path separators */
#ifdef _WIN32
char constexpr pathSeparator{'\\'};
#else
char constexpr pathSeparator{'/'};
#endif /** _WIN32 */
size_t constexpr maxTokenSize{512};
size_t constexpr maxPathSize{4096};
//CPP23: uz suffix (https://en.cppreference.com/w/cpp/language/integer_literal)
size_t constexpr stringBufferSize{static_cast<size_t>(1024 * 150)};
size_t constexpr stringLineSize{1024};
double constexpr maxDoubleSize{10000000.0};
double constexpr minDoubleSize{-maxDoubleSize};
int constexpr maxIntSize{10000000};
int constexpr minIntSize{-maxIntSize};
/* default float initial value */
double constexpr defaultDoubleIv{0.0};
/* default float lower bound */
double constexpr defaultDoubleLb{minDoubleSize};
/* default float upper bound */
double constexpr defaultDoubleUb{maxDoubleSize};
unsigned int const numQVariables(32);
//CPP17: std::filesystem::path::extension
inline auto ParseExtension(const std::string& filename) -> std::string
{
const std::size_t start = filename.find_last_of('.');
if (start == std::string::npos || start >= (filename.length() - 1)) {
return "";
}
std::string ext = filename.substr(start + 1, filename.length());
std::transform(ext.begin(), ext.end(), ext.begin(), tolower);
return ext;
}
//CPP17: std::filesystem::path::filename
inline auto ParseFilename(const std::string& filename) -> std::string
{
const std::size_t start = filename.find_last_of('/');
if (start == std::string::npos || start >= (filename.length() - 1)) {
return "";
}
return filename.substr(start + 1, filename.length());
}