summaryrefslogtreecommitdiff
path: root/cosv/source/strings/streamstr.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-05-06 21:02:03 +0200
committerMichael Stahl <mstahl@redhat.com>2013-06-04 12:01:12 +0200
commit7a5a19218707ab580d58a3fbadec1148368661f1 (patch)
tree94137a4084019d6cfadac34f31351375a05c10b9 /cosv/source/strings/streamstr.cxx
parentbe49d3a25bc867c4f523cc6ff51ed2e8df9211d7 (diff)
remove cosv, udm and autodoc
implementing UNO IDL support in doxygen: 9 days of work converting IDL file comments to doxygen: 5 days of work removing 57k lines of unmaintained buggy autodoc, bespoke String and File classes: priceless Change-Id: I566edb4f91454baa35e07d901432a8dfd35b9c29
Diffstat (limited to 'cosv/source/strings/streamstr.cxx')
-rw-r--r--cosv/source/strings/streamstr.cxx606
1 files changed, 0 insertions, 606 deletions
diff --git a/cosv/source/strings/streamstr.cxx b/cosv/source/strings/streamstr.cxx
deleted file mode 100644
index 809379be0eff..000000000000
--- a/cosv/source/strings/streamstr.cxx
+++ /dev/null
@@ -1,606 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#define CSV_USE_CSV_ASSERTIONS
-#include <cosv/csv_env.hxx>
-
-#include <cosv/comfunc.hxx>
-#include <cosv/string.hxx>
-#include <cosv/streamstr.hxx>
-#include <cosv/std_outp.hxx>
-#include <cosv/tpl/dyn.hxx>
-
-// NOT FULLY DECLARED SERVICES
-#include <string.h>
-#include <stdio.h>
-#include <stdarg.h> // both are needed to satisfy all compilers
-#include <cstdarg> // std::va_list and friends
-
-#include <cosv/tpl/swelist.hxx>
-
-
-
-namespace csv
-{
-
-
-// Maximal sizes of resulting integers in text form:
-const uintt C_short_max_size = sizeof(short) * 3;
-const uintt C_int_max_size = sizeof(int) * 3;
-const uintt C_long_max_size = sizeof(long) * 3;
-
-
-inline void
-StreamStr::Advance(size_type i_nAddedSize)
-{ pCur += i_nAddedSize; }
-
-
-
-StreamStr::StreamStr( size_type i_nCapacity )
- : bostream(),
- nCapacity1( i_nCapacity + 1 ),
- dpData( new char [i_nCapacity + 1] ),
- pEnd(dpData),
- pCur(dpData),
- eMode(str::overwrite)
-{
- *pEnd = '\0';
-}
-
-StreamStr::StreamStr( const self & i_rOther )
- : bostream(),
- nCapacity1( i_rOther.nCapacity1 ),
- dpData( new char [i_rOther.nCapacity1] ),
- pEnd( dpData + strlen(i_rOther.dpData) ),
- pCur( dpData + i_rOther.tellp() ),
- eMode(i_rOther.eMode)
-{
- strcpy( dpData, i_rOther.dpData ); // SAFE STRCPY (#100211# - checked)
-}
-
-StreamStr::~StreamStr()
-{
- delete [] dpData;
-}
-
-
-StreamStr &
-StreamStr::operator=( const self & i_rOther )
-{
- delete [] dpData;
-
- nCapacity1 = i_rOther.nCapacity1;
- dpData = new char [i_rOther.nCapacity1];
- pEnd = dpData + strlen(i_rOther.dpData);
- strcpy( dpData, i_rOther.dpData ); // SAFE STRCPY (#100211# - checked)
- pCur = dpData + i_rOther.tellp();
- eMode = i_rOther.eMode;
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( const char * i_s )
-{
- size_type nLength = strlen(i_s);
-
- ProvideAddingSize( nLength );
- memcpy( pCur, i_s, nLength );
- Advance(nLength);
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( const String & i_s )
-{
- size_type nLength = i_s.length();
-
- ProvideAddingSize( nLength );
- memcpy( pCur, i_s.c_str(), nLength );
- Advance(nLength);
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( char i_c )
-{
- ProvideAddingSize( 1 );
- *pCur = i_c;
- Advance(1);
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( unsigned char i_c )
-{
- return operator<<( char(i_c) );
-}
-
-StreamStr &
-StreamStr::operator<<( signed char i_c )
-{
- return operator<<( char(i_c) );
-}
-
-StreamStr &
-StreamStr::operator<<( short i_n )
-{
- char buf[C_short_max_size] = "";
- sprintf( buf, "%hi", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( unsigned short i_n )
-{
- char buf[C_short_max_size] = "";
- sprintf( buf, "%hu", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( int i_n )
-{
- char buf[C_int_max_size] = "";
- sprintf( buf, "%i", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( unsigned int i_n )
-{
- char buf[C_int_max_size] = "";
- sprintf( buf, "%u", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( long i_n )
-{
- char buf[C_long_max_size] = "";
- sprintf( buf, "%li", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( unsigned long i_n )
-{
- char buf[C_long_max_size] = "";
- sprintf( buf, "%lu", i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( float i_n )
-{
- const int C_float_max_size = 20;
- char buf[C_float_max_size] = "";
- sprintf( buf, "%.*g", C_float_max_size-8, i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator<<( double i_n )
-{
- const int C_double_max_size = 30;
- char buf[C_double_max_size] = "";
- sprintf( buf, "%.*lg", C_double_max_size-8, i_n ); // SAFE SPRINTF (#100211# - checked)
-
- size_type nLength = strlen(buf);
- ProvideAddingSize( nLength );
- memcpy( pCur, buf, nLength );
- Advance( nLength );
-
- return *this;
-}
-
-const char &
-StreamStr::operator[]( position_type i_nPosition ) const
-{
- static const char aNull_ = '\0';
-
- if ( position_type(pEnd - dpData) > i_nPosition )
- return dpData[i_nPosition];
- return aNull_;
-}
-
-char &
-StreamStr::operator[]( position_type i_nPosition )
-{
- static char aDummy_ = '\0';
-
- if ( position_type(pEnd - dpData) > i_nPosition )
- return dpData[i_nPosition];
- return aDummy_;
-}
-
-void
-StreamStr::resize( size_type i_nMinimumCapacity )
-{
- if ( i_nMinimumCapacity <= capacity() )
- return;
-
- Resize(i_nMinimumCapacity);
-}
-
-StreamStr &
-StreamStr::seekp( seek_type i_nCount,
- seek_dir i_eDirection )
-{
- seek_type nLength = seek_type( length() );
- seek_type nNewPos = tellp();
-
- switch ( i_eDirection )
- {
- case ::csv::beg: nNewPos = i_nCount;
- break;
- case ::csv::cur: nNewPos += i_nCount;
- break;
- case ::csv::end: nNewPos = nLength + i_nCount;
- break;
- }
-
- if ( in_range<seek_type>(0, nNewPos, nLength + 1) )
- {
- pCur = dpData + nNewPos;
- if (eMode == str::overwrite)
- {
- pEnd = pCur;
- *pEnd = '\0';
- }
- }
-
- return *this;
-}
-
-StreamStr &
-StreamStr::set_insert_mode( insert_mode i_eMode )
-{
- eMode = i_eMode;
- return *this;
-}
-
-void
-StreamStr::pop_front( size_type i_nCount )
-{
- size_type nCount = min(i_nCount, length());
-
- MoveData( dpData + nCount, pEnd, -(seek_type(nCount)) );
-
- pCur -= nCount;
- pEnd -= nCount;
- *pEnd = '\0';
-}
-
-void
-StreamStr::pop_back( size_type i_nCount )
-{
- size_type nCount = min(i_nCount, length());
- pEnd -= nCount;
- if (pCur > pEnd)
- pCur = pEnd;
- *pEnd = '\0';
-}
-
-StreamStr &
-StreamStr::operator_join( std::vector<String>::const_iterator i_rBegin,
- std::vector<String>::const_iterator i_rEnd,
- const char * i_sLink )
-{
- std::vector<String>::const_iterator it = i_rBegin;
- if ( it != i_rEnd )
- {
- operator<<(*it);
- for ( ++it; it != i_rEnd; ++it )
- {
- operator<<(i_sLink);
- operator<<(*it);
- }
- }
- return *this;
-}
-
-StreamStr &
-StreamStr::operator_add_substr( const char * i_sText,
- size_type i_nLength )
-{
- size_type nLength = csv::min<size_type>(i_nLength, strlen(i_sText));
-
- ProvideAddingSize( nLength );
- memcpy( pCur, i_sText, nLength );
- Advance(nLength);
-
- return *this;
-}
-
-StreamStr &
-StreamStr::operator_add_token( const char * i_sText,
- char i_cDelimiter )
-{
- const char * pTokenEnd = strchr(i_sText, i_cDelimiter);
- if (pTokenEnd == 0)
- operator<<(i_sText);
- else
- operator_add_substr(i_sText, pTokenEnd-i_sText);
- return *this;
-}
-
-StreamStr &
-StreamStr::operator_read_line( bstream & i_src )
-{
- char c = 0;
- intt nCount = 0;
- for ( nCount = i_src.read(&c, 1);
- nCount == 1 AND c != 13 AND c != 10;
- nCount = i_src.read(&c, 1) )
- {
- operator<<(c);
- }
-
- // Check for line-end:
- if ( NOT (nCount == 0) AND c != 0 )
- {
- char oldc = c;
- if (i_src.read(&c, 1) == 1)
- {
- if ( (c != 13 AND c != 10) OR c == oldc)
- i_src.seek(-1,::csv::cur);
- }
- }
- return *this;
-}
-
-void
-StreamStr::strip_front_whitespace()
-{
- const_iterator it = begin();
- for ( ;
- it != end() ? *it < 33 : false;
- ++it ) ;
- pop_front(it - begin());
-}
-
-void
-StreamStr::strip_back_whitespace()
-{
- const_iterator it = end();
- for ( ;
- it != begin() ? *(it-1) < 33 : false;
- --it ) ;
- pop_back(end() - it);
-}
-
-void
-StreamStr::strip_frontback_whitespace()
-{
- strip_front_whitespace();
- strip_back_whitespace();
-}
-
-void
-StreamStr::replace_all( char i_cCarToSearch,
- char i_cReplacement )
-{
- for ( char * p = dpData; p != pEnd; ++p )
- {
- if (*p == i_cCarToSearch)
- *p = i_cReplacement;
- }
-}
-
-class StreamStrPool
-{
- public:
- StreamStrPool();
- ~StreamStrPool();
- private:
- // Non-copyable
- StreamStrPool(StreamStrPool &); // not defined
- void operator =(StreamStrPool &); // not defined
-
- // Interface to:
- friend class StreamStrLock;
- static StreamStr & AcquireFromPool_(
- uintt i_nMinimalSize );
- static void ReleaseToPool_(
- DYN StreamStr * let_dpUsedStr );
-
- // DATA
- SweList< DYN StreamStr* >
- aPool;
-};
-
-StreamStrPool::StreamStrPool()
-{
-}
-
-StreamStrPool::~StreamStrPool()
-{
- for ( SweList< DYN StreamStr* >::iterator it = aPool.begin();
- it != aPool.end();
- ++it )
- {
- delete (*it);
- }
-}
-
-namespace
-{
- static StreamStrPool aPool_;
-}
-
-
-StreamStr &
-StreamStrPool::AcquireFromPool_( uintt i_nMinimalSize )
-{
- if ( aPool_.aPool.empty() )
- {
- return *new StreamStr(i_nMinimalSize);
- }
-
- StreamStr & ret = *aPool_.aPool.front();
- aPool_.aPool.pop_front();
- ret.resize(i_nMinimalSize);
- ret.seekp(0);
- ret.set_insert_mode(str::overwrite);
- return ret;
-}
-
-void
-StreamStrPool::ReleaseToPool_( DYN StreamStr * let_dpUsedStr )
-{
- aPool_.aPool.push_back( let_dpUsedStr );
-}
-
-StreamStrLock::StreamStrLock( uintt i_nMinimalSize )
- : pStr( &StreamStrPool::AcquireFromPool_(i_nMinimalSize) )
-{
-}
-
-StreamStrLock::~StreamStrLock()
-{
- StreamStrPool::ReleaseToPool_(pStr);
-}
-
-
-UINT32
-StreamStr::do_write( const void * i_pSrc,
- UINT32 i_nNrofBytes )
-{
- ProvideAddingSize( i_nNrofBytes );
- memcpy( pCur, i_pSrc, i_nNrofBytes );
- Advance(i_nNrofBytes);
-
- return i_nNrofBytes;
-}
-
-void
-StreamStr::ProvideAddingSize( size_type i_nSize2Add )
-{
- size_type nLength = length();
- if ( capacity() - nLength < i_nSize2Add )
- Resize( nLength + i_nSize2Add );
-
- pEnd += i_nSize2Add;
- *pEnd = '\0';
-
- if (eMode == str::insert AND pCur != pEnd)
- {
- MoveData( pCur, pCur + i_nSize2Add, seek_type(i_nSize2Add) );
- }
-}
-
-void
-StreamStr::Resize( size_type i_nMinimumCapacity )
-{
- size_type nNewSize = nCapacity1 < 128
- ? nCapacity1 << 1
- : (nCapacity1 << 1) - (nCapacity1 >> 1);
- nCapacity1 = csv::max( nNewSize, size_type(i_nMinimumCapacity + 1) );
-
- char * pNew = new char[nCapacity1];
- strcpy ( pNew, dpData ); // SAFE STRCPY (#100211# - checked)
- pEnd = pNew + (pEnd - dpData);
- pCur = pNew + (pCur - dpData);
-
- delete [] dpData;
- dpData = pNew;
-}
-
-void
-StreamStr::MoveData( char * i_pStart,
- char * i_pEnd,
- seek_type i_nDiff )
-{
- if (i_nDiff > 0)
- {
- register const char * pSrc = i_pEnd;
- register char * pDest = i_pEnd + i_nDiff;
- for ( ; pSrc != i_pStart; --pSrc, --pDest )
- {
- *pDest = *pSrc;
- }
- *pDest = *pSrc;
- }
- else if (i_nDiff < 0)
- {
- const char * pSrc = i_pStart;
- char * pDest = i_pStart + i_nDiff;
- for ( ; pSrc != i_pEnd; ++pSrc, ++pDest )
- {
- *pDest = *pSrc;
- }
- }
-}
-
-// Does nothing, only the name of this function is needed.
-void
-c_str()
-{
- // Does nothing.
-}
-
-} // namespace csv
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */