xref: /AOO41X/main/odk/examples/cpp/counter/countermain.cxx (revision 34dd1e2512dbacb6a9a7e4c7f17b9296daa8eff3)
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 
24 /*************************************************************************
25  *************************************************************************
26  *
27  * simple client application registering and using the counter component.
28  *
29  *************************************************************************
30  *************************************************************************/
31 
32 #include <stdio.h>
33 
34 #include <sal/main.h>
35 #include <rtl/ustring.hxx>
36 
37 #include <osl/diagnose.h>
38 
39 #include <cppuhelper/bootstrap.hxx>
40 
41 // generated c++ interfaces
42 #include <com/sun/star/lang/XComponent.hpp>
43 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
44 #include <com/sun/star/registry/XImplementationRegistration.hpp>
45 #include <foo/XCountable.hpp>
46 
47 
48 using namespace foo;
49 using namespace cppu;
50 using namespace com::sun::star::uno;
51 using namespace com::sun::star::lang;
52 using namespace com::sun::star::registry;
53 
54 using namespace ::rtl;
55 
56 
57 //=======================================================================
SAL_IMPLEMENT_MAIN()58 SAL_IMPLEMENT_MAIN()
59 {
60     try {
61 
62         Reference< XComponentContext > xContext(::cppu::defaultBootstrap_InitialComponentContext());
63         OSL_ENSURE( xContext.is(), "### bootstrap failed!\n" );
64 
65         Reference< XMultiComponentFactory > xMgr = xContext->getServiceManager();
66         OSL_ENSURE( xMgr.is(), "### cannot get initial service manager!" );
67 
68         Reference< XInterface > xx = xMgr->createInstanceWithContext(
69             OUString::createFromAscii("foo.Counter"), xContext);
70 
71         OSL_ENSURE( xx.is(), "### cannot get service instance of \"foo.Counter\"!" );
72 
73         Reference< XCountable > xCount( xx, UNO_QUERY );
74         OSL_ENSURE( xCount.is(), "### cannot query XCountable interface of service instance \"foo.Counter\"!" );
75 
76         if (xCount.is())
77         {
78              xCount->setCount( 42 );
79              fprintf( stdout , "%d," , (int)xCount->getCount() );
80              fprintf( stdout , "%d," , (int)xCount->increment() );
81              fprintf( stdout , "%d\n" , (int)xCount->decrement() );
82         }
83 
84         Reference< XComponent >::query( xContext )->dispose();
85 
86     } catch( Exception& e) {
87         printf("Error: caught exception:\n       %s\n",
88                OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr());
89         exit(1);
90     }
91 
92     return 0;
93 }
94