// Created on: 2001-10-01
// Created by: Julia DOROVSKIKH
-// Copyright (c) 2001-2012 OPEN CASCADE SAS
+// Copyright (c) 2001-2014 OPEN CASCADE SAS
//
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
//
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
//
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
-
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
#ifndef LDOM_OSStream_HeaderFile
#define LDOM_OSStream_HeaderFile
// and current element of sequence,
// also it has methods for the sequence management.
+#include <NCollection_DefineAlloc.hxx>
+#include <NCollection_BaseAllocator.hxx>
#include <Standard_OStream.hxx>
#include <Standard_Boolean.hxx>
#include <stdlib.h>
#include <stdio.h> /* EOF */
-class LDOM_StringElem; // defined in cxx file
-
class LDOM_SBuffer : public streambuf
{
- public:
+ // One element of sequence.
+ // Can only be allocated by the allocator and assumes
+ // it is IncAllocator, so destructor isn't required.
+ struct LDOM_StringElem
+ {
+ char* buf; //!< pointer on data string
+ int len; //!< quantity of really written data
+ LDOM_StringElem* next; //!< pointer on the next element of a sequence
+
+ DEFINE_NCOLLECTION_ALLOC
+
+ LDOM_StringElem(const int, const Handle_NCollection_BaseAllocator&);
+ ~LDOM_StringElem();
+
+ private:
+ LDOM_StringElem (const LDOM_StringElem&);
+ LDOM_StringElem& operator= (const LDOM_StringElem&);
+ };
+
+public:
Standard_EXPORT LDOM_SBuffer (const Standard_Integer theMaxBuf);
// Constructor. Sets a default value for the
// length of each sequence element.
// Caller of this function is responsible
// for memory release after the string usage.
- Standard_Integer Length () const {return myLength;};
+ Standard_Integer Length () const {return myLength;}
// Returns full length of data contained
Standard_EXPORT void Clear ();
Standard_EXPORT ~LDOM_SBuffer ();
// Destructor
- private:
+private:
+
Standard_Integer myMaxBuf; // default length of one element
Standard_Integer myLength; // full length of contained data
LDOM_StringElem* myFirstString; // the head of the sequence
LDOM_StringElem* myCurString; // current element of the sequence
+ Handle(NCollection_BaseAllocator) myAlloc; //allocator for chunks
};
class LDOM_OSStream : public Standard_OStream
Standard_EXPORT LDOM_OSStream (const Standard_Integer theMaxBuf);
// Constructor
- Standard_CString str () const {return myBuffer.str();};
+ Standard_CString str () const {return myBuffer.str();}
- Standard_Integer Length () const {return myBuffer.Length();};
+ Standard_Integer Length () const {return myBuffer.Length();}
- void Clear () { myBuffer.Clear(); };
+ void Clear () { myBuffer.Clear(); }
private:
LDOM_SBuffer myBuffer;