diff options
Diffstat (limited to 'rsc/inc/rscpar.hxx')
-rw-r--r-- | rsc/inc/rscpar.hxx | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/rsc/inc/rscpar.hxx b/rsc/inc/rscpar.hxx new file mode 100644 index 000000000000..263b8df03669 --- /dev/null +++ b/rsc/inc/rscpar.hxx @@ -0,0 +1,95 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _RSCPAR_HXX +#define _RSCPAR_HXX + +#include <rsctools.hxx> +#include <rscerror.h> + +/****************** C L A S S E S ****************************************/ +class RscTypCont; +class RscExpression; +/*********** R s c F i l e I n s t ***************************************/ + +#define READBUFFER_MAX 256 +class RscFileInst +{ + ERRTYPE aFirstError;// Erster Fehler + sal_uInt32 nErrorLine; // Zeile des ersten Fehlers + sal_uInt32 nErrorPos; // Position des ersten Fehlers + BOOL bIncLine; // Muss Zeilennummer incrementiert werden + sal_uInt32 nLineNo; // Zeile in der Eingabedatei + ULONG lFileIndex; // Index auf Eingabedatei + ULONG lSrcIndex; // Index auf Basisdatei + FILE * fInputFile; // Eingabedatei + char * pInput; // Lesepuffer + sal_uInt32 nInputBufLen; // Laenge des Lesepuffers + sal_uInt32 nInputPos; // Position im Lesepuffer + sal_uInt32 nInputEndPos;// Ende im Lesepuffer + char * pLine; // Zeile + sal_uInt32 nLineBufLen;//Lange des Zeilenpuffres + sal_uInt32 nScanPos; // Position in der Zeile + int cLastChar; + BOOL bEof; + +public: + RscTypCont * pTypCont; + void Init(); // ctor initialisieren + RscFileInst( RscTypCont * pTC, ULONG lIndexSrc, + ULONG lFileIndex, FILE * fFile ); + RscFileInst( RscTypCont * pTC, ULONG lIndexSrc, + ULONG lFileIndex, const ByteString & ); + ~RscFileInst(); + BOOL IsEof() const { return bEof; } + void SetFileIndex( ULONG lFIndex ) { lFileIndex = lFIndex; } + ULONG GetFileIndex() { return( lFileIndex ); } + ULONG GetSrcIndex() { return( lSrcIndex ); } + void SetLineNo( sal_uInt32 nLine ) { nLineNo = nLine; } + sal_uInt32 GetLineNo() { return( nLineNo ); } + sal_uInt32 GetScanPos() { return( nScanPos ); } + char * GetLine() { return( pLine ); } + int GetChar(); + int GetFastChar() { return pLine[ nScanPos ] ? + pLine[ nScanPos++ ] : GetChar(); + } + void GetNewLine(); + // Fehlerbehandlung + void SetError( ERRTYPE aError ); + ERRTYPE GetError() { return aFirstError; } + sal_uInt32 GetErrorLine() { return nErrorLine; } + sal_uInt32 GetErrorPos() { return nErrorPos; } +}; + +/******************* F u n c t i o n *************************************/ +void IncludeParser( RscFileInst * pFileInst ); +ERRTYPE parser( RscFileInst * pFileInst ); +RscExpression * MacroParser( RscFileInst & rFileInst ); + +#endif // _RSCPAR_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |