Hi ,
Is it possible to test for the existence of a particular field and extract only that item or is
it necessary to always iterate through the whole field list?
Thanks
Hi @epfeuffer
You can also refer to the 121__MarketPrice__FieldListSearchByName example which you may find a bit more helpful.
while ( fl.forth( "BID" ) ) // look for a fid with matching name cout << "Fid: " << fl.getEntry().getFieldId() << " Name: " << fl.getEntry().getName() << " value: " << fl.getEntry().getLoad().toString() << endl;
In the snippet above, we are checking for the existence of the BID field.
You should be able to use a FieldName or a FieldID e.g. 22 for BID.
If you want to find multiple Fields, you can pass in an ElementList of field IDs too as demonstrated in example 260__MarketPrice__FieldListSearchByList
ElementList searchList; // specify the set of fids to search for; use fid #s searchList.addArray( "", OmmArray().addInt( 3 ).addInt( 15 ).addInt( 21 ).addInt( 22 ).addInt( 25 ).complete() ).complete(); while ( fl.forth( searchList ) ) // search for a set of matching fids { const FieldEntry& fe = fl.getEntry();
So, in the above example we are looking for a few fields including CURRENCY,HST_CLOSE, BID etc.
Hi @epfeuffer OMM Field list object behaves like field list in other languages like Python and Java and does not allow map like access to key/value pairs.
Please see an example 120__MarketPrice__FieldListWalk from EMA consumer samples on how to use this iteration.
I forgot to mention, if you are not already doing so, I would recommend you use a View request to ask the server to filter out unnecessary Fields that you are not interested. This should further reduce the amount of fields you need to process - in terms of searching through / iterating through.
Consumer Example 360 demonstrates how to make View requests.