1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _ATTRIB_HXX 29 #define _ATTRIB_HXX 30 31 #ifdef IDL_COMPILER 32 #include <hash.hxx> 33 #include <object.hxx> 34 35 /******************** class SvAttribute **********************************/ 36 class SvAttribute 37 { 38 SvStringHashEntryRef aName; 39 CreateMetaObjectType pCreateMethod; 40 SvMetaObjectRef aTmpClass; 41 public: 42 SvAttribute( SvStringHashEntry * pAttribName, 43 CreateMetaObjectType pMethod ) 44 : aName( pAttribName ), 45 pCreateMethod( pMethod ) {} 46 47 SvMetaObjectRef CreateClass() 48 { 49 if( aTmpClass.Is() ) 50 { 51 SvMetaObjectRef aTmp( aTmpClass ); 52 aTmpClass.Clear(); 53 return aTmp; 54 } 55 return pCreateMethod(); 56 } 57 }; 58 59 #define SV_ATTRIBUTE( AttributeName, PostfixClassName ) \ 60 SvAttribute( SvHash_##AttributeName(), \ 61 SvMeta##PostfixClassName::Create ) 62 63 /******************** class SvAttributeList ******************************/ 64 DECLARE_LIST(SvAttributeListImpl,SvAttribute*) 65 class SvAttributeList : public SvAttributeListImpl 66 { 67 public: 68 SvAttributeList() : SvAttributeListImpl() {} 69 70 void Append( SvAttribute * pObj ) 71 { Insert( pObj, LIST_APPEND ); } 72 }; 73 74 75 #endif // IDL_COMPILER 76 #endif // _ATTRIB_HXX 77 78