00001 #ifndef __Brains2_HEADERBASE_H__
00002 #define __Brains2_HEADERBASE_H__
00003
00004 #ifdef WIN32
00005 #pragma warning(disable:4786)
00006 #endif
00007
00008 #include <string>
00009 #include <list>
00010 #include <fstream>
00011
00012 namespace itk {
00017 class Brains2HeaderBase: public std::list< std::pair<std::string, std::string> >
00018 {
00019 public:
00021 typedef Brains2HeaderBase Self;
00022 typedef std::list< std::pair<std::string, std::string> > Superclass;
00023 typedef Self * Pointer;
00024 typedef const Self * ConstPointer;
00029 Brains2HeaderBase();
00034 virtual ~Brains2HeaderBase();
00040 virtual void ReadBrains2Header(std::string filename);
00046 virtual void WriteBrains2Header(std::string filename) const;
00055 virtual std::ifstream & ReadBrains2Header(std::ifstream & inputstream);
00064 virtual std::ofstream & WriteBrains2Header(std::ofstream & outputstream) const;
00065
00071 virtual void PrintSelf(std::ostream &os) const;
00078 bool DoesKeyExist(const std::string &KeyID) const;
00085 float getFloat(const std::string &KeyID) const;
00092 int getInt(const std::string &KeyID) const;
00099 std::string getString(const std::string &KeyID) const;
00105 void ClearHeader(void);
00106 protected:
00107 virtual std::string GetHeaderBeginTag(void) const= 0;
00108 virtual std::string GetHeaderEndTag(void) const = 0;
00109 std::list<Brains2HeaderBase *> m_child;
00110 private:
00111 };
00112 }
00113 #endif // __Brains2_HEADERINFO_H__