#include <iostream>
#include <list>
#include <string>
#include "DM/IDatamanager.hpp"
#include "DM/IAddInfoLayout.hpp"
#include "DM/IAddInfoLayoutFactory.hpp"
using namespace std;
const char *typeNames [] = {
"int32",
"uint32",
"int8",
"uint8",
"int16",
"uint16",
"float",
"double",
"string",
"int64",
"cstr",
"bool"
};
{
for(unsigned i=0; i<layout->columns(); i++)
{
cout << "\t" << layout->name(i) << " (type = " << typeNames[ static_cast<int>(layout->type(i)) ] << ")" << endl;
}
}
void DM_attribute_handling(const char *filename)
{
assert( pt1->hasInfo() == false );
cout << "Layout 1:" << endl;
output_layout(layout1);
cout << "Layout 2:" << endl;
output_layout(layout2);
assert( pt2->hasInfo() == true );
assert( pt2->info().columns() == 3 );
assert( pt2->info().isNull(0) == true && pt3->info().isNull(0) == true );
assert( pt2->getAddInfo() == pt3->getAddInfo() );
pt2->info().setFloat(0,10.23f);
float amp = pt3->info().getFloat(0);
assert( pt2->info().getFloat(0) == pt3->info().getFloat(0)) ;
pt4->setAddInfo( pt2->info().clone() );
assert( pt2->getAddInfo() != pt4->getAddInfo() );
pt2->info().setFloat(0,5.92f);
assert( pt2->info().getFloat(0) == 5.92f &&
pt4->info().getFloat(0) == 10.23f );
assert( pt2->info().isView() == false );
pt2->setAddInfoView(layout2,true);
assert( pt2->info().isView() == true );
assert( layout2->columns() == 1 && pt2->info().columns() == 1 );
pt2->info().setUInt32(0, 15);
assert( pt3->info().columns() == 1 && pt3->info().getUInt32(0) == 15 );
pt2->restoreAddInfoFullLayout();
assert( pt2->info().isView() == false && pt2->info().columns() == 3 );
unsigned value = pt3->info().getUInt32(2);
assert( value == 15 );
pt3->cloneAddInfoView(layout2,true);
assert( pt2->getAddInfo() != pt3->getAddInfo() );
pt3->info().setUInt32(0,35);
value = pt2->info().getUInt32(2);
assert( pt2->info().getUInt32(2) == 35 &&
pt3->info().getUInt32(0) == 35 ) ;
list<string> attributs;
attributs.push_back("Amplitude");
attributs.push_back("EchoWidth");
attributs.push_back("_testAttr");
if (!dm)
{
cout << "Unable to open ODM '" << filename << "'" << endl;
return;
}
cout << "Create layout based on ODM '" << filename << "'" << endl;
for(auto it = attributs.begin(); it != attributs.end(); ++it)
{
if (ret.second == true)
cout << "\t" << it->c_str() << " exists in ODM (type = " << typeNames[ static_cast<int>(ret.first) ] << ")" << endl;
else
cout << "\t" << it->c_str() << " does NOT exist in ODM (type = " << typeNames[ static_cast<int>(ret.first) ] << ")" << endl;
}
cout << "Layout 3:" << endl;
output_layout(layout3);
}