| /************************************************************** |
| * |
| * 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 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SBIMAGE_HXX |
| #define _SBIMAGE_HXX |
| |
| #include "sbintern.hxx" |
| #ifndef _RTL_USTRING_HXX |
| #include <rtl/ustring.hxx> |
| #endif |
| #include <filefmt.hxx> |
| |
| // Diese Klasse liest das vom Compiler erzeugte Image ein und verwaltet |
| // den Zugriff auf die einzelnen Elemente. |
| |
| struct SbPublicEntry; |
| |
| class SbiImage { |
| friend class SbiCodeGen; // Compiler-Klassen, die die private- |
| |
| SbxArrayRef rTypes; // User defined types |
| SbxArrayRef rEnums; // Enum types |
| sal_uInt32* pStringOff; // StringId-Offsets |
| sal_Unicode* pStrings; // StringPool |
| char* pCode; // Code-Image |
| char* pLegacyPCode; // Code-Image |
| sal_Bool bError; // sal_True: Fehler |
| sal_uInt16 nFlags; // Flags (s.u.) |
| short nStrings; // Anzahl Strings |
| sal_uInt32 nStringSize; // Groesse des String-Puffers |
| sal_uInt32 nCodeSize; // Groesse des Code-Blocks |
| sal_uInt16 nLegacyCodeSize; // Groesse des Code-Blocks |
| sal_uInt16 nDimBase; // OPTION BASE-Wert |
| rtl_TextEncoding eCharSet; // Zeichensatz fuer Strings |
| // temporaere Verwaltungs-Variable: |
| short nStringIdx; // aktueller String-Index |
| sal_uInt32 nStringOff; // aktuelle Pos im Stringpuffer |
| // Routinen fuer Compiler: |
| void MakeStrings( short ); // StringPool einrichten |
| void AddString( const String& );// String zufuegen |
| void AddCode( char*, sal_uInt32 ); // Codeblock dazu |
| void AddType(SbxObject *); // User-Type mit aufnehmen |
| void AddEnum(SbxObject *); // Register enum type |
| |
| public: |
| String aName; // Makroname |
| ::rtl::OUString aOUSource; // Quellcode |
| String aComment; // Kommentar |
| sal_Bool bInit; // sal_True: Init-Code ist gelaufen |
| sal_Bool bFirstInit; // sal_True, wenn das Image das erste mal nach |
| // dem Compilieren initialisiert wird. |
| SbiImage(); |
| ~SbiImage(); |
| void Clear(); // Inhalt loeschen |
| sal_Bool Load( SvStream&, sal_uInt32& nVer ); // Loads image from stream |
| // nVer is set to version |
| // of image |
| sal_Bool Load( SvStream& ); |
| sal_Bool Save( SvStream&, sal_uInt32 = B_CURVERSION ); |
| sal_Bool IsError() { return bError; } |
| |
| const char* GetCode() const { return pCode; } |
| sal_uInt32 GetCodeSize() const { return nCodeSize; } |
| ::rtl::OUString& GetSource32() { return aOUSource; } |
| sal_uInt16 GetBase() const { return nDimBase; } |
| String GetString( short nId ) const; |
| //const char* GetString( short nId ) const; |
| const SbxObject* FindType (String aTypeName) const; |
| |
| SbxArrayRef GetEnums() { return rEnums; } |
| |
| void SetFlag( sal_uInt16 n ) { nFlags |= n; } |
| sal_uInt16 GetFlag( sal_uInt16 n ) const { return nFlags & n; } |
| sal_uInt16 CalcLegacyOffset( sal_Int32 nOffset ); |
| sal_uInt32 CalcNewOffset( sal_Int16 nOffset ); |
| void ReleaseLegacyBuffer(); |
| sal_Bool ExceedsLegacyLimits(); |
| |
| }; |
| |
| #define SBIMG_EXPLICIT 0x0001 // OPTION EXPLICIT ist aktiv |
| #define SBIMG_COMPARETEXT 0x0002 // OPTION COMPARE TEXT ist aktiv |
| #define SBIMG_INITCODE 0x0004 // Init-Code vorhanden |
| #define SBIMG_CLASSMODULE 0x0008 // OPTION ClassModule is active |
| |
| #endif |