Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Alexander Lapshin
common
Commits
822a313a
Commit
822a313a
authored
Mar 27, 2020
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
84183d1a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
102 additions
and
64 deletions
+102
-64
json_functions.h
json/json_functions.h
+74
-2
Converter.h
utils/Converter.h
+5
-23
MagData.cpp
utils/MagData.cpp
+8
-27
MagData.h
utils/MagData.h
+7
-9
TextFunctions.h
utils/TextFunctions.h
+3
-2
orb_block_data.cpp
utils/orb_block_data.cpp
+5
-1
No files found.
json/json_functions.h
View file @
822a313a
...
...
@@ -282,14 +282,14 @@ void loadjson(const jsonval& parent, std::map<T2, T>& map)
if
(
parent
.
IsArray
())
{
for
(
rapidjson
::
SizeType
i
=
0
;
i
<
parent
.
Size
();
i
++
)
{
T
item
;
loadjson
(
parent
[
i
],
item
);
item
.
load
(
parent
[
i
]
);
map
[
item
.
getId
()]
=
item
;
}
}
else
if
(
parent
.
IsObject
())
{
for
(
jsonval
::
ConstMemberIterator
itr
=
parent
.
MemberBegin
();
itr
!=
parent
.
MemberEnd
();
++
itr
)
{
T
item
;
loadjson
(
itr
->
value
,
item
);
item
.
load
(
itr
->
value
);
map
[
item
.
getId
()]
=
item
;
}
}
...
...
@@ -331,6 +331,39 @@ static bool loadjson(const jsonval& parent, const std::string& key, double& valu
return
true
;
}
static
bool
loadjson
(
const
jsonval
&
parent
,
const
std
::
string
&
key
,
float
&
value
,
const
bool
exist
=
true
,
bool
*
loaded
=
nullptr
)
{
jsonval
::
ConstMemberIterator
itr
;
if
(
!
extract_value
(
parent
,
key
,
exist
,
loaded
,
itr
))
{
return
false
;
}
const
jsonval
&
a
=
itr
->
value
;
if
(
a
.
IsNumber
())
{
value
=
a
.
GetDouble
();
}
else
if
(
a
.
IsString
())
{
std
::
string
str
=
a
.
GetString
();
if
(
str
.
empty
()
&&
!
exist
)
{
if
(
loaded
)
{
*
loaded
=
false
;
}
return
false
;
}
if
(
!
Converter
::
ToNumber
(
str
,
value
))
{
throw
(
Exp
()
<<
"bad value format '"
<<
str
<<
"'"
<<
" in container '"
);
}
}
else
{
throw
(
Exp
()
<<
"element '"
<<
key
<<
"'"
<<
" has unexpected format '"
);
}
return
true
;
}
static
bool
loadjson
(
const
jsonval
&
parent
,
const
std
::
string
&
key
,
int
&
value
,
const
bool
exist
=
true
,
bool
*
loaded
=
nullptr
)
{
jsonval
::
ConstMemberIterator
itr
;
...
...
@@ -364,6 +397,39 @@ static bool loadjson(const jsonval& parent, const std::string& key, int& value,
return
true
;
}
static
bool
loadjson
(
const
jsonval
&
parent
,
const
std
::
string
&
key
,
short
&
value
,
const
bool
exist
=
true
,
bool
*
loaded
=
nullptr
)
{
jsonval
::
ConstMemberIterator
itr
;
if
(
!
extract_value
(
parent
,
key
,
exist
,
loaded
,
itr
))
{
return
false
;
}
const
jsonval
&
a
=
itr
->
value
;
if
(
a
.
IsNumber
())
{
value
=
a
.
GetInt
();
}
else
if
(
a
.
IsString
())
{
std
::
string
str
=
a
.
GetString
();
if
(
str
.
empty
()
&&
!
exist
)
{
if
(
loaded
)
{
*
loaded
=
false
;
}
return
false
;
}
if
(
!
Converter
::
ToNumber
(
str
,
value
))
{
throw
(
Exp
()
<<
"bad value format '"
<<
str
<<
"'"
<<
" in container '"
);
}
}
else
{
throw
(
Exp
()
<<
"element '"
<<
key
<<
"'"
<<
" has unexpected format '"
);
}
return
true
;
}
static
bool
loadjson
(
const
jsonval
&
parent
,
const
std
::
string
&
key
,
size_t
&
value
,
const
bool
exist
=
true
,
bool
*
loaded
=
nullptr
)
{
jsonval
::
ConstMemberIterator
itr
;
...
...
@@ -629,6 +695,12 @@ static void PutValue(jsonalloc& alc, jsonval& ss, const std::string& conName, do
ss
.
AddMember
(
jname
,
value
,
alc
);
}
static
void
PutValue
(
jsonalloc
&
alc
,
jsonval
&
ss
,
const
std
::
string
&
conName
,
float
value
)
{
jsonval
jname
(
conName
,
alc
);
ss
.
AddMember
(
jname
,
value
,
alc
);
}
static
void
PutValue
(
jsonalloc
&
alc
,
jsonval
&
ss
,
const
std
::
string
&
conName
,
const
char
*
value
)
{
jsonval
jname
(
conName
,
alc
);
...
...
utils/Converter.h
View file @
822a313a
...
...
@@ -28,54 +28,36 @@ public:
static
bool
ToNumber
(
const
std
::
string
&
str
,
unsigned
short
int
&
val
)
{
// std::istringstream ss(str);
// ss >> val;
// return !ss.fail();
// int ival;
// bool res = str2int(ival, str.c_str()) == XSUCCESS;
// val = ival;
val
=
std
::
stoi
(
str
,
nullptr
);
return
true
;
}
static
bool
ToNumber
(
const
std
::
string
&
str
,
short
&
val
)
{
val
=
std
::
stoi
(
str
,
nullptr
);
return
true
;
}
static
bool
ToNumber
(
const
std
::
string
&
str
,
size_t
&
val
)
{
//std::istringstream ss(str);
//ss >> val;
//return !ss.fail();
val
=
std
::
stoi
(
str
,
nullptr
);
return
true
;
}
static
bool
ToNumber
(
const
std
::
string
&
str
,
int
&
val
)
{
//std::istringstream ss(str);
//ss >> val;
//return !ss.fail();
val
=
std
::
stoi
(
str
,
nullptr
);
return
true
;
}
static
bool
ToNumber
(
const
std
::
string
&
str
,
double
&
val
)
{
// std::istringstream ss(str);
// ss >> val;
// return !ss.fail();
val
=
std
::
stod
(
str
,
nullptr
);
return
true
;
}
static
bool
ToNumber
(
const
std
::
string
&
str
,
float
&
val
)
{
// std::istringstream ss(str);
// ss >> val;
// return !ss.fail();
val
=
std
::
stof
(
str
,
nullptr
);
return
true
;
}
...
...
utils/MagData.cpp
View file @
822a313a
#include "MagData.h"
#include "Consts.h"
#include "globals.h"
MagData
::
MagData
()
:
m_phase
(
0
),
m_range
(
0
),
m_mag
(
0
),
m_hasData
(
false
),
m_hasGeomData
(
false
)
{
}
MagData
::
MagData
()
=
default
;
void
MagData
::
SetOpticData
(
double
stdphase
,
double
stdtrange
,
double
stdmag
)
void
MagData
::
SetOpticData
(
const
double
stdphase_deg
,
const
double
stdtrange_km
,
const
double
stdmag
)
{
m_hasData
=
true
;
m_mag
=
0
;
m_phase
=
0
;
m_range
=
0
;
m_stdphase
=
stdphase
;
m_stdrange
=
stdtrange
;
m_stdphase_rad
=
stdphase_deg
*
deg2rad
;
m_stdrange_tkm
=
stdtrange_km
*
1E-3
;
m_stdmag
=
stdmag
;
}
...
...
@@ -30,19 +20,10 @@ void MagData::SetGeomData(double rcs, double albedo)
m_albedo
=
albedo
;
}
bool
MagData
::
Load
(
myXML
::
Contain
*
parent
)
{
LoadXML
(
parent
,
"Phase"
,
m_stdphase
);
LoadXML
(
parent
,
"Range"
,
m_stdrange
);
LoadXML
(
parent
,
"Stdmag"
,
m_stdmag
,
false
,
&
m_hasData
);
return
true
;
}
void
MagData
::
load
(
const
jsonval
&
parent
)
{
loadjson
(
parent
,
"phase"
,
m_stdphase
);
loadjson
(
parent
,
"range"
,
m_stdrange
);
loadjson
(
parent
,
"phase"
,
m_stdphase
_rad
);
loadjson
(
parent
,
"range"
,
m_stdrange
_tkm
);
loadjson
(
parent
,
"mag"
,
m_stdmag
);
m_hasData
=
true
;
}
...
...
@@ -63,7 +44,7 @@ double MagData::CalcRealMag(double A0g, double sunMag, double phase, double rang
void
MagData
::
CalcMag
(
double
phase
,
double
range
)
{
const
double
sunMag
=
-
26.58
;
m_mag
=
CalcRealMag
(
CalcA0g
(
m_stdmag
,
m_stdphase
,
m_stdrange
,
sunMag
),
sunMag
,
phase
,
range
);
m_mag
=
CalcRealMag
(
CalcA0g
(
m_stdmag
,
m_stdphase
_rad
,
m_stdrange_tkm
,
sunMag
),
sunMag
,
phase
,
range
);
m_phase
=
phase
;
m_range
=
range
;
}
...
...
utils/MagData.h
View file @
822a313a
#pragma once
#include "XMLFunctions.h"
#include "json_functions.h"
class
MagData
{
public
:
MagData
();
void
SetOpticData
(
double
stdphase
,
double
stdtrange
,
double
stdmag
);
void
SetOpticData
(
double
stdphase
_deg
,
double
stdtrange_km
,
double
stdmag
);
void
SetGeomData
(
double
rcs
,
double
albedo
);
bool
Load
(
myXML
::
Contain
*
parent
);
void
load
(
const
jsonval
&
parent
);
double
GetMag
()
const
{
return
m_mag
;
}
double
GetRcs
()
const
{
return
m_rcs
;
}
...
...
@@ -18,20 +16,20 @@ public:
void
CalcMag
(
double
phase
,
double
range
);
void
CalcGeomMag
(
double
phase
,
double
range
);
double
get_std_mag
()
const
{
return
m_stdmag
;
}
double
get_std_phase
()
const
{
return
m_stdphase
;
}
double
get_std_range
()
const
{
return
m_stdrange
;
}
double
get_std_phase
()
const
{
return
m_stdphase
_rad
;
}
double
get_std_range
()
const
{
return
m_stdrange
_tkm
;
}
private
:
static
double
CalcA0g
(
double
stdmag
,
double
stdphase
,
double
stdrange
,
double
sunMag
);
static
double
CalcRealMag
(
double
A0g
,
double
sunMag
,
double
phase
,
double
range
);
double
m_stdmag
;
double
m_stdphase
;
double
m_stdrange
;
double
m_stdphase
_rad
{
0
}
;
double
m_stdrange
_tkm
{
40
}
;
double
m_phase
;
double
m_range
;
double
m_mag
;
double
m_rcs
;
double
m_albedo
;
bool
m_hasData
;
bool
m_hasGeomData
;
bool
m_hasData
{
false
}
;
bool
m_hasGeomData
{
false
}
;
};
utils/TextFunctions.h
View file @
822a313a
...
...
@@ -336,9 +336,10 @@ template <typename T, typename T2>
std
::
vector
<
T
>
map_keys
(
const
std
::
map
<
T
,
T2
>&
map
)
{
std
::
vector
<
T
>
result
;
result
.
reserve
(
map
.
size
());
for
(
typename
std
::
map
<
T
,
T2
>::
const_iterator
it
=
map
.
begin
();
it
!=
map
.
end
();
++
it
)
{
result
.
push_back
(
it
->
first
);
for
(
const
auto
&
it
:
map
)
{
result
.
push_back
(
it
.
first
);
}
return
result
;
...
...
utils/orb_block_data.cpp
View file @
822a313a
...
...
@@ -43,7 +43,11 @@ void orb_block_data::load(const jsonval& parent)
loadjson
(
parent
,
"mind_km"
,
m_mind
,
false
);
std
::
string
vecs
;
loadjson
(
parent
,
"vecs"
,
vecs
);
loadjson
(
parent
,
"vecs"
,
vecs
,
false
);
if
(
vecs
.
empty
())
{
return
;
}
std
::
vector
<
std
::
string
>
parts
;
splitstrf
(
vecs
,
parts
,
","
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment