8 #include "ioda/core/IodaUtils.h"
10 #include "oops/util/DateTime.h"
18 const std::vector<std::string> & StringVector) {
19 std::size_t MaxStrLen = 0;
20 for (std::size_t i = 0; i < StringVector.size(); i++) {
21 std::size_t StrSize = StringVector[i].size();
22 if (StrSize > MaxStrLen) {
27 std::vector<std::size_t> Shape{ StringVector.size(), MaxStrLen };
34 const std::vector<std::size_t> & CharShape) {
37 std::size_t Nstrings = CharShape[0];
38 std::size_t StrLength = CharShape[1];
40 std::vector<std::string> StringVector(Nstrings,
"");
41 for (std::size_t i = 0; i < Nstrings; i++) {
43 std::vector<char> CharVector(StrLength,
' ');
44 for (std::size_t j = 0; j < StrLength; j++) {
45 CharVector[j] = CharData[(i*StrLength) + j];
56 std::string WhiteSpace(
" \t\n\r\f\v\0", 7);
57 std::string
String(CharVector.begin(), CharVector.end());
58 String.erase(
String.find_last_not_of(WhiteSpace) + 1, std::string::npos);
68 const std::vector<std::size_t> & CharShape,
char * CharData) {
72 for (std::size_t i = 0; i < CharShape[0]; i++) {
73 for (std::size_t j = 0; j < CharShape[1]; j++) {
74 std::size_t ichar = (i * CharShape[1]) + j;
75 if (j < StringVector[i].size()) {
76 CharData[ichar] = StringVector[i].data()[j];
78 CharData[ichar] =
' ';
88 if (TypeId ==
typeid(
int)) {
90 }
else if (TypeId ==
typeid(
float)) {
92 }
else if (TypeId ==
typeid(
double)) {
94 }
else if (TypeId ==
typeid(std::string)) {
96 }
else if (TypeId ==
typeid(util::DateTime)) {
97 TypeName =
"DateTime";
99 TypeName = TypeId.name();
107 std::size_t MaxStringLength = 0;
108 for (std::size_t i = 0; i < StringVector.size(); ++i) {
109 if (StringVector[i].size() > MaxStringLength) {
110 MaxStringLength = StringVector[i].size();
113 return MaxStringLength;