Main Page   Class Hierarchy   Compound List   File List   Compound Members  

marchive.h

00001 #ifndef __ARCHIVE_H__
00002 #define __ARCHIVE_H__
00003 
00004 #include <magic/mobject.h>
00005 #include <magic/mstring.h>
00006 #include <magic/mstream.h>
00007 
00008 /*
00010 //
00011 //                                 CArchive
00012 //
00013 
00014 enum {  ARC_LOAD=0, ARC_SAVE=1, ARC_RECORD=2,
00015         ARC_BINARY=0, ARC_TEXT=16, ARC_FORMATTED=32,
00016         ARC_VERINFO=64,
00017         ARC_ADDRESSES=128};
00018 
00019 // CArchive toteuttaa geneerisen objektien tallennuksen tiedostoon.
00020 class CArchive {
00021     filebuf             fbuf;
00022     ostream*            out;
00023     istream*            in;
00024     String              arcfile;    // Tiedoston nimi
00025     int                 mode;       // Tallennusmoodi
00026     String              nextname;   // Seuraavan objektin nimi
00027     int                 indent;     // Sisennystaso
00028     Array<String>*  attribs;    // Muistiinpannut attribuutit
00029     
00030     int         open        (const char* filename, int flag);
00031   public:
00032 
00033     friend CArchive& operator<< (CArchive& out, const Object& obj);
00034     friend CArchive& operator>> (CArchive& in, Object& obj);
00035     int         errst;
00036 
00037                 CArchive    ()                  {in=NULL; out=NULL; errst=0; indent=0; mode=0; attribs=NULL;}
00038     // Luo halutun nimisen archiven annetulla moodilla
00039     // (katso <I>liput</I> alla)
00040                 CArchive    (const char* filnam, int md);
00041                 ~CArchive   ();
00042 
00043     // Avaa arkiston tallennusta varten, palauttaa FALSE, jos
00044     // virhetilanne
00045     int         opensave    (const char* filename = NULL);
00046 
00047     // Avaa arkiston latausta varten, palauttaa FALSE, jos
00048     // virhetilanne
00049     int         openload    (const char* filename = NULL);
00050 
00051     int         openrecord  ();
00052     
00053     void        close       ();
00054 
00055     // Asettaa tekstiarkiston seuraavan objektin nimen
00056     CArchive&   name        (const char* nam)       {nextname=nam; return *this;}
00057     // Kirjoittaa 
00058     CArchive&   operator<<  (int i);
00059     CArchive&   operator<<  (long i);
00060     CArchive&   operator<<  (char i);
00061     CArchive&   operator<<  (float i);
00062     CArchive&   operator<<  (double i);
00063 //  CArchive&   operator<<  (const char* i)         {if (out) out->write (i, strlen(i));  return *this;}
00064 
00065     // Kirjoittaa muistipuskurin sellaisenaan.
00066     // Tekstimuototilassa se heksakoodataan
00067     CArchive&   write       (const char* p, int n);
00068 
00069     // Lukee kokonaisluvun (todellisuudessa pitkän)
00070     CArchive&   operator>>  (int& i)            {long i2=i; operator>> (i2); i=i2; return *this;}
00071     // Lukee pitkän kokonaisluvun
00072     CArchive&   operator>>  (long& i);
00073     // Lukee yksittäisen merkin
00074     CArchive&   operator>>  (char& i);
00075     // Lukee liukuluvun (todellisuudessa pitkän)
00076     CArchive&   operator>>  (float& i)          {double i2=i; operator>> (i2); i=i2; return *this;}
00077     // Lukee pitkän liukuluvun
00078     CArchive&   operator>>  (double& i);
00079 //  CArchive&   operator>>  (char* p)           {if (in) in->read (p, n); return *this;}
00080     // Lukee muistipuskurin
00081     CArchive&   read        (char* p, int n);
00082 
00083     const Array<String>&    getattribs  () const {return *attribs;}
00084 };
00085 
00086 
00087 //- <H3>Liput</H3>
00088 //- <TABLE>
00089 //- <TR><TD><B> ARC_LOAD        <TD> Ladataan (oletus)
00090 //- <TR><TD><B> ARC_SAVE        <TD> Tallennetaan
00091 //- <TR><TD><B> ARC_RECORD      <TD> Laitetaan attribuuttien nimet vain muistiin
00092 //- <TR><TD><B> ARC_BINARY      <TD> Binäärimuotoinen arkisto (oletus)
00093 //- <TR><TD><B> ARC_TEXT        <TD> Tekstimuotoinen arkisto
00094 //- <TR><TD><B> ARC_FORMATTED   <TD> Objektihierarkian mukaan muotoiltu arkisto
00095 //- <TR><TD><B> ARC_VERINFO <TD> Tallennetaanko alkuun versiotieto
00096 //- <TR><TD><B> ARC_ADDRESSES   <TD> Tallennetaanko muotoillussa muodossa 
00097 //-                                  mukaan objektien osoitteet
00098 //- </TABLE><P>
00099 //- Näitä voi yhdistellä binäärisellä | - operaatiolla
00100 
00101 // Sokerointioperaatio name()-liitteen tekemiseksi luokan attribuutteihin
00102 CArchive& operator<< (CArchive& out, const char* str);
00103 
00104 */
00105 
00106 #endif

Generated at Tue Dec 4 19:53:24 2001 for MagiC++ by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001