blob: 330be400194156471ff83aa08576c081f550b4b8 (
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
83
84
85
86
87
88
|
// File: LDOMString.cxx
// Created: 25.06.01 15:24:17
// Author: Alexander GRIGORIEV
// Copyright: OpenCascade 2001
// History:
#include <LDOMString.hxx>
#include <LDOM_MemManager.hxx>
//=======================================================================
//function : CreateDirectString
//purpose : Only for hashed strings!!
//=======================================================================
LDOMString LDOMString::CreateDirectString (const char * aValue,
const LDOM_MemManager& aDoc)
{
LDOMString aResult;
aResult.myPtrDoc = &aDoc;
aResult.SetDirect (LDOMBasicString::LDOM_AsciiHashed, aValue);
return aResult;
}
//=======================================================================
//function : LDOMString
//purpose : Copy from another string with allocation in the document
//=======================================================================
LDOMString::LDOMString (const LDOMBasicString& anOther,
const Handle(LDOM_MemManager)& aDoc)
: myPtrDoc (&aDoc -> Self())
{
myType = anOther.Type();
switch (myType)
{
case LDOM_Integer:
anOther.GetInteger (myVal.i);
break;
case LDOM_AsciiFree:
myType = LDOM_AsciiDoc;
case LDOM_AsciiDocClear:
case LDOM_AsciiDoc:
{
const char * aString = anOther.GetString ();
Standard_Integer aLen = strlen (aString) + 1;
myVal.ptr = ((LDOM_MemManager *) myPtrDoc) -> Allocate (aLen);
memcpy (myVal.ptr, aString, aLen);
}
break;
case LDOM_AsciiHashed:
myVal.ptr = (void *)anOther.GetString ();
break;
default:
myType = LDOM_NULL;
}
}
//=======================================================================
//function : LDOMString
//purpose : Copy from another with allocation in the document if necessary
//=======================================================================
/*
LDOMString::LDOMString (const LDOMString& anOther, const LDOM_Document& aDoc)
: myPtrDoc (&aDoc.myMemManager -> Self())
{
switch (anOther.Type())
{
case LDOM_Integer:
myType = LDOM_Integer;
anOther.GetInteger (myVal.i);
break;
case LDOM_AsciiDoc:
if (aDoc == anOther.getOwnerDocument())
case LDOM_AsciiHashed:
myVal.ptr = (void *)anOther.GetString ();
else {
case LDOM_AsciiFree:
const char * aString = anOther.GetString ();
Standard_Integer aLen = strlen (aString) + 1;
myVal.ptr = aDoc.AllocMem (aLen);
memcpy (myVal.ptr, aString, aLen);
myType = LDOM_AsciiDoc;
}
break;
default: ;
}
}
*/
|