DEADSOFTWARE

Successful read of StdTextModel (including actual text)
[odcread.git] / reader.h
index 764a27618138fa5d4d7f098b04510fff6151964a..21178f304e2ba32ee0d0ff86d6a74c39c8d2a028 100644 (file)
--- a/reader.h
+++ b/reader.h
@@ -25,6 +25,9 @@ struct TypeEntry {
  */ 
 class Reader {
 private:
+       static const unsigned int TYPENOTFOUND = 1;
+       static const unsigned int ALIENVERSION = 2;
+
        /*
         * rider-: Files.Reader
         * The file rider which links a Reader to a file.
@@ -33,7 +36,7 @@ private:
 
        /*
         * cancelled-: BOOLEAN  valid during a Store.Internalize call
-        * Tells whether the currently executing Internalize has been called by ReadVersion or TurnIntoAlien.
+        * Tells whether the currently executing Internalize has been cancelled by ReadVersion or TurnIntoAlien.
         */
        bool d_cancelled;
 
@@ -43,6 +46,11 @@ private:
         */
        bool d_readAlien;
 
+       /**
+        * Cause of current read being alien.
+        */
+       unsigned int d_cause;
+
        std::vector<TypeEntry*> d_typeList;
 
        std::vector<Store*> d_elemList; // FIXME: WTH, why are these different?
@@ -62,8 +70,6 @@ private:
        };
        ReaderState *d_state;
 
-       INTEGER d_cause;
-
        public:
        /**
         * Construct a reader from the istream rider.
@@ -125,21 +131,26 @@ private:
         * Reads a short character (00X..0FFX).
         */ 
        SHORTCHAR readSChar();
+       void readSChar(SHORTCHAR *buf, size_t len);
        /* PROCEDURE (VAR rd: Reader) ReadXChar (OUT x: CHAR)
         * NEW
         * Same as ReadSChar, but has a CHAR-type parameter.
         * This procedure is provided to simplify migration from Release 1.2 to 1.3.
         */
-       CHAR readXChar();
        /** 
         * PROCEDURE (VAR rd: Reader) ReadChar (OUT x: CHAR)
         * NEW
         * Reads a character (0000X..0FFFFX).
-        * 
+        */ 
+       CHAR readLChar();
+       void readLChar(CHAR *buf, size_t len);
+       /**
         * PROCEDURE (VAR rd: Reader) ReadByte (OUT x: BYTE)
         * NEW
         * Reads a very short integer (-128..127).
-        * 
+        */ 
+       BYTE readByte();
+       /**
         * PROCEDURE (VAR rd: Reader) ReadSInt (OUT x: SHORTINT)
         * NEW
         * Reads a short integer (-32768..32767).
@@ -244,7 +255,9 @@ private:
         *      rd.cause = alienVersion
         *      rd.cancelled
         *      rd.readAlien
-        * 
+        */ 
+       INTEGER readVersion(INTEGER min, INTEGER max);
+       /*
         * PROCEDURE (VAR rd: Reader) TurnIntoAlien (cause: INTEGER)
         * NEW
         * A store which is currently being internalized can turn itself into an alien, e.g., if it has read a component store which is an alien.
@@ -252,6 +265,9 @@ private:
         * Pre
         * 20   cause > 0
         */
+       void turnIntoAlien(int cause);
+
+       bool isCancelled();
 
        private:
        Store *readStoreOrElemStore(bool isElem);
@@ -260,6 +276,7 @@ private:
        Store *readNewLinkStore();
        void internalizeAlien(Alien *alien, std::streampos down, std::streampos end);
        
+       std::string &fixTypeName(std::string &name);
        TypePath readPath();
        /**
         * Add another component to the current path. If first==true, start a new path.