Difference between revisions of "HelperNotHelper"
From Apache OpenOffice Wiki
SergeMoutou (talk | contribs) m (New page: It's important to figure out the difference beween class implementing component when you use or not an helper. = Class without Helper = Here is the C++ code <source lang="cpp"> class MyCo...) |
|||
| (13 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
| + | {{Documentation/Candidate}} | ||
| + | {{NeedsRework|EN}} | ||
It's important to figure out the difference beween class implementing component when you use or not an helper. | It's important to figure out the difference beween class implementing component when you use or not an helper. | ||
= Class without Helper = | = Class without Helper = | ||
Here is the C++ code | Here is the C++ code | ||
| − | < | + | <syntaxhighlight lang="cpp"> |
| − | class MyCounterImpl | + | class MyCounterImpl : public XCountable, public XServiceInfo |
| − | |||
| − | |||
{ | { | ||
sal_Int32 m_nRefCount; | sal_Int32 m_nRefCount; | ||
sal_Int32 m_nCount; | sal_Int32 m_nCount; | ||
public: | public: | ||
| − | MyCounterImpl( const Reference< XMultiServiceFactory > & xServiceManager | + | MyCounterImpl( const Reference< XMultiServiceFactory > & xServiceManager ); |
| − | + | ~MyCounterImpl(); | |
| − | |||
| − | ~MyCounterImpl( | ||
| − | |||
// XInterface implementation | // XInterface implementation | ||
| − | virtual void SAL_CALL acquire() throw () | + | virtual void SAL_CALL acquire() throw (); |
| − | + | virtual void SAL_CALL release() throw (); | |
| − | virtual void SAL_CALL release() throw () | + | virtual Any SAL_CALL queryInterface( const Type & rType ) throw (RuntimeException); |
| − | + | ||
| − | virtual Any SAL_CALL queryInterface( const Type & rType ) throw (RuntimeException) | + | // XServiceInfo implementation |
| − | + | virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); | |
| − | + | virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException); | |
| − | + | virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException); | |
| − | + | static Sequence< OUString > SAL_CALL getSupportedServiceNames_Static( ); | |
| + | |||
| + | // XCountable implementation | ||
| + | virtual sal_Int32 SAL_CALL getCount() throw (RuntimeException); | ||
| + | virtual void SAL_CALL setCount( sal_Int32 nCount ) throw (RuntimeException); | ||
| + | virtual sal_Int32 SAL_CALL increment() throw (RuntimeException); | ||
| + | virtual sal_Int32 SAL_CALL decrement() throw (RuntimeException); | ||
| + | }; | ||
| + | </syntaxhighlight> | ||
| + | {{Note|As you can see, the class "MyCounterImpl" is derived from XCountable and XServiceInfo, but also from XInterface even if not shown in inheritance part.}} | ||
| + | |||
| + | = Class with an Helper = | ||
| + | |||
| + | Here is the code | ||
| + | <syntaxhighlight lang="cpp"> | ||
| + | class MyCounterImpl : public ::cppu::WeakImplHelper2< XCountable, XServiceInfo > | ||
| + | { | ||
| + | // to obtain other services if needed | ||
| + | Reference< XMultiServiceFactory > m_xServiceManager; | ||
| + | sal_Int32 m_nRefCount; | ||
| + | sal_Int32 m_nCount; | ||
| + | |||
| + | public: | ||
// XServiceInfo implementation | // XServiceInfo implementation | ||
virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); | virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); | ||
| Line 34: | Line 53: | ||
// XCountable implementation | // XCountable implementation | ||
| − | virtual sal_Int32 SAL_CALL getCount() throw (RuntimeException) | + | virtual sal_Int32 SAL_CALL getCount() throw (RuntimeException); |
| − | + | virtual void SAL_CALL setCount( sal_Int32 nCount ) throw (RuntimeException); | |
| − | virtual void SAL_CALL setCount( sal_Int32 nCount ) throw (RuntimeException) | + | virtual sal_Int32 SAL_CALL increment() throw (RuntimeException); |
| − | + | virtual sal_Int32 SAL_CALL decrement() throw (RuntimeException); | |
| − | virtual sal_Int32 SAL_CALL increment() throw (RuntimeException | ||
| − | |||
| − | virtual sal_Int32 SAL_CALL decrement() throw (RuntimeException | ||
| − | |||
}; | }; | ||
| − | </ | + | </syntaxhighlight> |
| + | |||
| + | Go back to [[Constructing_Components#Results_2|Constructing Components]]. | ||
Latest revision as of 12:21, 5 June 2026
It's important to figure out the difference beween class implementing component when you use or not an helper.
Class without Helper
Here is the C++ code
class MyCounterImpl : public XCountable, public XServiceInfo
{
sal_Int32 m_nRefCount;
sal_Int32 m_nCount;
public:
MyCounterImpl( const Reference< XMultiServiceFactory > & xServiceManager );
~MyCounterImpl();
// XInterface implementation
virtual void SAL_CALL acquire() throw ();
virtual void SAL_CALL release() throw ();
virtual Any SAL_CALL queryInterface( const Type & rType ) throw (RuntimeException);
// XServiceInfo implementation
virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException);
virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException);
static Sequence< OUString > SAL_CALL getSupportedServiceNames_Static( );
// XCountable implementation
virtual sal_Int32 SAL_CALL getCount() throw (RuntimeException);
virtual void SAL_CALL setCount( sal_Int32 nCount ) throw (RuntimeException);
virtual sal_Int32 SAL_CALL increment() throw (RuntimeException);
virtual sal_Int32 SAL_CALL decrement() throw (RuntimeException);
};
| As you can see, the class "MyCounterImpl" is derived from XCountable and XServiceInfo, but also from XInterface even if not shown in inheritance part. |
Class with an Helper
Here is the code
class MyCounterImpl : public ::cppu::WeakImplHelper2< XCountable, XServiceInfo >
{
// to obtain other services if needed
Reference< XMultiServiceFactory > m_xServiceManager;
sal_Int32 m_nRefCount;
sal_Int32 m_nCount;
public:
// XServiceInfo implementation
virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException);
virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException);
static Sequence< OUString > SAL_CALL getSupportedServiceNames_Static( );
// XCountable implementation
virtual sal_Int32 SAL_CALL getCount() throw (RuntimeException);
virtual void SAL_CALL setCount( sal_Int32 nCount ) throw (RuntimeException);
virtual sal_Int32 SAL_CALL increment() throw (RuntimeException);
virtual sal_Int32 SAL_CALL decrement() throw (RuntimeException);
};
Go back to Constructing Components.