Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
77d34aad
Kaydet (Commit)
77d34aad
authored
Haz 22, 2001
tarafından
Jörg Budischewski
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
#67468# helper for implementation of exported C-functions
üst
a2a53b0e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
289 additions
and
0 deletions
+289
-0
implementationentry.hxx
cppuhelper/inc/cppuhelper/implementationentry.hxx
+147
-0
d.lst
cppuhelper/prj/d.lst
+1
-0
implementationentry.cxx
cppuhelper/source/implementationentry.cxx
+141
-0
No files found.
cppuhelper/inc/cppuhelper/implementationentry.hxx
0 → 100644
Dosyayı görüntüle @
77d34aad
/*************************************************************************
*
* $RCSfile: implementationentry.hxx,v $
*
* $Revision: 1.1 $
*
* last change: $Author: jbu $ $Date: 2001-06-22 15:19:54 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef _CPPUHELPER_IMPLEMENATIONENTRY_HXX_
#define _CPPUHELPER_IMPLEMENATIONENTRY_HXX_
#ifndef _CPPUHELPER_FACTORY_HXX_
#include <cppuhelper/factory.hxx>
#endif
namespace
cppu
{
/** One struct instance represents all data necessary for registering one service implementation.
*/
struct
ImplementationEntry
{
/** Function, that creates an instance of the implemenation
*/
ComponentFactoryFunc
create
;
/** Function, that returns the implemenation-name of the implemenation
(same as XServiceInfo.getImplementationName() ).
*/
rtl
::
OUString
(
SAL_CALL
*
getImplementationName
)();
/** Function, that returns all supported servicenames of the implemenation
( same as XServiceInfo.getSupportedServiceNames() ).
*/
com
::
sun
::
star
::
uno
::
Sequence
<
rtl
::
OUString
>
(
SAL_CALL
*
getSupportedServiceNames
)
();
/** Function, that creates a SingleComponentFactory.
*/
::
com
::
sun
::
star
::
uno
::
Reference
<
::
com
::
sun
::
star
::
lang
::
XSingleComponentFactory
>
(
SAL_CALL
*
createFactory
)(
ComponentFactoryFunc
fptr
,
::
rtl
::
OUString
const
&
rImplementationName
,
::
com
::
sun
::
star
::
uno
::
Sequence
<
::
rtl
::
OUString
>
const
&
rServiceNames
,
rtl_ModuleCount
*
pModCount
);
/** The shared-library module-counter of the implemenation. Maybe 0. The module-counter
is used during by the createFactory()-function.
*/
rtl_ModuleCount
*
moduleCounter
;
/** Must be set to 0 !
For future extensions.
*/
sal_Int32
nFlags
;
};
/** Helper function for implementation of the component_writeInfo()-function.
@param pServiceManager The first parameter passed to component_writeInfo()-function
(This is an instance of the service manager, that creates the factory).
@param pRegistryKey The second parameter passed to the component_writeInfo()-function.
This is a reference to the registry key, into which the implementation
data shall be written to.
@param entries Each element of the entries-array must contains a function pointer
table for registering an implemenation. The end of the array
must be marked with a 0 entry in the create-function.
@return sal_True, if all implementations could be registered, otherwise sal_False.
*/
sal_Bool
component_writeInfoHelper
(
void
*
pServiceManager
,
void
*
pRegistryKey
,
const
struct
ImplementationEntry
entries
[]
);
/** Helper function for implementation of the component_getFactory()-function,
that must be implemented by every shared library component.
@param pImplName The implementation-name to be instantiated ( This is the
first parameter passed to the component_getFactory
@param pServiceManager The first parameter passed to component_writeInfo()-function
(This is a of the service manager, that creates the factory).
@param pRegistryKey The second parameter passed to the component_writeInfo()-function.
This is a reference to the registry key, where the implementation
data has been written to.
@param entries Each element of the entries-array must contains a function pointer
table for creating a factor of the implementation. The end of the array
must be marked with a 0 entry in the create-function.
@return 0 if the helper failed to instantiate a factory, otherwise an acquired pointer
to a factory.
*/
void
*
component_getFactoryHelper
(
const
sal_Char
*
pImplName
,
void
*
pServiceManager
,
void
*
pRegistryKey
,
const
struct
ImplementationEntry
entries
[]
);
}
#endif
cppuhelper/prj/d.lst
Dosyayı görüntüle @
77d34aad
...
@@ -48,6 +48,7 @@ mkdir: %_DEST%\inc%_EXT%\cppuhelper
...
@@ -48,6 +48,7 @@ mkdir: %_DEST%\inc%_EXT%\cppuhelper
..\inc\cppuhelper\weakref.hxx %_DEST%\inc%_EXT%\cppuhelper\weakref.hxx
..\inc\cppuhelper\weakref.hxx %_DEST%\inc%_EXT%\cppuhelper\weakref.hxx
..\inc\cppuhelper\servicefactory.hxx %_DEST%\inc%_EXT%\cppuhelper\servicefactory.hxx
..\inc\cppuhelper\servicefactory.hxx %_DEST%\inc%_EXT%\cppuhelper\servicefactory.hxx
..\inc\cppuhelper\smartservices.hxx %_DEST%\inc%_EXT%\cppuhelper\smartservices.hxx
..\inc\cppuhelper\smartservices.hxx %_DEST%\inc%_EXT%\cppuhelper\smartservices.hxx
..\inc\cppuhelper\implementationentry.hxx %_DEST%\inc%_EXT%\cppuhelper\implementationentry.hxx
..\%__SRC%\bin\cppuhelper*.dll %_DEST%\bin%_EXT%\cppuhelper*.dll
..\%__SRC%\bin\cppuhelper*.dll %_DEST%\bin%_EXT%\cppuhelper*.dll
..\%__SRC%\lib\*cppuhelper*.lib %_DEST%\lib%_EXT%\*
..\%__SRC%\lib\*cppuhelper*.lib %_DEST%\lib%_EXT%\*
...
...
cppuhelper/source/implementationentry.cxx
0 → 100644
Dosyayı görüntüle @
77d34aad
/*************************************************************************
*
* $RCSfile: implementationentry.cxx,v $
*
* $Revision: 1.1 $
*
* last change: $Author: jbu $ $Date: 2001-06-22 15:22:39 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef _CPPUHELPER_IMPLEMENATIONENTRY_HXX_
#include <cppuhelper/implementationentry.hxx>
#endif
#ifndef _RTL_USTRBUF_HXX_
#include <rtl/ustrbuf.hxx>
#endif
using
namespace
::
rtl
;
using
namespace
::
com
::
sun
::
star
::
uno
;
using
namespace
::
com
::
sun
::
star
::
lang
;
using
namespace
::
com
::
sun
::
star
::
registry
;
namespace
cppu
{
sal_Bool
component_writeInfoHelper
(
void
*
pServiceManager
,
void
*
pRegistryKey
,
const
struct
ImplementationEntry
entries
[]
)
{
sal_Bool
bRet
=
sal_False
;
try
{
if
(
pRegistryKey
)
{
for
(
sal_Int32
i
=
0
;
entries
[
i
].
create
;
i
++
)
{
OUStringBuffer
buf
(
124
);
buf
.
appendAscii
(
RTL_CONSTASCII_STRINGPARAM
(
"/"
)
);
buf
.
append
(
entries
[
i
].
getImplementationName
()
);
buf
.
appendAscii
(
RTL_CONSTASCII_STRINGPARAM
(
"/UNO/SERVICES"
)
);
Reference
<
XRegistryKey
>
xNewKey
(
reinterpret_cast
<
XRegistryKey
*
>
(
pRegistryKey
)
->
createKey
(
buf
.
makeStringAndClear
()
)
);
Sequence
<
OUString
>
seq
=
entries
[
i
].
getSupportedServiceNames
();
const
OUString
*
pArray
=
seq
.
getConstArray
();
for
(
sal_Int32
nPos
=
0
;
nPos
<
seq
.
getLength
();
nPos
++
)
xNewKey
->
createKey
(
pArray
[
nPos
]
);
}
bRet
=
sal_True
;
}
}
catch
(
InvalidRegistryException
&
e
)
{
e
;
OSL_ENSURE
(
sal_False
,
"### InvalidRegistryException!"
);
}
return
bRet
;
}
void
*
component_getFactoryHelper
(
const
sal_Char
*
pImplName
,
void
*
pServiceManager
,
void
*
pRegistryKey
,
const
struct
ImplementationEntry
entries
[]
)
{
void
*
pRet
=
0
;
Reference
<
XSingleComponentFactory
>
xFactory
;
for
(
sal_Int32
i
=
0
;
entries
[
i
].
create
;
i
++
)
{
OUString
implName
=
entries
[
i
].
getImplementationName
();
if
(
0
==
implName
.
compareToAscii
(
pImplName
)
)
{
xFactory
=
entries
[
i
].
createFactory
(
entries
[
i
].
create
,
implName
,
entries
[
i
].
getSupportedServiceNames
(),
entries
[
i
].
moduleCounter
);
}
}
if
(
xFactory
.
is
()
)
{
xFactory
->
acquire
();
pRet
=
xFactory
.
get
();
}
return
pRet
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment