Kaydet (Commit) 07352f07 authored tarafından Jack Leigh's avatar Jack Leigh Kaydeden (comit) Michael Meeks

liblibo: move to C++ interface.

Change-Id: Ie14a9446abd9524604feddf811d5373a26a30cbd
üst 8887de72
...@@ -14,6 +14,12 @@ $(eval $(call gb_Library_set_include,libreoffice,\ ...@@ -14,6 +14,12 @@ $(eval $(call gb_Library_set_include,libreoffice,\
-I$(SRCDIR)/desktop/inc \ -I$(SRCDIR)/desktop/inc \
)) ))
$(eval $(call gb_Library_add_libs,libreoffice,\
$(if $(filter $(OS),LINUX), \
-ldl \
) \
))
$(eval $(call gb_Library_use_libraries,libreoffice,\ $(eval $(call gb_Library_use_libraries,libreoffice,\
$(gb_UWINAPI) \ $(gb_UWINAPI) \
)) ))
......
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* /*
* This file is part of the LibreOffice project. * This file is part of the LibreOffice project.
* *
...@@ -7,32 +7,24 @@ ...@@ -7,32 +7,24 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
/* #ifndef _LIBLIBREOFFICE_HXX
* A simple C API to setup and use libreoffice #define _LIBLIBREOFFICE_HXX
*/
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
int errno;
char *message;
} LOError;
typedef int loboolean; typedef int loboolean;
typedef struct _LODocument LODocument; typedef struct _LODocument LODocument;
loboolean lo_initialize (const char *install_path); class LibLibreOffice
{
public:
virtual loboolean initialize (const char *installPath) = 0;
void lo_error_free (LOError *error); virtual LODocument *documentLoad (const char *url) = 0;
LOError *lo_error_new (int errno, const char *message); virtual loboolean documentSave (const char *url) = 0;
LODocument *lo_document_load (const char *url, LOError **opt_error); virtual ~LibLibreOffice () {};
loboolean lo_document_save (const char *url, LOError **opt_error); };
#ifdef __cplusplus LibLibreOffice *lo_init (const char *install_path);
} /* extern "C" */
#endif
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef _LIBLIBREOFFICE_IMPL_HXX
#define _LIBLIBREOFFICE_IMPL_HXX
#include "liblibreoffice.hxx"
typedef int loboolean;
typedef struct _LODocument LODocument;
class LibLibreOffice_Impl : public LibLibreOffice
{
public:
virtual loboolean initialize (const char *installPath);
virtual LODocument *documentLoad (const char *url);
virtual loboolean documentSave (const char *url);
virtual ~LibLibreOffice_Impl ();
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -7,9 +7,10 @@ ...@@ -7,9 +7,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
#include <liblibreoffice_impl.hxx>
#include <stdio.h> #include <stdio.h>
#include <liblibreoffice.h>
#include <tools/errinf.hxx> #include <tools/errinf.hxx>
#include <osl/file.hxx> #include <osl/file.hxx>
#include <rtl/strbuf.hxx> #include <rtl/strbuf.hxx>
...@@ -35,25 +36,14 @@ static uno::Reference<css::uno::XComponentContext> xContext; ...@@ -35,25 +36,14 @@ static uno::Reference<css::uno::XComponentContext> xContext;
static uno::Reference<css::lang::XMultiServiceFactory> xSFactory; static uno::Reference<css::lang::XMultiServiceFactory> xSFactory;
static uno::Reference<css::lang::XMultiComponentFactory> xFactory; static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
SAL_DLLPUBLIC_EXPORT void LODocument *
lo_error_free( LOError * ) LibLibreOffice_Impl::documentLoad( const char *docUrl )
{
}
SAL_DLLPUBLIC_EXPORT LOError *
lo_error_new( int, const char * )
{ {
return NULL; return NULL;
} }
SAL_DLLPUBLIC_EXPORT LODocument * loboolean
lo_document_load( const char *, LOError ** ) LibLibreOffice_Impl::documentSave( const char * )
{
return NULL;
}
SAL_DLLPUBLIC_EXPORT loboolean
lo_document_save( const char *, LOError ** )
{ {
return 1; return 1;
} }
...@@ -92,8 +82,8 @@ initialize_uno( const rtl::OUString &aUserProfileURL ) ...@@ -92,8 +82,8 @@ initialize_uno( const rtl::OUString &aUserProfileURL )
xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW); xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW);
} }
SAL_DLLPUBLIC_EXPORT loboolean loboolean
lo_initialize( const char *app_path ) LibLibreOffice_Impl::initialize( const char *app_path )
{ {
static bool bInitialized = false; static bool bInitialized = false;
if( bInitialized ) if( bInitialized )
...@@ -132,7 +122,11 @@ extern "C" { ...@@ -132,7 +122,11 @@ extern "C" {
LibLibreOffice *liblibreoffice_hook(void) LibLibreOffice *liblibreoffice_hook(void)
{ {
return new LibLibreOffice(); return new LibLibreOffice_Impl();
}
LibLibreOffice_Impl::~LibLibreOffice_Impl ()
{
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......
...@@ -9,8 +9,12 @@ ...@@ -9,8 +9,12 @@
#ifdef LINUX #ifdef LINUX
#include <stdio.h>
#include <string.h>
#include <osl/module.h>
#include <sal/types.h> #include <sal/types.h>
#include <liblibreoffice.h> #include <liblibreoffice.hxx>
#include <dlfcn.h> #include <dlfcn.h>
#ifdef AIX #ifdef AIX
...@@ -23,11 +27,11 @@ extern "C" { ...@@ -23,11 +27,11 @@ extern "C" {
typedef LibLibreOffice *(HookFunction)(void); typedef LibLibreOffice *(HookFunction)(void);
}; };
extern LibLibreOffice *lo_init( const char *install_path ) SAL_DLLPUBLIC_EXPORT LibLibreOffice *lo_init( const char *install_path )
{ {
if( !install_path ) if( !install_path )
return NULL; return NULL;
char *impl_lib = malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 ); char *imp_lib = (char *) malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 );
strcpy( imp_lib, install_path ); strcpy( imp_lib, install_path );
strcat( imp_lib, "/" ); strcat( imp_lib, "/" );
strcat( imp_lib, TARGET_LIB ); strcat( imp_lib, TARGET_LIB );
...@@ -39,7 +43,7 @@ extern LibLibreOffice *lo_init( const char *install_path ) ...@@ -39,7 +43,7 @@ extern LibLibreOffice *lo_init( const char *install_path )
} }
free( imp_lib ); free( imp_lib );
HookFunction *pSym = dlsym( dlhandle, "liblibreoffice_hook" ); HookFunction *pSym = (HookFunction *) dlsym( dlhandle, "liblibreoffice_hook" );
if( !pSym ) { if( !pSym ) {
fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib ); fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
return NULL; return NULL;
......
...@@ -8,7 +8,9 @@ ...@@ -8,7 +8,9 @@
*/ */
// yuck / FIXME ... // yuck / FIXME ...
#include "../desktop/inc/liblibreoffice.h" #include "../desktop/inc/liblibreoffice.hxx"
#include <assert.h>
#include <sal/types.h> #include <sal/types.h>
#include <rtl/ustring.hxx> #include <rtl/ustring.hxx>
...@@ -44,7 +46,7 @@ void Test::test() ...@@ -44,7 +46,7 @@ void Test::test()
rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice ); rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 ); OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() ); fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
lo_initialize( aInstall.getStr() ); assert (lo_init( aInstall.getStr() ));
} }
CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_TEST_SUITE_REGISTRATION(Test);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment