BaseDataIO creates instances of BaseData objects using an object factory. More...
#include <mitkBaseDataIOFactory.h>
Public Types | |
| typedef BaseDataIO | Self |
| typedef itk::Object | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
| virtual const char * | GetClassName () const |
Static Public Member Functions | |
| static std::vector < mitk::BaseData::Pointer > | LoadBaseDataFromFile (const std::string path, const std::string filePrefix, const std::string filePattern, bool series) |
Protected Member Functions | |
| BaseDataIO () | |
| ~BaseDataIO () | |
BaseDataIO creates instances of BaseData objects using an object factory.
Definition at line 34 of file mitkBaseDataIOFactory.h.
| typedef itk::SmartPointer<const Self> mitk::BaseDataIO::ConstPointer |
Definition at line 42 of file mitkBaseDataIOFactory.h.
| typedef itk::SmartPointer<Self> mitk::BaseDataIO::Pointer |
Definition at line 41 of file mitkBaseDataIOFactory.h.
| typedef BaseDataIO mitk::BaseDataIO::Self |
Standard class typedefs.
Definition at line 39 of file mitkBaseDataIOFactory.h.
| typedef itk::Object mitk::BaseDataIO::Superclass |
Definition at line 40 of file mitkBaseDataIOFactory.h.
| mitk::BaseDataIO::BaseDataIO | ( | ) | [protected] |
| mitk::BaseDataIO::~BaseDataIO | ( | ) | [protected] |
| virtual const char* mitk::BaseDataIO::GetClassName | ( | ) | const [virtual] |
Class Methods used to interface with the registered factories Run-time type information (and related methods).
| std::vector< BaseData::Pointer > mitk::BaseDataIO::LoadBaseDataFromFile | ( | const std::string | path, |
| const std::string | filePrefix, | ||
| const std::string | filePattern, | ||
| bool | series | ||
| ) | [static] |
Create the appropriate BaseData depending on the particulars of the file.
Definition at line 27 of file mitkBaseDataIOFactory.cpp.
References MITK_ERROR.
Referenced by mitk::DataNodeFactory::GenerateData().
{
std::vector<BaseData::Pointer> BaseDataIO::LoadBaseDataFromFile(const std::string path, const std::string filePrefix, const std::string filePattern, bool series)
{
// factories are instantiated in mitk::CoreObjectFactory and other, potentially MITK external places
std::vector<BaseData::Pointer> result;
std::list<IOAdapterBase::Pointer> possibleIOAdapter;
std::list<LightObject::Pointer> allobjects = itk::ObjectFactoryBase::CreateAllInstance("mitkIOAdapter");
for( std::list<LightObject::Pointer>::iterator i = allobjects.begin();
i != allobjects.end();
++i)
{
IOAdapterBase* io = dynamic_cast<IOAdapterBase*>(i->GetPointer());
if(io)
{
possibleIOAdapter.push_back(io);
}
else
{
MITK_ERROR << "Error BaseDataIO factory did not return an IOAdapterBase: "
<< (*i)->GetNameOfClass()
<< std::endl;
}
}
for( std::list<IOAdapterBase::Pointer>::iterator k = possibleIOAdapter.begin();
k != possibleIOAdapter.end();
++k )
{
bool canReadFile = false;
if ( series )
canReadFile = (*k)->CanReadFile(filePrefix, filePrefix, filePattern); // we have to provide a filename without extension here to
else // prevent the "normal" (non-series) readers to report that
canReadFile = (*k)->CanReadFile(path, filePrefix, filePattern); // they could read the file
if( canReadFile )
{
BaseProcess::Pointer ioObject = (*k)->CreateIOProcessObject(path, filePrefix, filePattern);
ioObject->Update();
int numberOfContents = static_cast<int>(ioObject->GetNumberOfOutputs());
if (numberOfContents > 0)
{
BaseData::Pointer baseData;
for(int i=0; i<numberOfContents; ++i)
{
baseData = dynamic_cast<BaseData*>(ioObject->GetOutputs()[i].GetPointer());
if (baseData) // this is what's wanted, right?
{
result.push_back( baseData );
}
}
}
break;
}
}
1.7.2