CreateRequest: strip blanks from request string before parsing

This commit is contained in:
Marty Kraimer
2014-03-03 09:03:40 -05:00
parent 48e17a806b
commit f56ecdbfc0
2 changed files with 9 additions and 11 deletions

View File

@@ -24,15 +24,13 @@ static PVDataCreatePtr pvDataCreate = getPVDataCreate();
class CreateRequestImpl : public CreateRequest {
private:
static void trim(String& str)
static void removeBlanks(String& str)
{
String::size_type pos = str.find_last_not_of(' ');
if(pos != String::npos) {
str.erase(pos + 1);
pos = str.find_first_not_of(' ');
if(pos != String::npos) str.erase(0, pos);
while(true) {
String::size_type pos = str.find_first_of(' ');
if(pos==String::npos) return;
str.erase(pos,1);
}
else str.erase(str.begin(), str.end());
}
static size_t findMatchingBrace(String& request, size_t index, int numOpen) {
@@ -73,7 +71,7 @@ private:
PVStructurePtr const & pvParent,
String request)
{
trim(request);
removeBlanks(request);
if(request.length()<=1) return true;
std::vector<String> items = split(request);
size_t nitems = items.size();
@@ -107,7 +105,7 @@ private:
static PVFieldPtrArray emptyFields;
static StringArray emptyFieldNames;
trim(request);
removeBlanks(request);
if(request.length()<=0) return true;
size_t comma = request.find(',');
if(comma==0) {
@@ -208,7 +206,7 @@ public:
PVStructurePtr emptyPVStructure = pvDataCreate->createPVStructure(fieldNames,pvFields);
static PVStructure::shared_pointer nullStructure;
if (!request.empty()) trim(request);
if (!request.empty()) removeBlanks(request);
if (request.empty())
{
return emptyPVStructure;

View File

@@ -27,7 +27,7 @@ void testCreateRequest() {
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true]field(alarm,timeStamp)putField(synput:a,synput:b,stnput:c)";
request = "record[process=true] field(alarm , timeStamp) putField( synput:a,synput:b,stnput:c)";
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());