1 // File: LDOMString.cxx
2 // Created: 25.06.01 15:24:17
3 // Author: Alexander GRIGORIEV
4 // Copyright: OpenCascade 2001
7 #include <LDOMString.hxx>
8 #include <LDOM_MemManager.hxx>
10 //=======================================================================
11 //function : CreateDirectString
12 //purpose : Only for hashed strings!!
13 //=======================================================================
15 LDOMString LDOMString::CreateDirectString (const char * aValue,
16 const LDOM_MemManager& aDoc)
19 aResult.myPtrDoc = &aDoc;
20 aResult.SetDirect (LDOMBasicString::LDOM_AsciiHashed, aValue);
24 //=======================================================================
25 //function : LDOMString
26 //purpose : Copy from another string with allocation in the document
27 //=======================================================================
29 LDOMString::LDOMString (const LDOMBasicString& anOther,
30 const Handle(LDOM_MemManager)& aDoc)
31 : myPtrDoc (&aDoc -> Self())
33 myType = anOther.Type();
37 anOther.GetInteger (myVal.i);
40 myType = LDOM_AsciiDoc;
41 case LDOM_AsciiDocClear:
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);
50 case LDOM_AsciiHashed:
51 myVal.ptr = (void *)anOther.GetString ();
58 //=======================================================================
59 //function : LDOMString
60 //purpose : Copy from another with allocation in the document if necessary
61 //=======================================================================
63 LDOMString::LDOMString (const LDOMString& anOther, const LDOM_Document& aDoc)
64 : myPtrDoc (&aDoc.myMemManager -> Self())
66 switch (anOther.Type())
69 myType = LDOM_Integer;
70 anOther.GetInteger (myVal.i);
73 if (aDoc == anOther.getOwnerDocument())
74 case LDOM_AsciiHashed:
75 myVal.ptr = (void *)anOther.GetString ();
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;