Bump version to 4.1-6
[LibreOffice.git] / idl / inc / object.hxx
blob69c1eb1a6da8cdc504e8bd57ffefea86ea1e382a
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef _OBJECT_HXX
21 #define _OBJECT_HXX
23 #include <types.hxx>
24 #include <slot.hxx>
25 #include <vector>
27 struct SvSlotElement
29 SvMetaSlotRef xSlot;
30 OString aPrefix;
31 SvSlotElement( SvMetaSlot * pS, const OString& rPrefix )
32 : xSlot( pS )
33 , aPrefix( rPrefix )
37 typedef std::vector< SvSlotElement* > SvSlotElementList;
39 class SvMetaClass;
40 typedef ::std::vector< SvMetaClass* > SvMetaClassList;
42 SV_DECL_REF(SvMetaClass)
43 class SvClassElement : public SvPersistBase
45 SvBOOL aAutomation;
46 OString aPrefix;
47 SvMetaClassRef xClass;
48 public:
49 SV_DECL_PERSIST1( SvClassElement, SvPersistBase, 1 )
50 SvClassElement();
52 void SetPrefix( const OString& rPrefix )
53 { aPrefix = rPrefix; }
54 const OString& GetPrefix() const
55 { return aPrefix; }
57 void SetAutomation( sal_Bool rAutomation )
58 { aAutomation = rAutomation; }
59 sal_Bool GetAutomation() const
60 { return aAutomation; }
62 void SetClass( SvMetaClass * pClass )
63 { xClass = pClass; }
64 SvMetaClass * GetClass() const
65 { return xClass; }
68 SV_DECL_IMPL_REF(SvClassElement)
70 class SvClassElementMemberList : public SvDeclPersistList<SvClassElement *> {};
72 class SvMetaClassMemberList : public SvDeclPersistList<SvMetaClass *> {};
74 class SvMetaClass : public SvMetaType
76 SvMetaAttributeMemberList aAttrList;
77 SvClassElementMemberList aClassList;
78 SvMetaClassRef aSuperClass;
79 SvBOOL aAutomation;
80 SvMetaClassRef xAutomationInterface;
82 sal_Bool TestAttribute( SvIdlDataBase & rBase, SvTokenStream & rInStm,
83 SvMetaAttribute & rAttr ) const;
84 void WriteSlotStubs( const OString& rShellName,
85 SvSlotElementList & rSlotList,
86 ByteStringList & rList,
87 SvStream & rOutStm );
88 sal_uInt16 WriteSlotParamArray( SvIdlDataBase & rBase,
89 SvSlotElementList & rSlotList,
90 SvStream & rOutStm );
91 sal_uInt16 WriteSlots( const OString& rShellName, sal_uInt16 nCount,
92 SvSlotElementList & rSlotList,
93 SvIdlDataBase & rBase,
94 SvStream & rOutStm );
96 void InsertSlots( SvSlotElementList& rList, std::vector<sal_uLong>& rSuperList,
97 SvMetaClassList & rClassList,
98 const OString& rPrefix, SvIdlDataBase& rBase );
100 protected:
101 virtual void ReadAttributesSvIdl( SvIdlDataBase & rBase,
102 SvTokenStream & rInStm );
103 virtual void WriteAttributesSvIdl( SvIdlDataBase & rBase,
104 SvStream & rOutStm, sal_uInt16 nTab );
105 virtual void ReadContextSvIdl( SvIdlDataBase &,
106 SvTokenStream & rInStm );
107 virtual void WriteContextSvIdl( SvIdlDataBase & rBase,
108 SvStream & rOutStm, sal_uInt16 nTab );
109 void WriteOdlMembers( ByteStringList & rSuperList,
110 sal_Bool bVariable, sal_Bool bWriteTab,
111 SvIdlDataBase & rBase,
112 SvStream & rOutStm, sal_uInt16 nTab );
113 public:
114 SV_DECL_META_FACTORY1( SvMetaClass, SvMetaType, 6 )
115 SvMetaClass();
117 sal_Bool GetAutomation() const
118 { return aAutomation; }
119 SvMetaClass * GetSuperClass() const
120 { return aSuperClass; }
122 void FillClasses( SvMetaClassList & rList );
124 const SvClassElementMemberList&
125 GetClassList() const
126 { return aClassList; }
128 virtual sal_Bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm );
129 virtual void WriteSvIdl( SvIdlDataBase & rBase, SvStream & rOutStm, sal_uInt16 nTab );
130 virtual void Write( SvIdlDataBase & rBase, SvStream & rOutStm,
131 sal_uInt16 nTab,
132 WriteType, WriteAttribute = 0 );
133 virtual void WriteSfx( SvIdlDataBase & rBase, SvStream & rOutStm );
134 virtual void WriteHelpIds( SvIdlDataBase & rBase, SvStream & rOutStm,
135 HelpIdTable& rTable );
137 SV_IMPL_REF(SvMetaClass)
140 #endif // _OBJECT_HXX
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */