diff options
Diffstat (limited to 'include/cosv/streamstr.hxx')
-rw-r--r-- | include/cosv/streamstr.hxx | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/include/cosv/streamstr.hxx b/include/cosv/streamstr.hxx deleted file mode 100644 index ec13f8ec63c6..000000000000 --- a/include/cosv/streamstr.hxx +++ /dev/null @@ -1,310 +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 . - */ - -#ifndef CSV_STREAMSTR_HXX -#define CSV_STREAMSTR_HXX - -#include "sal/config.h" - -#include "sal/types.h" - -// BASE CLASSES -#include <cosv/bstream.hxx> -// USED SERVICES -#include <cosv/str_types.hxx> -#include <string.h> - - - - -namespace csv -{ - class String; - - -void c_str(); // Dummy needed for StreamStr::operator<<(StreamStr::F_CSTR); - - -/** A string buffer class for all kinds of string manipulation. -*/ -class StreamStr : public bostream -{ - public: - typedef StreamStr self; - - typedef str::size size_type; - typedef str::position position_type; - typedef intt seek_type; - typedef str::insert_mode insert_mode; - - typedef const char * const_iterator; - typedef char * iterator; - - typedef void (*F_CSTR)(); - - - /** Represents an area within a string. - */ - struct Area - { - typedef str::size size_type; - - Area( - const char * i_str = "", - size_type i_nLength = str::maxsize ) - : sStr(i_str), - nLength( i_nLength == str::maxsize - ? strlen(i_str) - : i_nLength ) {} - const char * sStr; - size_type nLength; - }; - - // LIFECYCLE - StreamStr( - size_type i_nCapacity ); - /// Copies also insert_mode and current position. - StreamStr( - const self & i_rOther ); - ~StreamStr(); - - // OPERATORS - /// Copies also insert_mode and current position. - self & operator=( - const self & i_rOther ); - - self & operator<<( - const char * i_s ); - self & operator<<( - const String & i_s ); - self & operator<<( - char i_c ); - self & operator<<( - unsigned char i_c ); - self & operator<<( - signed char i_c ); - - self & operator<<( - short i_n ); - self & operator<<( - unsigned short i_n ); - self & operator<<( - int i_n ); - self & operator<<( - unsigned int i_n ); - self & operator<<( - long i_n ); - self & operator<<( - unsigned long i_n ); - - self & operator<<( - float i_n ); - self & operator<<( - double i_n ); - - /** This operator is used to finish a sequence of streaming - oeprators by returning the c-string of the complete string. - - @return The same as ->c_str(). - - @example - csv::StreamStr s(100); - const char * - fullname = s << qualifier() << "::" << name() << csv::c_str; - */ - const char * operator<<( - F_CSTR i_f ); - - const char & operator[]( - position_type i_nPosition ) const; - char & operator[]( - position_type i_nPosition ); - - // OPERATIONS - void resize( - size_type i_nMinimumCapacity ); - - void clear(); - - /** Sets start point for the next operator<<() call. - if the intended position is not reachable, nothing happens. - */ - self & seekp( - seek_type i_nCount, - seek_dir i_eDirection = ::csv::beg ); - self & reset() { return seekp(0); } - /** Sets the insertion mode of all and only the operator<<() calls. - - Default is str::overwrite: - str::overwrite: seekp() always sets the cur end of the string. - operator<<() calls push the end of the string forward. - str::insert: seekp() only sets the insertion point. - operator<<() calls insert their text at the tellp() - position and keep the rest of the string. tellp() is - then after the inserted text, on the beginning of the - rest of the string. - */ - self & set_insert_mode( - insert_mode i_eMode ); - - void pop_front( - size_type i_nCount ); - void pop_back( - size_type i_nCount ); - - /// Works like operator<<(). Does the same as Perl's join(). - self & operator_join( - std::vector<String>::const_iterator - i_rBegin, - std::vector<String>::const_iterator - i_rEnd, - const char * i_sLink ); - /// Works like operator<<() - self & operator_add_substr( - const char * i_sText, - size_type i_nLength ); - /// Works like operator<<() - self & operator_add_token( - const char * i_sText, - char i_cDelimiter ); - /// Works like operator<<() - self & operator_read_line( - bstream & i_src ); - - void strip_front_whitespace(); /// removes space, tab and crlf. - void strip_back_whitespace(); - void strip_frontback_whitespace(); - - void replace_all( - char i_cCarToSearch, - char i_cReplacement ); - - // INQUIRY - const char * c_str() const; - const char * data() const; - - bool empty() const; - size_type size() const; - size_type length() const; - - size_type capacity() const; - - position_type tellp() const; - - const_iterator begin() const; - const_iterator cur() const; - const_iterator end() const; - - // ACCESS - iterator begin(); - iterator cur(); - iterator end(); - - private: - // Interface bostream - virtual UINT32 do_write( - const void * i_pSrc, - UINT32 i_nNrofBytes); - // Locals - void ProvideAddingSize( - size_type i_nSize2Add ); - /// Resizes with the factor 2.0 (under 128), 1.5 or until i_nMinimumCapacity, whatever is bigger. - void Resize( - size_type i_nMinimumCapacity = 0 ); - void Advance( - size_type i_nAddedSize ); - void MoveData( - char * i_pStart, - char * i_pEnd, - seek_type i_nDiff ); - // DATA - size_type nCapacity1; /// Capacity of characters to contain + 1 for terminating 0. - DYN char * dpData; - char * pEnd; - char * pCur; - insert_mode eMode; -}; - - - -class StreamStrLock -{ - public: - StreamStrLock( - uintt i_nMinimalSize ); - ~StreamStrLock(); - - StreamStr & operator()() { return *pStr; } - - private: - StreamStr * pStr; -}; - -// IMPLEMENTATION - -inline const char * -StreamStr::operator<<( SAL_UNUSED_PARAMETER F_CSTR ) - { return dpData; } -inline void -StreamStr::clear() - { pEnd = pCur = dpData; *pEnd = '\0'; } -inline const char * -StreamStr::c_str() const - { return dpData; } -inline const char * -StreamStr::data() const - { return dpData; } -inline bool -StreamStr::empty() const - { return dpData == pEnd; } -inline StreamStr::size_type -StreamStr::size() const - { return pEnd - dpData; } -inline StreamStr::size_type -StreamStr::length() const - { return size(); } -inline StreamStr::size_type -StreamStr::capacity() const - { return nCapacity1-1; } -inline StreamStr::position_type -StreamStr::tellp() const - { return size_type(pCur-dpData); } -inline StreamStr::const_iterator -StreamStr::begin() const - { return dpData; } -inline StreamStr::const_iterator -StreamStr::cur() const - { return pCur; } -inline StreamStr::const_iterator -StreamStr::end() const - { return pEnd; } -inline StreamStr::iterator -StreamStr::begin() - { return dpData; } -inline StreamStr::iterator -StreamStr::cur() - { return pCur; } -inline StreamStr::iterator -StreamStr::end() - { return pEnd; } - -} // namespace csv -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |