Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions source/api/inc/GnssMetadata/Xml/Translator.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@ namespace GnssMetadata

private:
NodeEntry* _nodesAllowed;

public:
/**
* Helper function that trims a C string and outputs its length
*/
static const char* TrimString(const char* str, size_t* len);

};
}
#endif
12 changes: 9 additions & 3 deletions source/api/lib/GnssMetadata/Xml/ChunkTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@ NODELIST_END
static const char* _szEndian[] = {"Big","Little", "Undefined"};
Chunk::WordEndian ToEndian( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 3; i++)
{
if( strcmp( _szEndian[i], pszFmt) == 0)
if( strncmp( _szEndian[i], trimmedPszFmt, len) == 0)
return (Chunk::WordEndian)i;
}
return (Chunk::WordEndian)2;
Expand All @@ -57,9 +59,11 @@ Chunk::WordEndian ToEndian( const char* pszFmt)
static const char* _szWordPadding[] = {"None","Head","Tail"};
Chunk::WordPadding ToWordPadding( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 3; i++)
{
if( strcmp( _szWordPadding[i], pszFmt) == 0)
if( strncmp( _szWordPadding[i], trimmedPszFmt, len) == 0)
return (Chunk::WordPadding)i;
}
return (Chunk::WordPadding)2;
Expand All @@ -69,9 +73,11 @@ Chunk::WordPadding ToWordPadding( const char* pszFmt)
static const char* _szWordShift[] = {"Left","Right"};
Chunk::WordShift ToWordShift( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 2; i++)
{
if( strcmp( _szWordShift[i], pszFmt) == 0)
if( strncmp( _szWordShift[i], trimmedPszFmt, len) == 0)
return (Chunk::WordShift)i;
}
return (Chunk::WordShift)2;
Expand Down
4 changes: 3 additions & 1 deletion source/api/lib/GnssMetadata/Xml/DurationTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,11 @@ using namespace tinyxml2;
static const char* _szfmts[] = {"sec","msec", "usec", "nsec", "psec"};
static Duration::DurationFormat ToFormat( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 5; i++)
{
if( strcmp( _szfmts[i], pszFmt) == 0)
if( strncmp( _szfmts[i], trimmedPszFmt, len) == 0)
return (Duration::DurationFormat)i;
}
return (Duration::DurationFormat)0;
Expand Down
4 changes: 3 additions & 1 deletion source/api/lib/GnssMetadata/Xml/FrequencyTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@ using namespace tinyxml2;
static const char* _szfmts[] = {"Hz","kHz","MHz", "GHz", "Ratio"};
static Frequency::FrequencyFormat ToFormat( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 4; i++)
{
if( strcmp( _szfmts[i], pszFmt) == 0)
if( strncmp( _szfmts[i], trimmedPszFmt, len) == 0)
return (Frequency::FrequencyFormat)i;
}
return (Frequency::FrequencyFormat)0;
Expand Down
4 changes: 3 additions & 1 deletion source/api/lib/GnssMetadata/Xml/LumpTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ LumpTranslator::LumpTranslator()
static const char* _szShiftFmts[] = { "Left","Right", "Undefined" };
static Lump::LumpShift ToLumpShiftFormat(const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for (unsigned int i = 0; i < 3; i++)
{
if (strcmp(_szShiftFmts[i], pszFmt) == 0)
if (strncmp(_szShiftFmts[i], trimmedPszFmt, len) == 0)
return (Lump::LumpShift)i;
}
return (Lump::LumpShift)2;
Expand Down
8 changes: 6 additions & 2 deletions source/api/lib/GnssMetadata/Xml/SourceTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ NODELIST_END
static const char* _szSourceType[] = {"UndefinedType","Patch", "Dipole", "Helical", "Quadrilfilar", "Simulator", "Other"};
Source::SourceType ToSourceType( const char* psz)
{
size_t len;
const char* trimmedPsz = Translator::TrimString(psz, &len);
for( unsigned int i = 0; i < 7; i++)
{
if( strcmp( _szSourceType[i], psz) == 0)
if( strncmp( _szSourceType[i], trimmedPsz, len) == 0)
return (Source::SourceType)i;
}
return (Source::SourceType)0;
Expand All @@ -55,9 +57,11 @@ Source::SourceType ToSourceType( const char* psz)
static const char* _szSourcePolarization[] = {"UndefinedPolarization", "RHCP", "LHCP", "Linear", "Horizontal", "Vertical"};
Source::SourcePolarization ToSourcePolarization( const char* psz)
{
size_t len;
const char* trimmedPsz = Translator::TrimString(psz, &len);
for( unsigned int i = 0; i < 6; i++)
{
if( strcmp( _szSourcePolarization[i], psz) == 0)
if( strncmp( _szSourcePolarization[i], trimmedPsz, len) == 0)
return (Source::SourcePolarization)i;
}
return (Source::SourcePolarization)2;
Expand Down
12 changes: 9 additions & 3 deletions source/api/lib/GnssMetadata/Xml/StreamTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@ using namespace tinyxml2;
static const char* _szAlignFmts[] = {"Left","Right", "Undefined"};
static IonStream::StreamAlignment ToAlignmentFormat( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 3; i++)
{
if( strcmp( _szAlignFmts[i], pszFmt) == 0)
if( strncmp( _szAlignFmts[i], trimmedPszFmt, len) == 0)
return (IonStream::StreamAlignment)i;
}
return (IonStream::StreamAlignment)2;
Expand All @@ -48,9 +50,11 @@ static IonStream::StreamAlignment ToAlignmentFormat( const char* pszFmt)
static const char* _szShiftFmts[] = {"Left","Right", "Undefined"};
static IonStream::StreamShift ToStreamShiftFormat( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 3; i++)
{
if( strcmp(_szShiftFmts[i], pszFmt) == 0)
if( strncmp(_szShiftFmts[i], trimmedPszFmt, len) == 0)
return (IonStream::StreamShift)i;
}
return (IonStream::StreamShift)2;
Expand All @@ -61,9 +65,11 @@ static const char* _szSampleFmts[] = {"IF","IFn","IQ","IQn","InQ","InQn","QI","Q

static IonStream::SampleFormat ToSampleFormat( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 10; i++)
{
if( strcmp( _szSampleFmts[i], pszFmt) == 0)
if( strncmp( _szSampleFmts[i], trimmedPszFmt, len) == 0)
return (IonStream::SampleFormat)i;
}
return (IonStream::SampleFormat)2;
Expand Down
4 changes: 3 additions & 1 deletion source/api/lib/GnssMetadata/Xml/SystemTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,11 @@ NODELIST_END
static const char* _szTypes[] = {"Undefined", "Processor", "Receiver", "Simulator"};
System::SystemType ToSystemType( const char* pszFmt)
{
size_t len;
const char* trimmedPszFmt = Translator::TrimString(pszFmt, &len);
for( unsigned int i = 0; i < 4; i++)
{
if( strcmp( _szTypes[i], pszFmt) == 0)
if( strncmp( _szTypes[i], trimmedPszFmt, len) == 0)
return (System::SystemType)i;
}
return (System::SystemType)3;
Expand Down
23 changes: 20 additions & 3 deletions source/api/lib/GnssMetadata/Xml/Translator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ bool Translator::ReadFirstElement( const char* pszelem,
}
else
{
return (strcmp( pchild->GetText(),"false")==0);
size_t len;
const char* trimmedText = TrimString(pchild->GetText(), &len);
return (strcmp( trimmedText,"false")==0);
}
}
const char* Translator::ReadFirstElement( const char* pszelem,
Expand Down Expand Up @@ -210,7 +212,9 @@ size_t Translator::ReadFirstElement( const char* pszelem,
}
else
{
return atol( pchild->GetText());
size_t len;
const char* trimmedText = TrimString(pchild->GetText(), &len);
return atol(trimmedText);
}
}

Expand All @@ -232,7 +236,9 @@ double Translator::ReadFirstElement( const char* pszelem,
}
else
{
return atof( pchild->GetText());
size_t len;
const char* trimmedText = TrimString(pchild->GetText(), &len);
return atof(trimmedText);
}

}
Expand Down Expand Up @@ -284,5 +290,16 @@ void Translator::WriteElement( const char* pszElemName, double dvalue,
}
}

const char* Translator::TrimString(const char* str, size_t* len) {
while (str[0] == ' ') {
str++;
}
(*len) = strlen(str);
while (str[(*len) - 1] == ' ') {
(*len)--;
}
return str;
}


}