Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
fbdcb3c7
Commit
fbdcb3c7
authored
Oct 05, 2020
by
Oliver Heidmann
Browse files
maggraph parameter tokinization now uses the new c++ tokenizer
parent
c7f37a64
Pipeline
#4488
passed with stages
in 23 minutes and 37 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/Maggraph.cc
View file @
fbdcb3c7
...
...
@@ -20,6 +20,7 @@
#include
<climits>
#include
<cdi.h>
#include
<cctype>
#include
"process_int.h"
#include
<mpim_grid.h>
...
...
@@ -30,6 +31,7 @@
#include
"magics_template_parser.h"
#include
"results_template_parser.h"
#include
"string_utilities.h"
#include
"util_string.h"
#include
"cdo_vlist.h"
#include
"functs.h"
#include
"dmemory.h"
...
...
@@ -147,18 +149,15 @@ compareTime(int time1, int time2)
}
static
void
maggraph
(
const
char
*
plotfile
,
const
char
*
varname
,
const
char
*
varunits
,
long
nfiles
,
std
::
vector
<
long
>
nts
,
std
::
vector
<
std
::
vector
<
int64_t
>>
vdates
,
std
::
vector
<
std
::
vector
<
int
>>
vtimes
,
std
::
vector
<
std
::
vector
<
double
>>
datatab
,
int
nparam
,
std
::
vector
<
std
::
string
>
&
params
)
maggraph
(
const
char
*
plotfile
,
const
char
*
varname
,
const
char
*
varunits
,
long
nfiles
,
std
::
vector
<
long
>
nts
,
std
::
vector
<
std
::
vector
<
int64_t
>>
vdates
,
std
::
vector
<
std
::
vector
<
int
>>
vtimes
,
std
::
vector
<
std
::
vector
<
double
>>
datatab
,
int
nparam
,
std
::
vector
<
std
::
string
>
&
params
)
{
char
*
temp_str
;
char
**
split_str
=
nullptr
;
const
char
*
sep_char
=
"="
;
char
min_date_time_str
[
1024
],
max_date_time_str
[
1024
];
int
min_index
=
0
,
max_index
=
0
;
char
legend_text_data
[
256
];
int
num_sigma
=
2
;
bool
stat
=
false
,
obsv
=
false
;
int
split_str_count
;
int
file_begin
=
0
;
int
count
;
int
num_years
=
0
,
num_months
=
0
,
num_days
=
0
;
...
...
@@ -175,17 +174,20 @@ maggraph(const char *plotfile, const char *varname, const char *varunits, long n
for
(
i
=
0
;
i
<
nparam
;
i
++
)
fprintf
(
stderr
,
"Param %s
\n
"
,
params
[
i
].
c_str
());
}
int
split_str_count
;
const
char
*
sep_char
=
"="
;
std
::
string
temp_str
;
for
(
i
=
0
;
i
<
nparam
;
++
i
)
{
std
::
vector
<
std
::
string
>
split_str
;
split_str_count
=
0
;
sep_char
=
"="
;
split_str_count
=
cstrSplitWithSeperator
(
params
[
i
].
c_str
(),
sep_char
,
&
split_str
);
split_str_count
=
cstrSplitWithSeperator
(
params
[
i
].
c_str
(),
sep_char
,
split_str
);
if
(
cstrIsEqual
(
split_str
[
0
]
,
"obsv"
)
)
if
(
split_str
[
0
]
==
"obsv"
)
{
temp_str
=
strdup
(
split_str
[
1
]);
cstrToLowerCase
(
temp_str
);
if
(
cstrIsEqual
(
temp_str
,
"true"
))
temp_str
=
stringToLower
(
split_str
[
1
]);
if
(
temp_str
==
"true"
)
{
obsv
=
true
;
file_begin
=
1
;
...
...
@@ -193,52 +195,48 @@ maggraph(const char *plotfile, const char *varname, const char *varunits, long n
}
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"stat"
)
)
if
(
split_str
[
0
]
==
"stat"
)
{
temp_str
=
strdup
(
split_str
[
1
]);
cstrToLowerCase
(
temp_str
);
if
(
cstrIsEqual
(
temp_str
,
"true"
))
temp_str
=
stringToLower
(
split_str
[
1
]);
if
(
temp_str
==
"true"
)
{
stat
=
true
;
if
(
DBG
)
fprintf
(
stderr
,
"STAT true
\n
"
);
}
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"ymin"
)
)
if
(
split_str
[
0
]
==
"ymin"
)
{
y_min_val
=
a
to
f
(
split_str
[
1
]);
y_min_val
=
std
::
s
to
d
(
split_str
[
1
]);
if
(
DBG
)
fprintf
(
stderr
,
"Y min Val %g
\n
"
,
y_min_val
);
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"ymax"
)
)
if
(
split_str
[
0
]
==
"ymax"
)
{
y_max_val
=
a
to
f
(
split_str
[
1
]);
y_max_val
=
std
::
s
to
d
(
split_str
[
1
]);
if
(
DBG
)
fprintf
(
stderr
,
"Y max Val %g
\n
"
,
y_max_val
);
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"linewidth"
)
)
if
(
split_str
[
0
]
==
"linewidth"
)
{
linewidth_val
=
a
toi
(
split_str
[
1
]);
linewidth_val
=
std
::
s
toi
(
split_str
[
1
]);
if
(
DBG
)
fprintf
(
stderr
,
"linewidth Val %d
\n
"
,
linewidth_val
);
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"sigma"
)
)
if
(
split_str
[
0
]
==
"sigma"
)
{
num_sigma
=
a
to
f
(
split_str
[
1
]);
num_sigma
=
std
::
s
to
d
(
split_str
[
1
]);
if
(
DBG
)
fprintf
(
stderr
,
"SIGMA %d
\n
"
,
num_sigma
);
}
if
(
cstrIsEqual
(
split_str
[
0
]
,
"device"
)
)
if
(
split_str
[
0
]
==
"device"
)
{
temp_str
=
strdup
(
split_str
[
1
]);
cstrToUpperCase
(
temp_str
);
DEVICE
=
temp_str
;
temp_str
=
stringToUpper
(
split_str
[
1
]);
DEVICE
=
strdup
(
temp_str
.
c_str
());
if
(
DBG
)
fprintf
(
stderr
,
"DEVICE %s
\n
"
,
DEVICE
);
mag_setc
(
"output_format"
,
DEVICE
);
}
Free
(
split_str
);
}
if
(
DBG
)
...
...
@@ -411,8 +409,8 @@ maggraph(const char *plotfile, const char *varname, const char *varunits, long n
sprintf
(
date_time_str
[
fileID
][
tsID
],
"%s %s"
,
dateToString
(
vdates
[
fileID
][
tsID
]).
c_str
(),
timeToString
(
vtimes
[
fileID
][
tsID
]).
c_str
());
if
(
DBG
)
fprintf
(
stderr
,
"%s %s %s
\n
"
,
dateToString
(
vdates
[
fileID
][
tsID
]).
c_str
(),
timeToString
(
vtimes
[
fileID
][
tsID
]).
c_str
(),
date_time_str
[
fileID
][
tsID
]);
fprintf
(
stderr
,
"%s %s %s
\n
"
,
dateToString
(
vdates
[
fileID
][
tsID
]).
c_str
(),
timeToString
(
vtimes
[
fileID
][
tsID
]).
c_str
(),
date_time_str
[
fileID
][
tsID
]);
if
(
datatab
[
fileID
][
tsID
]
<
min_val
)
min_val
=
datatab
[
fileID
][
tsID
];
if
(
datatab
[
fileID
][
tsID
]
>
max_val
)
max_val
=
datatab
[
fileID
][
tsID
];
...
...
@@ -464,31 +462,30 @@ maggraph(const char *plotfile, const char *varname, const char *varunits, long n
if
(
DBG
)
fprintf
(
stderr
,
"%s %s
\n
"
,
min_date_time_str
,
max_date_time_str
);
std
::
vector
<
std
::
string
>
split_str
;
split_str_count
=
0
;
sep_char
=
"-"
;
split_str_count
=
cstrSplitWithSeperator
(
max_date_time_str
,
sep_char
,
&
split_str
);
split_str_count
=
cstrSplitWithSeperator
(
max_date_time_str
,
sep_char
,
split_str
);
(
void
)
split_str_count
;
num_years
=
atoi
(
split_str
[
0
]);
num_months
=
atoi
(
split_str
[
1
]);
num_days
=
atoi
(
split_str
[
2
]);
Free
(
split_str
);
num_years
=
std
::
stoi
(
split_str
[
0
]);
num_months
=
std
::
stoi
(
split_str
[
1
]);
num_days
=
std
::
stoi
(
split_str
[
2
]);
split_str_count
=
cstrSplitWithSeperator
(
min_date_time_str
,
sep_char
,
&
split_str
);
num_years
-=
a
toi
(
split_str
[
0
]);
split_str_count
=
cstrSplitWithSeperator
(
min_date_time_str
,
sep_char
,
split_str
);
num_years
-=
std
::
s
toi
(
split_str
[
0
]);
if
(
num_years
<=
1
)
{
if
(
num_years
==
1
)
num_months
+=
(
12
-
a
toi
(
split_str
[
1
]));
num_months
+=
(
12
-
std
::
s
toi
(
split_str
[
1
]));
else
num_months
-=
(
a
toi
(
split_str
[
1
]));
num_months
-=
(
std
::
s
toi
(
split_str
[
1
]));
if
(
!
num_months
)
num_days
-=
a
toi
(
split_str
[
2
]);
num_days
-=
std
::
s
toi
(
split_str
[
2
]);
else
if
(
num_months
==
1
)
num_days
+=
(
31
-
a
toi
(
split_str
[
2
]));
num_days
+=
(
31
-
std
::
s
toi
(
split_str
[
2
]));
}
Free
(
split_str
);
if
(
DBG
)
fprintf
(
stderr
,
" %d %d
\n
"
,
num_years
,
num_months
);
...
...
@@ -821,7 +818,6 @@ VerifyGraphParameters(int num_param, std::vector<std::string> ¶m_names)
}
#endif
void
*
Maggraph
(
void
*
process
)
{
...
...
@@ -891,7 +887,7 @@ Maggraph(void *process)
{
if
(
nrecs
!=
1
)
cdoAbort
(
"Input stream has more than one point in time!"
);
if
((
size_t
)
tsID
>=
nts_alloc
)
if
((
size_t
)
tsID
>=
nts_alloc
)
{
constexpr
size_t
NALLOC_INC
=
1024
;
nts_alloc
+=
NALLOC_INC
;
...
...
Write
Preview
Supports
Markdown
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