1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef _SFXGENLINK_HXX 24 #define _SFXGENLINK_HXX 25 26 27 #include <tools/link.hxx> 28 typedef long (*CFuncPtr)(void*); 29 30 class GenLink 31 { 32 Link aLink; 33 CFuncPtr pFunc; 34 35 public: GenLink()36 GenLink(): pFunc(0) {} GenLink(CFuncPtr pCFunc)37 GenLink( CFuncPtr pCFunc ): pFunc(pCFunc) {} GenLink(const Link & rLink)38 GenLink( const Link& rLink ): aLink(rLink), pFunc(0) {} GenLink(const GenLink & rOrig)39 GenLink( const GenLink& rOrig ): 40 aLink(rOrig.aLink), pFunc(rOrig.pFunc) {} 41 operator =(const GenLink & rOrig)42 GenLink& operator = ( const GenLink& rOrig ) 43 { pFunc = rOrig.pFunc; aLink = rOrig.aLink; return *this; } 44 operator !() const45 sal_Bool operator!() const { return !aLink && !pFunc; } IsSet() const46 sal_Bool IsSet() const { return aLink.IsSet() || pFunc; } 47 Call(void * pCaller)48 long Call( void* pCaller ) 49 { return pFunc ? (*pFunc)(pCaller) : aLink.Call(pCaller); } 50 }; 51 52 #endif 53