0023326: The 'aSibling' pointer was utilized before it was verified against nullptr...
[occt.git] / src / LDOM / LDOM_CharacterData.cxx
CommitLineData
b311480e 1// Created on: 2001-09-12
2// Created by: Alexander GRIGORIEV
3// Copyright (c) 2001-2012 OPEN CASCADE SAS
4//
5// The content of this file is subject to the Open CASCADE Technology Public
6// License Version 6.5 (the "License"). You may not use the content of this file
7// except in compliance with the License. Please obtain a copy of the License
8// at http://www.opencascade.org and read it completely before using this file.
9//
10// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12//
13// The Original Code and all software distributed under the License is
14// distributed on an "AS IS" basis, without warranty of any kind, and the
15// Initial Developer hereby disclaims all such warranties, including without
16// limitation, any warranties of merchantability, fitness for a particular
17// purpose or non-infringement. Please see the License for the specific terms
18// and conditions governing the rights and limitations under the License.
19
7fd59977 20
21#include <LDOM_CharacterData.hxx>
22#include <LDOM_BasicText.hxx>
23#include <Standard_ProgramError.hxx>
24
25//=======================================================================
26//function : LDOM_CharacterData
27//purpose :
28//=======================================================================
29
30LDOM_CharacterData::LDOM_CharacterData (const LDOM_BasicText& aText,
31 const Handle(LDOM_MemManager)& aDoc)
32 : LDOM_Node (aText, aDoc), myLength (-1) {}
33
34//=======================================================================
35//function : operator =
36//purpose : Nullify
37//=======================================================================
38
39LDOM_CharacterData& LDOM_CharacterData::operator = (const LDOM_NullPtr* theNull)
40{
41 LDOM_Node::operator = (theNull);
42 myLength = -1;
43 return * this;
44}
45
46//=======================================================================
47//function : operator =
48//purpose : Assignment
49//=======================================================================
50
51LDOM_CharacterData& LDOM_CharacterData::operator =
52 (const LDOM_CharacterData& theOther)
53{
54 LDOM_Node::operator = (theOther);
55 myLength = theOther.myLength;
56 return * this;
57}
58
59//=======================================================================
60//function : setData
61//purpose : replace the data
62//=======================================================================
63
64void LDOM_CharacterData::setData (const LDOMString& theValue)
65{
66 LDOM_BasicText& aText = (LDOM_BasicText&) Origin ();
67 if (&aText == NULL)
68 Standard_ProgramError::Raise("LDOM_CharacterData::setData: called on void");
69 aText.SetData (theValue, myDocument);
70 myLength = -1;
71}
72
73//=======================================================================
74//function : getLength
75//purpose : query the data length
76//=======================================================================
77
78Standard_Integer LDOM_CharacterData::getLength () const
79{
80 if (myLength < 0)
81 (Standard_Integer&)myLength = strlen (getNodeValue().GetString());
82 return myLength;
83}