From 619d1013d02b2eac240dc53ca7cd733f2c58ebe5 Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Tue, 31 Jul 2012 10:32:33 +0200 Subject: [PATCH] Field::getID() support --- testApp/remote/eget.cpp | 18 +++++++++++------- testApp/remote/testServer.cpp | 8 ++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/testApp/remote/eget.cpp b/testApp/remote/eget.cpp index 0cc51a6..42d7457 100644 --- a/testApp/remote/eget.cpp +++ b/testApp/remote/eget.cpp @@ -386,8 +386,11 @@ void formatNTTable(StringBuilder buffer, PVStructure *pvStruct) { PVStringArrayPtr labels = static_pointer_cast(pvStruct->getScalarArrayField("labels", pvString)); if (labels.get() == 0) + { + std::cout << "no 'labels' column" << std::endl; return; // TODO - + } + int numColumns = labels->getLength(); //int count = pvStruct->getNumberFields(); // TODO if (count < #numColumns) @@ -400,8 +403,8 @@ void formatNTTable(StringBuilder buffer, PVStructure *pvStruct) for (int i = 0; i < numColumns; i++) { DoubleArrayData values; - // TODO we relay on field ordering here (normativeType, labels, ) - PVDoubleArrayPtr arrayField = static_pointer_cast(fields[i+2]); + // TODO we relay on field ordering here (labels, ) + PVDoubleArrayPtr arrayField = static_pointer_cast(fields[i+1]); int count = arrayField->get(0, arrayField->getLength(), values); if (count > maxValues) maxValues = count; columnData.push_back(&values.data); @@ -439,11 +442,12 @@ void toNTString(StringBuilder buffer, PVField *pv,int notFirst) { PVStructure* pvStruct = static_cast(pv); // TODO type check, getStringField is verbose - PVStringPtr ntType = static_pointer_cast(pvStruct->getSubField("normativeType")); - if (ntType.get()) +// PVStringPtr ntType = static_pointer_cast(pvStruct->getSubField("normativeType")); +// if (ntType.get()) { - String value = ntType->get(); - +// String value = ntType->get(); + String value = pvStruct->getField()->getID(); + if (value == "NTTable") { formatNTTable(buffer, pvStruct); diff --git a/testApp/remote/testServer.cpp b/testApp/remote/testServer.cpp index e9054cd..4d6af76 100644 --- a/testApp/remote/testServer.cpp +++ b/testApp/remote/testServer.cpp @@ -416,8 +416,8 @@ class MockChannelRPC : public ChannelRPC int totalFields = 1 + 1 + atoi(columns->get().c_str()); // normativeType, labels, StringArray fieldNames(totalFields); FieldConstPtrArray fields(totalFields); - fieldNames[i] = "normativeType"; - fields[i++] = getFieldCreate()->createScalar(pvString); + //fieldNames[i] = "normativeType"; + //fields[i++] = getFieldCreate()->createScalar(pvString); fieldNames[i] = "labels"; fields[i++] = getFieldCreate()->createScalarArray(pvString); char sbuf[16]; @@ -431,9 +431,9 @@ class MockChannelRPC : public ChannelRPC } PVStructure::shared_pointer result( - new PVStructure(getFieldCreate()->createStructure(fieldNames, fields))); + new PVStructure(getFieldCreate()->createStructure("NTTable", fieldNames, fields))); - result->getStringField("normativeType")->put("NTTable"); + //result->getStringField("normativeType")->put("NTTable"); static_pointer_cast(result->getScalarArrayField("labels", pvString))->put(0, labels.size(), &labels[0], 0); srand ( time(NULL) );