-
Notifications
You must be signed in to change notification settings - Fork 0
/
DgIVec2D.cpp
61 lines (46 loc) · 1.49 KB
/
DgIVec2D.cpp
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
////////////////////////////////////////////////////////////////////////////////
//
// DgIVec2D.cpp: DgIVec2D class implementation
//
// Version 6.1 - Kevin Sahr, 5/23/13
//
////////////////////////////////////////////////////////////////////////////////
#include <limits>
#include <cstdint>
#include "DgBase.h"
#include "DgIVec2D.h"
////////////////////////////////////////////////////////////////////////////////
const DgIVec2D& DgIVec2D::undefDgIVec2D = DgIVec2D(std::numeric_limits<int>::max(), std::numeric_limits<int>::max());
////////////////////////////////////////////////////////////////////////////////
const char*
DgIVec2D::fromString (const char* str, char delimiter)
{
char delimStr[2];
delimStr[0] = delimiter;
delimStr[1] = '\0';
char* tmpStr = new char[strlen(str) + 1];
strcpy(tmpStr, str);
// Get i and j:
char* tok;
std::int64_t iIn(0),
jIn(0);
try
{
tok = strtok(tmpStr, delimStr);
iIn = dgg::util::from_string<std::int64_t>(tok);
tok = strtok(NULL, delimStr);
jIn = dgg::util::from_string<std::int64_t>(tok);
}
catch(...)
{
::report("DgIVec2D::fromString() invalid value in string " + string(tok),
DgBase::Fatal);
}
setI(iIn);
setJ(jIn);
std::uint64_t offset = (tok - tmpStr) + strlen(tok) + 1;
if (offset >= strlen(str))
return 0;
return &str[offset];
} // const char* DgIVec2D::fromString
////////////////////////////////////////////////////////////////////////////////