Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

marchive.h

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

Generated on Thu Feb 10 20:06:41 2005 for LibMagiC by doxygen1.2.18