diff --git a/reader.h b/reader.h
index 208cf287a34875be20020ec159fe3fb44fb009fb..e9b0234b4972c403099584334386b9d7cb137b62 100644 (file)
--- a/reader.h
+++ b/reader.h
namespace odc {
-class TypeEntry {
- public:
- SHORTCHAR *name;
+struct TypeEntry {
+ const std::string name;
INTEGER baseId;
- TypeEntry(SHORTCHAR *typeName) : name(typeName), baseId(-1) {}
+ TypeEntry(const std::string &typeName) : name(typeName), baseId(-1) {}
};
/**
* PROCEDURE (VAR rd: Reader) ReadChar (OUT x: CHAR)
* NEW
* Reads a character (0000X..0FFFFX).
- *
+ */
+ /**
* 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).
* 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.
Store *readNewLinkStore();
void internalizeAlien(Alien *alien, std::streampos down, std::streampos end);
- /*
- TypeName* = ARRAY 64 OF CHAR;
- TypePath* = ARRAY 16 OF TypeName;
- OpName* = ARRAY 32 OF CHAR;
- */
- inline SHORTCHAR *newTypeName() {
- return new SHORTCHAR[64];
- }
- inline SHORTCHAR **newTypePath() {
- SHORTCHAR **out = new SHORTCHAR*[16];
- for (int i = 0; i < 16; ++i) {
- out[i] = newTypeName();
- }
- return out;
- }
- void readPath(SHORTCHAR **path);
+ std::string &fixTypeName(std::string &name);
+ TypePath readPath();
/**
* Add another component to the current path. If first==true, start a new path.
*/
- void addPathComponent(bool first, SHORTCHAR *typeName);
+ void addPathComponent(bool first, const std::string &typeName);
};
} // namespace odc