0022815: Missing delete operator for placement new
[occt.git] / src / LDOM / LDOMString.cxx
1 // File:      LDOMString.cxx
2 // Created:   25.06.01 15:24:17
3 // Author:    Alexander GRIGORIEV
4 // Copyright: OpenCascade 2001
5 // History:
6
7 #include <LDOMString.hxx>
8 #include <LDOM_MemManager.hxx>
9
10 //=======================================================================
11 //function : CreateDirectString
12 //purpose  : Only for hashed strings!!
13 //=======================================================================
14
15 LDOMString LDOMString::CreateDirectString (const char             * aValue,
16                                            const LDOM_MemManager& aDoc)
17 {
18   LDOMString aResult;
19   aResult.myPtrDoc = &aDoc;
20   aResult.SetDirect (LDOMBasicString::LDOM_AsciiHashed, aValue);
21   return aResult;
22 }
23
24 //=======================================================================
25 //function : LDOMString
26 //purpose  : Copy from another string with allocation in the document
27 //=======================================================================
28
29 LDOMString::LDOMString (const LDOMBasicString&          anOther,
30                         const Handle(LDOM_MemManager)&  aDoc)
31      : myPtrDoc (&aDoc -> Self())
32 {
33   myType = anOther.Type();
34   switch (myType)
35   {
36   case LDOM_Integer:
37     anOther.GetInteger (myVal.i);
38     break;
39   case LDOM_AsciiFree:
40     myType = LDOM_AsciiDoc;
41   case LDOM_AsciiDocClear:
42   case LDOM_AsciiDoc:
43     {
44       const char * aString = anOther.GetString ();
45       Standard_Integer aLen = strlen (aString) + 1;
46       myVal.ptr = ((LDOM_MemManager *) myPtrDoc) -> Allocate (aLen);
47       memcpy (myVal.ptr, aString, aLen);
48     }
49     break;
50   case LDOM_AsciiHashed:
51     myVal.ptr = (void *)anOther.GetString ();
52     break;
53   default:
54     myType = LDOM_NULL;
55   }
56 }
57
58 //=======================================================================
59 //function : LDOMString
60 //purpose  : Copy from another with allocation in the document if necessary
61 //=======================================================================
62 /*
63 LDOMString::LDOMString (const LDOMString& anOther, const LDOM_Document& aDoc)
64      : myPtrDoc (&aDoc.myMemManager -> Self())
65 {
66   switch (anOther.Type())
67   {
68   case LDOM_Integer:
69     myType = LDOM_Integer;
70     anOther.GetInteger (myVal.i);
71     break;
72   case LDOM_AsciiDoc:
73     if (aDoc == anOther.getOwnerDocument())
74   case LDOM_AsciiHashed:
75       myVal.ptr = (void *)anOther.GetString ();
76     else {
77   case LDOM_AsciiFree:
78       const char * aString = anOther.GetString ();
79       Standard_Integer aLen = strlen (aString) + 1;
80       myVal.ptr = aDoc.AllocMem (aLen);
81       memcpy (myVal.ptr, aString, aLen);
82       myType = LDOM_AsciiDoc;
83     }
84     break;
85   default: ;
86   }
87 }
88 */