diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
commit | 7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch) | |
tree | 5b89fb8497d7329d26c43f109bb014c54ffb0e8c /sw/inc/swgstr.hxx | |
parent | d791366863cf9659a01b171ce0e727bfe2f28cdf (diff) |
initial import
Diffstat (limited to 'sw/inc/swgstr.hxx')
-rw-r--r-- | sw/inc/swgstr.hxx | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/sw/inc/swgstr.hxx b/sw/inc/swgstr.hxx new file mode 100644 index 000000000000..0887529c907b --- /dev/null +++ b/sw/inc/swgstr.hxx @@ -0,0 +1,190 @@ +/************************************************************************* + * + * $RCSfile: swgstr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:28 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * 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. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _SWGSTR_HXX +#define _SWGSTR_HXX + +#ifndef _STREAM_HXX //autogen +#include <tools/stream.hxx> +#endif + +typedef long long3; // Zur Dokumentation: 3-byte-Longs + +#define MAX_BEGIN 64 // Maximale Blockschachtelung +#define PASSWDLEN 16 // Maximale Passwortlaenge + +// Neue Version mit SvStreams + +// Passwort- und Codierungs-Funktionalitaet + +class swcrypter { +protected: + sal_Char cPasswd[ PASSWDLEN ]; // Passwort-Puffer + BOOL bPasswd; // TRUE wenn mit Passwort + void encode( sal_Char*, USHORT ); // Puffer codieren/decodieren +public: + swcrypter(); + BOOL setpasswd( const String& ); // Passwort setzen + void copypasswd( const sal_Char* ); // Passwort direkt setzen + const sal_Char* getpasswd() { return cPasswd; } +}; + +// Reader/Writer-Stream-Basisklasse mit Pufferverwaltung fuer Texte +// und Spezial-I/O fuer 3-Byte-Longs + +class swstreambase : public swcrypter { +protected: + SvStream* pStrm; // eigentlicher Stream + sal_Char* pBuf; // Zwischenpuffer + USHORT nBuflen; // Laenge des Zwischenpuffers + short nLong; // Long-Laenge (3 oder 4) + BOOL bTempStrm; // TRUE: Stream loeschen + void checkbuf( USHORT ); // Testen der Pufferlaenge + + swstreambase( SvStream& ); + + swstreambase( const swstreambase& ); + int operator=( const swstreambase& ); +public: + ~swstreambase(); + SvStream& Strm() { return *pStrm; } + void clear(); // Puffer loeschen + sal_Char* GetBuf() { return pBuf; } + + // Zusatzfunktionen zur I/O von LONGs als 3-Byte-Zahlen + + void long3() { nLong = 3; } + void long4() { nLong = 4; } + + void sync( swstreambase& r ) { pStrm->Seek( r.tell() ); } + + // Alias- und Hilfsfunktionen + + void seek( long nPos ) { pStrm->Seek( nPos ); } + long tell() { return pStrm->Tell(); } + long filesize(); // Dateigroesse + void flush() { pStrm->Flush(); } + + void setbad(); + int good() { return ( pStrm->GetError() == SVSTREAM_OK ); } + int bad() { return ( pStrm->GetError() != SVSTREAM_OK ); } + int operator!() { return ( pStrm->GetError() != SVSTREAM_OK ); } + int eof() { return pStrm->IsEof(); } + + BYTE get(); + void get( void* p, USHORT n ) { pStrm->Read( (sal_Char*) p, n ); } + + inline swstreambase& operator>>( sal_Char& ); + inline swstreambase& operator>>( BYTE& ); + inline swstreambase& operator>>( short& ); + inline swstreambase& operator>>( USHORT& ); + swstreambase& operator>>( long& ); + inline swstreambase& operator>>( ULONG& ); +}; + +inline swstreambase& swstreambase::operator>>( sal_Char& c ) +{ + *pStrm >> c; return *this; +} + +inline swstreambase& swstreambase::operator>>( BYTE& c ) +{ + *pStrm >> c; return *this; +} + +inline swstreambase& swstreambase::operator>>( short& c ) +{ + *pStrm >> c; return *this; +} + +inline swstreambase& swstreambase::operator>>( USHORT& c ) +{ + *pStrm >> c; return *this; +} + +inline swstreambase& swstreambase::operator>>( ULONG& c ) +{ + return *this >> (long&) c; +} + +class swistream : public swstreambase { + BYTE cType; // Record-Typ + ULONG nOffset; // Record-Offset-Portion +public: + swistream( SvStream& ); + + BYTE peek(); // 1 Byte testen + BYTE next(); // Blockstart + BYTE cur() { return cType; } // aktueller Block + BYTE skipnext(); // Record ueberspringen + void undonext(); // next() rueckgaengig machen + long getskip() { return nOffset; } + void skip( long = -1L ); // Block ueberspringen + sal_Char* text(); // Textstring lesen (nach BEGIN) + long size(); // aktuelle Record-Laenge + +private: + swistream( const swistream& ); + int operator=( const swistream& ); +}; + + +#endif |