You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/3rd/VTK7.1/include/vtkmetaio/metaForm.h

201 lines
4.8 KiB
C

/*============================================================================
MetaIO
Copyright 2000-2010 Insight Software Consortium
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#include "metaTypes.h"
#ifndef ITKMetaIO_METAFORM_H
#define ITKMetaIO_METAFORM_H
#include "metaUtils.h"
#include "metaEvent.h"
#ifdef _MSC_VER
#pragma warning ( disable: 4251 )
#endif
#if (METAIO_USE_NAMESPACE)
namespace METAIO_NAMESPACE {
#endif
class METAIO_EXPORT MetaForm
{
public:
MetaForm(void);
MetaForm(const char * _fileName);
virtual ~MetaForm(void);
virtual void PrintInfo(void) const;
virtual void CopyInfo(const MetaForm * _form);
virtual void Clear(void);
void ClearFields(void);
bool InitializeEssential();
//
//
//
const char * FileName(void) const;
void FileName(const char *_fileName);
// Comment(...)
// Optional Field
// Arbitrary string
const char * Comment(void) const;
void Comment(const char * _comment);
// FormTypeName()
// The intended type: vector, co-vector, matrix....
const char * FormTypeName(void) const;
void FormTypeName(const char * _formTypeName);
// Name(...)
// Optional Field
// Name of the current metaForm
const char * Name(void) const;
void Name(const char *_Name);
//
//
//
bool BinaryData(void) const;
void BinaryData(bool _binaryData);
bool BinaryDataByteOrderMSB(void) const;
void BinaryDataByteOrderMSB(bool _binaryDataByteOrderMSB);
//
//
//
bool CompressedData(void) const;
void CompressedData(bool _compressedData);
//
// Get/Set the double precision for writing
//
unsigned int DoublePrecision() const;
unsigned int GetDoublePrecision() const
{ return this->DoublePrecision(); }
void DoublePrecision(unsigned int _doublePrecision);
void SetDoublePrecision(unsigned int _doublePrecision)
{ this->DoublePrecision(_doublePrecision); }
//
//
//
MetaEvent * Event(void);
MetaEvent * GetEvent(void)
{ return Event(); }
void Event(MetaEvent * _event);
void SetEvent(MetaEvent * _event)
{ Event(_event); }
//
//
//
void ClearUserFields();
void * GetUserField(const char* _name);
template <class TType>
bool AddUserField(const char* _fieldName,
MET_ValueEnumType _type,
int _length,
TType *_v,
bool _required=true,
int _dependsOn=-1 )
{
MET_FieldRecordType * mFw = new MET_FieldRecordType;
MET_InitWriteField(mFw, _fieldName, _type, _length, _v);
m_UserDefinedWriteFields.push_back(mFw);
MET_FieldRecordType * mFr = new MET_FieldRecordType;
MET_InitReadField(mFr, _fieldName, _type, _required,
_dependsOn, _length);
m_UserDefinedReadFields.push_back(mFr);
return true;
}
//
//
//
bool CanRead(const char * _fileName=NULL) const;
bool Read(const char * _fileName=NULL);
bool CanReadStream(METAIO_STREAM::ifstream * _stream) const;
bool ReadStream(METAIO_STREAM::ifstream * _stream);
bool Write(const char * _fileName=NULL);
bool WriteStream(METAIO_STREAM::ofstream * _stream);
////
//
// PROTECTED
//
////
protected:
typedef METAIO_STL::vector<MET_FieldRecordType *> FieldsContainerType;
METAIO_STREAM::ifstream * m_ReadStream;
METAIO_STREAM::ofstream * m_WriteStream;
char m_FileName[255];
char m_Comment[255];
char m_FormTypeName[255];
char m_Name[255];
bool m_BinaryData;
bool m_BinaryDataByteOrderMSB;
bool m_CompressedData;
unsigned int m_DoublePrecision;
MetaEvent * m_Event;
FieldsContainerType m_Fields;
FieldsContainerType m_UserDefinedWriteFields;
FieldsContainerType m_UserDefinedReadFields;
// protected functions
virtual void M_Destroy(void);
virtual void M_SetupReadFields(void);
virtual void M_SetupWriteFields(void);
virtual bool M_Read(void);
virtual bool M_Write(void);
};
#if (METAIO_USE_NAMESPACE)
};
#endif
#endif