mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-05 18:16:23 +03:00
0026990: Compiler warnings in LDOM_OSStream.hxx
Signature of methods xsputn() and overflow() of the class LDOM_SBuffer is corrected to correspond to signature of overriden virtual methods of std::streambuf.
This commit is contained in:
parent
180f89a29e
commit
e071e03825
@ -15,9 +15,9 @@
|
||||
|
||||
#include <LDOM_OSStream.hxx>
|
||||
#include <NCollection_IncAllocator.hxx>
|
||||
#include <Standard_Assert.hxx>
|
||||
|
||||
#include <string.h>
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function : LDOM_StringElem()
|
||||
@ -92,7 +92,8 @@ Standard_CString LDOM_SBuffer::str () const
|
||||
int LDOM_SBuffer::overflow(int c)
|
||||
{
|
||||
char cc = (char)c;
|
||||
return xsputn(&cc,1);
|
||||
xsputn(&cc,1);
|
||||
return c;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@ -112,10 +113,12 @@ int LDOM_SBuffer::underflow()
|
||||
//function : xsputn()
|
||||
//purpose : redefined virtual
|
||||
//=======================================================================
|
||||
int LDOM_SBuffer::xsputn(const char* aStr, int n)
|
||||
std::streamsize LDOM_SBuffer::xsputn (const char* aStr, std::streamsize n)
|
||||
{
|
||||
int aLen = n + 1;
|
||||
int freeLen = myMaxBuf - myCurString->len - 1;
|
||||
Standard_ASSERT_RAISE (n < IntegerLast(), "LDOM_SBuffer cannot work with strings greater than 2 Gb");
|
||||
|
||||
Standard_Integer aLen = static_cast<int>(n) + 1;
|
||||
Standard_Integer freeLen = myMaxBuf - myCurString->len - 1;
|
||||
if (freeLen >= n)
|
||||
{
|
||||
strncpy(myCurString->buf + myCurString->len, aStr, aLen);
|
||||
@ -142,7 +145,7 @@ int LDOM_SBuffer::xsputn(const char* aStr, int n)
|
||||
myCurString->len += aLen - 1;
|
||||
*(myCurString->buf + myCurString->len) = '\0';
|
||||
|
||||
myLength += n;
|
||||
myLength += static_cast<int>(n);
|
||||
return n;
|
||||
}
|
||||
|
||||
|
@ -16,22 +16,6 @@
|
||||
#ifndef LDOM_OSStream_HeaderFile
|
||||
#define LDOM_OSStream_HeaderFile
|
||||
|
||||
// This implementation allows to increase performance
|
||||
// of outputting data into a string
|
||||
// avoiding reallocation of buffer.
|
||||
// class LDOM_OSStream implements output into a sequence of
|
||||
// strings and getting the result as a string.
|
||||
// It inherits Standard_OStream (ostream).
|
||||
// Beside methods of ostream, it also has additional
|
||||
// useful methods: str(), Length() and Clear().
|
||||
// struct LDOM_StringElem is one element of internal sequence
|
||||
// class LDOM_SBuffer inherits streambuf and
|
||||
// redefines some virtual methods of it
|
||||
// (overflow() and xsputn())
|
||||
// This class contains pointers on first
|
||||
// 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>
|
||||
@ -40,11 +24,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h> /* EOF */
|
||||
|
||||
class LDOM_SBuffer : public streambuf
|
||||
//! Class LDOM_SBuffer inherits streambuf and
|
||||
//! redefines some virtual methods of it (overflow() and xsputn()).
|
||||
//! This class contains pointers on first and current element
|
||||
//! of sequence, also it has methods for the sequence management.
|
||||
class LDOM_SBuffer : public std::streambuf
|
||||
{
|
||||
// One element of sequence.
|
||||
// Can only be allocated by the allocator and assumes
|
||||
// it is IncAllocator, so destructor isn't required.
|
||||
//! 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
|
||||
@ -62,32 +50,32 @@ class LDOM_SBuffer : public streambuf
|
||||
};
|
||||
|
||||
public:
|
||||
//! Constructor. Sets a default value for the
|
||||
//! length of each sequence element.
|
||||
Standard_EXPORT LDOM_SBuffer (const Standard_Integer theMaxBuf);
|
||||
// Constructor. Sets a default value for the
|
||||
// length of each sequence element.
|
||||
|
||||
//! Concatenates strings of all sequence elements
|
||||
//! into one string. Space for output string is allocated
|
||||
//! with operator new.
|
||||
//! Caller of this function is responsible
|
||||
//! for memory release after the string usage.
|
||||
Standard_EXPORT Standard_CString str () const;
|
||||
// Concatenates strings of all sequence elements
|
||||
// into one string. Space for output string is allocated
|
||||
// with operator new.
|
||||
// Caller of this function is responsible
|
||||
// for memory release after the string usage.
|
||||
|
||||
//! Returns full length of data contained
|
||||
Standard_Integer Length () const {return myLength;}
|
||||
// Returns full length of data contained
|
||||
|
||||
//! Clears first element of sequence and removes all others
|
||||
Standard_EXPORT void Clear ();
|
||||
// Clears first element of sequence and removes all others
|
||||
|
||||
// Methods of streambuf
|
||||
// Methods of streambuf
|
||||
|
||||
Standard_EXPORT virtual int overflow(int c = EOF);
|
||||
Standard_EXPORT virtual int underflow();
|
||||
//virtual int uflow();
|
||||
Standard_EXPORT virtual int overflow(int c = EOF) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual int underflow() Standard_OVERRIDE;
|
||||
//virtual int uflow();
|
||||
|
||||
Standard_EXPORT virtual int xsputn(const char* s, int n);
|
||||
//virtual int xsgetn(char* s, int n);
|
||||
//virtual int sync();
|
||||
Standard_EXPORT virtual std::streamsize xsputn(const char* s, std::streamsize n) Standard_OVERRIDE;
|
||||
//virtual int xsgetn(char* s, int n);
|
||||
//virtual int sync();
|
||||
|
||||
Standard_EXPORT ~LDOM_SBuffer ();
|
||||
// Destructor
|
||||
@ -101,15 +89,22 @@ private:
|
||||
Handle(NCollection_BaseAllocator) myAlloc; //allocator for chunks
|
||||
};
|
||||
|
||||
//! Subclass if std::ostream allowing to increase performance
|
||||
//! of outputting data into a string avoiding reallocation of buffer.
|
||||
//! Class LDOM_OSStream implements output into a sequence of
|
||||
//! strings and getting the result as a string.
|
||||
//! It inherits Standard_OStream (ostream).
|
||||
//! Beside methods of ostream, it also has additional
|
||||
//! useful methods: str(), Length() and Clear().
|
||||
class LDOM_OSStream : public Standard_OStream
|
||||
{
|
||||
public:
|
||||
Standard_EXPORT LDOM_OSStream (const Standard_Integer theMaxBuf);
|
||||
// Constructor
|
||||
public:
|
||||
//! Constructor
|
||||
Standard_EXPORT LDOM_OSStream(const Standard_Integer theMaxBuf);
|
||||
|
||||
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(); }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user