diff options
Diffstat (limited to 'idl/inc/types.hxx')
-rw-r--r-- | idl/inc/types.hxx | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/idl/inc/types.hxx b/idl/inc/types.hxx new file mode 100644 index 000000000000..4913c21c4870 --- /dev/null +++ b/idl/inc/types.hxx @@ -0,0 +1,332 @@ +/* -*- 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 _TYPES_HXX +#define _TYPES_HXX + +#include <tools/ref.hxx> +#include <basobj.hxx> + +class SvSlotElementList; +struct SvSlotElement; + +SV_DECL_REF(SvMetaType) +SV_DECL_REF(SvMetaAttribute) +SV_DECL_PERSIST_LIST(SvMetaAttribute,SvMetaAttribute *) +class SvMetaAttribute : public SvMetaReference +{ + SvMetaTypeRef aType; + SvNumberIdentifier aSlotId; + SvBOOL aAutomation; + SvBOOL aExport; + SvBOOL aReadonly; + SvBOOL aIsCollection; + SvBOOL aReadOnlyDoc; + SvBOOL aHidden; + sal_Bool bNewAttr; + +protected: +#ifdef IDL_COMPILER + virtual void WriteCSource( SvIdlDataBase & rBase, + SvStream & rOutStm, sal_Bool bSet ); + sal_uLong MakeSlotValue( SvIdlDataBase & rBase, sal_Bool bVariable ) const; + virtual void WriteAttributes( SvIdlDataBase & rBase, + SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); + virtual void ReadAttributesSvIdl( SvIdlDataBase & rBase, + SvTokenStream & rInStm ); + virtual void WriteAttributesSvIdl( SvIdlDataBase & rBase, + SvStream & rOutStm, sal_uInt16 nTab ); +#endif +public: + SV_DECL_META_FACTORY1( SvMetaAttribute, SvMetaReference, 2 ) + SvMetaAttribute(); + SvMetaAttribute( SvMetaType * ); + + void SetNewAttribute( sal_Bool bNew ) + { bNewAttr = bNew; } + sal_Bool IsNewAttribute() const + { return bNewAttr; } + sal_Bool GetReadonly() const; + + void SetSlotId( const SvNumberIdentifier & rId ) + { aSlotId = rId; } + const SvNumberIdentifier & GetSlotId() const; + + void SetExport( sal_Bool bSet ) + { aExport = bSet; } + sal_Bool GetExport() const; + + void SetHidden( sal_Bool bSet ) + { aHidden = bSet; } + sal_Bool GetHidden() const; + + void SetAutomation( sal_Bool bSet ) + { aAutomation = bSet; } + sal_Bool GetAutomation() const; + + void SetIsCollection( sal_Bool bSet ) + { aIsCollection = bSet; } + sal_Bool GetIsCollection() const; + void SetReadOnlyDoc( sal_Bool bSet ) + { aReadOnlyDoc = bSet; } + sal_Bool GetReadOnlyDoc() const; + + void SetType( SvMetaType * pT ) { aType = pT; } + SvMetaType * GetType() const; + + virtual sal_Bool IsMethod() const; + virtual sal_Bool IsVariable() const; + virtual ByteString GetMangleName( sal_Bool bVariable ) const; + + +#ifdef IDL_COMPILER + virtual sal_Bool Test( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual sal_Bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteSvIdl( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + virtual void WriteParam( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType ); + void WriteRecursiv_Impl( SvIdlDataBase & rBase, + SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute ); + virtual void Write( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); + sal_uLong MakeSfx( ByteString * pAtrrArray ); + virtual void Insert( SvSlotElementList&, const ByteString & rPrefix, + SvIdlDataBase& ); + virtual void WriteHelpId( SvIdlDataBase & rBase, SvStream & rOutStm, + Table * pIdTable ); + virtual void WriteSrc( SvIdlDataBase & rBase, SvStream & rOutStm, + Table * pIdTable ); + virtual void WriteCSV( SvIdlDataBase&, SvStream& ); + void FillIDTable(Table *pIDTable); + ByteString Compare( SvMetaAttribute *pAttr ); +#endif +}; +SV_IMPL_REF(SvMetaAttribute) +SV_IMPL_PERSIST_LIST(SvMetaAttribute,SvMetaAttribute *) + + +enum { CALL_VALUE, CALL_POINTER, CALL_REFERENCE }; +enum { TYPE_METHOD, TYPE_STRUCT, TYPE_BASE, TYPE_ENUM, TYPE_UNION, + TYPE_CLASS, TYPE_POINTER }; +class SvMetaType : public SvMetaExtern +{ + SvBOOL aIn; // input parameter + SvBOOL aOut; // return parameter + Svint aCall0, aCall1; + Svint aSbxDataType; + SvIdentifier aSvName; + SvIdentifier aSbxName; + SvIdentifier aOdlName; + SvIdentifier aCName; + SvIdentifier aBasicPostfix; + SvIdentifier aBasicName; + SvMetaAttributeMemberList * pAttrList; + int nType; + sal_Bool bIsItem; + sal_Bool bIsShell; + char cParserChar; + +#ifdef IDL_COMPILER + void WriteSfxItem( const ByteString & rItemName, SvIdlDataBase & rBase, + SvStream & rOutStm ); +protected: + sal_Bool ReadNamesSvIdl( SvIdlDataBase & rBase, + SvTokenStream & rInStm ); + virtual void ReadAttributesSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteAttributesSvIdl( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + virtual void ReadContextSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteContextSvIdl( SvIdlDataBase &, SvStream & rOutStm, + sal_uInt16 nTab ); + + virtual void WriteContext( SvIdlDataBase & rBase, SvStream & rOutStm, + sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); + virtual void WriteAttributes( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); + sal_Bool ReadHeaderSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + void WriteHeaderSvIdl( SvIdlDataBase &, SvStream & rOutStm, + sal_uInt16 nTab ); +#endif +public: + SV_DECL_META_FACTORY1( SvMetaType, SvMetaExtern, 18 ) + SvMetaType(); + SvMetaType( const ByteString & rTypeName, char cParserChar, + const ByteString & rCName ); + SvMetaType( const ByteString & rTypeName, const ByteString & rSbxName, + const ByteString & rOdlName, char cParserChar, + const ByteString & rCName, const ByteString & rBasicName, + const ByteString & rBasicPostfix ); + + SvMetaAttributeMemberList & GetAttrList() const; + sal_uLong GetAttrCount() const + { + return pAttrList ? pAttrList->Count() : 0L; + } + void AppendAttr( SvMetaAttribute * pAttr ) + { + GetAttrList().Append( pAttr ); + } + + void SetType( int nT ); + int GetType() const { return nType; } + SvMetaType * GetBaseType() const; + SvMetaType * GetReturnType() const; + sal_Bool IsItem() const { return bIsItem; } + sal_Bool IsShell() const { return bIsShell; } + + void SetIn( sal_Bool b ) { aIn = b; } + sal_Bool GetIn() const; + + void SetOut( sal_Bool b ) { aOut = b; } + sal_Bool GetOut() const; + + void SetCall0( int e ); + int GetCall0() const; + + void SetCall1( int e); + int GetCall1() const; + + void SetBasicName(const ByteString& rName) + { aBasicName = rName; } + + const ByteString & GetBasicName() const; + ByteString GetBasicPostfix() const; + const ByteString & GetSvName() const; + const ByteString & GetSbxName() const; + const ByteString & GetOdlName() const; + const ByteString & GetCName() const; + char GetParserChar() const { return cParserChar; } + + virtual sal_Bool SetName( const ByteString & rName, SvIdlDataBase * = NULL ); + + +#ifdef IDL_COMPILER + virtual sal_Bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteSvIdl( SvIdlDataBase & rBase, + SvStream & rOutStm, sal_uInt16 nTab ); + virtual void Write( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); + ByteString GetCString() const; + void WriteSvIdlType( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + void WriteOdlType( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + void AppendParserString (ByteString &rString); + + sal_uLong MakeSfx( ByteString * pAtrrArray ); + virtual void WriteSfx( SvIdlDataBase & rBase, SvStream & rOutStm ); + sal_Bool ReadMethodArgs( SvIdlDataBase & rBase, + SvTokenStream & rInStm ); + void WriteTypePrefix( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, WriteType ); + void WriteMethodArgs( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, WriteType ); + void WriteTheType( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, WriteType ); + ByteString GetParserString() const; + void WriteParamNames( SvIdlDataBase & rBase, SvStream & rOutStm, + const ByteString & rChief ); +#endif +}; +SV_IMPL_REF(SvMetaType) +SV_DECL_IMPL_PERSIST_LIST(SvMetaType,SvMetaType *) + + +class SvMetaTypeString : public SvMetaType +{ +public: + SV_DECL_META_FACTORY1( SvMetaTypeString, SvMetaType, 19 ) + SvMetaTypeString(); +}; +SV_DECL_IMPL_REF(SvMetaTypeString) +SV_DECL_IMPL_PERSIST_LIST(SvMetaTypeString,SvMetaTypeString *) + + +class SvMetaEnumValue : public SvMetaName +{ + ByteString aEnumValue; +public: + SV_DECL_META_FACTORY1( SvMetaEnumValue, SvMetaName, 20 ) + SvMetaEnumValue(); + +#ifdef IDL_COMPILER + virtual sal_Bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteSvIdl( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + virtual void Write( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); +#endif +}; +SV_DECL_IMPL_REF(SvMetaEnumValue) +SV_DECL_IMPL_PERSIST_LIST(SvMetaEnumValue,SvMetaEnumValue *) + + +class SvMetaTypeEnum : public SvMetaType +{ + SvMetaEnumValueMemberList aEnumValueList; + ByteString aPrefix; +protected: +#ifdef IDL_COMPILER + virtual void ReadContextSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteContextSvIdl( SvIdlDataBase &, SvStream & rOutStm, + sal_uInt16 nTab ); + virtual void WriteContext( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); +#endif +public: + SV_DECL_META_FACTORY1( SvMetaTypeEnum, SvMetaType, 21 ) + SvMetaTypeEnum(); + + sal_uInt16 GetMaxValue() const; + sal_uLong Count() const { return aEnumValueList.Count(); } + const ByteString & GetPrefix() const { return aPrefix; } + SvMetaEnumValue * GetObject( sal_uLong n ) const + { return aEnumValueList.GetObject( n ); } + +#ifdef IDL_COMPILER + virtual sal_Bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual void WriteSvIdl( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab ); + + virtual void Write( SvIdlDataBase & rBase, SvStream & rOutStm, + sal_uInt16 nTab, + WriteType, WriteAttribute = 0 ); +#endif +}; +SV_DECL_IMPL_REF(SvMetaTypeEnum) +SV_DECL_IMPL_PERSIST_LIST(SvMetaTypeEnum,SvMetaTypeEnum *) + + +class SvMetaTypevoid : public SvMetaType +{ +public: + SV_DECL_META_FACTORY1( SvMetaTypevoid, SvMetaName, 22 ) + SvMetaTypevoid(); +}; +SV_DECL_IMPL_REF(SvMetaTypevoid) +SV_DECL_IMPL_PERSIST_LIST(SvMetaTypevoid,SvMetaTypevoid *) + + +#endif // _TYPES_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |