summaryrefslogtreecommitdiff
path: root/inc/LDOM_XmlReader.hxx
blob: e50cc3d403c1e477edc49562fda7fa69dbdee07a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// File:      LDOM_XmlReader.hxx
// Created:   20.07.01 15:27:57
// Author:    Alexander GRIGORIEV
// Copyright: OpenCascade 2001
// History:   AGV 060302: Input from istream
//            AGV 130302: bug corr: was error if strlen(root_elem_name) < 7

#ifndef LDOM_XmlReader_HeaderFile
#define LDOM_XmlReader_HeaderFile

//#define XML_BUFFER_SIZE 1000
#define XML_BUFFER_SIZE 20480

#include <LDOM_BasicElement.hxx>

class TCollection_AsciiString;
class LDOM_OSStream;

//  Class LDOM_XmlReader
//

class LDOM_XmlReader 
{
 public:
  enum RecordType {
    XML_UNKNOWN,
    XML_HEADER,
    XML_DOCTYPE,
    XML_COMMENT,
    XML_START_ELEMENT,
    XML_END_ELEMENT,
    XML_FULL_ELEMENT,
    XML_TEXT,
    XML_CDATA,
    XML_EOF
  };

  // ---------- PUBLIC METHODS ----------
  LDOM_XmlReader (const int aFileDes, const Handle(LDOM_MemManager)& aDocument,
                  TCollection_AsciiString& anErrorString);
  // Constructor - takes a file descriptor for input

  LDOM_XmlReader (istream& anInput, const Handle(LDOM_MemManager)& aDocument,
                  TCollection_AsciiString& anErrorString);
  // Constructor - takes an istream for input

  RecordType            ReadRecord      (LDOM_OSStream& theData);
  // reading a markup or other element of XML format

  LDOM_BasicElement&    GetElement      () const        { return * myElement; }
  // get the last element retrieved from the stream

  static Standard_Boolean getInteger    (LDOMBasicString&       theValue,
                                         const char             * theStart,
                                         const char             * theEnd);
  // try convert string theStart to LDOM_AsciiInteger, return False on success

 private:
  // ---------- PRIVATE (PROHIBITED) METHODS ----------
  LDOM_XmlReader (const LDOM_XmlReader& theOther);
  // Copy constructor

  LDOM_XmlReader& operator = (const LDOM_XmlReader& theOther);
  // Assignment

 private:
  // ---------- PRIVATE FIELDS ----------

  Standard_Boolean              myEOF;
  int                           myFileDes; // alternative 1: file descriptor
  istream&                      myIStream; // alternative 2: istream
  TCollection_AsciiString       & myError;
  Handle(LDOM_MemManager)       myDocument;
  LDOM_BasicElement             * myElement;
  const LDOM_BasicNode          * myLastChild;  // optim. reading attributes
  const char                    * myPtr;
  const char                    * myEndPtr;
  char                          myBuffer [XML_BUFFER_SIZE+4];
};

#endif