summaryrefslogtreecommitdiff
path: root/inc/LDOMString.hxx
blob: 1bccc97c057ffa1a184e546297c9d72199a4d3ac (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
82
// File:      LDOMString.hxx
// Created:   25.06.01 14:37:10
// Author:    Alexander GRIGORIEV
// Copyright: OpenCascade 2001


#ifndef LDOMString_HeaderFile
#define LDOMString_HeaderFile

#include <LDOMBasicString.hxx>
#include <Handle_LDOM_MemManager.hxx>

//  Class LDOMString
//  Represents various object types which can be mapped to XML strings
//
//  LDOMString is not an independent type: you must be sure that the owner
//  LDOM_Document is never lost during the lifetime of its LDOMStrings - for
//  that it is necessary to keep at least one LDOM_Document or LDOM_Node alive
//  before all LDOMString's (LDOM_AsciiDoc type) are destroyed.

class LDOMString : public LDOMBasicString
{
 public:
  // ---------- PUBLIC METHODS ----------

  LDOMString                    () : myPtrDoc (NULL) {}
  //    Empty constructor

  LDOMString                    (const LDOMString& anOther)
    : LDOMBasicString (anOther), myPtrDoc (anOther.myPtrDoc) {}
  //    Copy constructor

  LDOMString                    (const Standard_Integer aValue)
    : LDOMBasicString (aValue), myPtrDoc (NULL) {}
  //    Integer => LDOMString

//  Standard_EXPORT LDOMString (const Standard_Real aValue);

  LDOMString                    (const char * aValue)
    : LDOMBasicString (aValue), myPtrDoc (NULL) {}
  //    Create LDOM_AsciiFree

  const LDOM_MemManager&       getOwnerDocument  () const
                        { return * myPtrDoc; }

  LDOMString&                   operator =        (const LDOM_NullPtr * aNull)
                        { LDOMBasicString::operator= (aNull); return *this; }

  LDOMString&                   operator =        (const LDOMString& anOther)
  {
    myPtrDoc = anOther.myPtrDoc;
    LDOMBasicString::operator= (anOther);
    return * this;
  }

 private:
  friend class LDOM_Document;
  friend class LDOM_Node;
  friend class LDOM_Element;
  friend class LDOM_BasicElement;
  friend class LDOM_BasicAttribute;
  friend class LDOM_BasicText;

  static LDOMString CreateDirectString
                                (const char             * aValue,
                                 const LDOM_MemManager& aDoc);

  LDOMString                    (const LDOMBasicString& anOther,
                                 const LDOM_MemManager& aDoc)
    : LDOMBasicString (anOther), myPtrDoc (&aDoc) {}
  //    Plain copy from LDOMBasicString

  LDOMString                    (const LDOMBasicString&         anOther,
                                 const Handle(LDOM_MemManager)& aDoc);
  //    Copy from another string with allocation in the document space

 private:
  // ---------- PRIVATE FIELDS -------------
  const LDOM_MemManager * myPtrDoc;
};

#endif