7fd59977 |
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 | */ |