[Libreoffice-commits] core.git: 3 commits - cli_ure/Executable_climaker.mk cli_ure/source solenv/gbuild testtools/CustomTarget_bridgetest_climaker.mk unoil/CustomTarget_climaker.mk
Stephan Bergmann
sbergman at redhat.com
Mon Apr 29 04:38:15 PDT 2013
cli_ure/Executable_climaker.mk | 2
cli_ure/source/climaker/climaker_app.cxx | 154 ++++++++++----------------
solenv/gbuild/CliUnoApi.mk | 4
solenv/gbuild/UnoApiTarget.mk | 4
testtools/CustomTarget_bridgetest_climaker.mk | 4
unoil/CustomTarget_climaker.mk | 4
6 files changed, 72 insertions(+), 100 deletions(-)
New commits:
commit 16a1bf5d079ef2b98f97ca40c3f6f4785056477e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Apr 29 13:37:15 2013 +0200
climaker no longer needs *.rdb.oldformat input files
Change-Id: I55447aba5abcc8205543c7ca64763b5c99854837
diff --git a/solenv/gbuild/CliUnoApi.mk b/solenv/gbuild/CliUnoApi.mk
index 008fa73..63ba9e7 100644
--- a/solenv/gbuild/CliUnoApi.mk
+++ b/solenv/gbuild/CliUnoApi.mk
@@ -68,13 +68,13 @@ $(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_VERSION := $(2)
endef
define gb_CliUnoApiTarget_wrap_api
-$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_API := $(call gb_UnoApiTarget_get_target,$(2)).oldformat
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_API := $(call gb_UnoApiTarget_get_target,$(2))
$(call gb_CliUnoApiTarget_get_target,$(1)) : $(call gb_UnoApiTarget_get_target,$(2))
endef
define gb_CliUnoApiTarget__use_api
-$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_DEPS += $(2).oldformat
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_DEPS += $(2)
$(call gb_CliUnoApiTarget_get_target,$(1)) : $(2)
endef
diff --git a/testtools/CustomTarget_bridgetest_climaker.mk b/testtools/CustomTarget_bridgetest_climaker.mk
index 370a73c..9610a23 100644
--- a/testtools/CustomTarget_bridgetest_climaker.mk
+++ b/testtools/CustomTarget_bridgetest_climaker.mk
@@ -42,7 +42,7 @@ $(testtools_CLIDIR)/cli_types_bridgetest.dll : \
$(call gb_Helper_execute,climaker) \
$(if $(filter -s,$(MAKEFLAGS)),,--verbose) \
--out $@ -r $(OUTDIR)/bin/cli_uretypes.dll \
- -X $(call gb_UnoApiTarget_get_target,udkapi).oldformat \
- $(call gb_UnoApiTarget_get_target,bridgetest).oldformat > /dev/null)
+ -X $(call gb_UnoApiTarget_get_target,udkapi) \
+ $(call gb_UnoApiTarget_get_target,bridgetest) > /dev/null)
# vim:set shiftwidth=4 tabstop=4 noexpandtab:
diff --git a/unoil/CustomTarget_climaker.mk b/unoil/CustomTarget_climaker.mk
index 9d1ef46..016f662 100644
--- a/unoil/CustomTarget_climaker.mk
+++ b/unoil/CustomTarget_climaker.mk
@@ -32,10 +32,10 @@ $(unoil_CLIDIR)/cli_oootypes.dll : $(SRCDIR)/unoil/climaker/version.txt \
--assembly-version $(CLI_OOOTYPES_NEW_VERSION) \
--assembly-company "LibreOffice" \
--assembly-description "This assembly contains metadata for the LibreOffice API." \
- -X $(call gb_UnoApiTarget_get_target,udkapi).oldformat \
+ -X $(call gb_UnoApiTarget_get_target,udkapi) \
-r $(OUTDIR)/bin/cli_uretypes.dll \
--keyfile $(OUTDIR)/bin/cliuno.snk \
- $(call gb_UnoApiTarget_get_target,offapi).oldformat) > /dev/null)
+ $(call gb_UnoApiTarget_get_target,offapi)) > /dev/null)
$(unoil_CLIDIR)/cli_oootypes.config : \
$(SRCDIR)/unoil/climaker/cli_oootypes_config \
commit 1728ab7125dd622d324779cfc62762b1f79fc769
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Apr 29 13:35:53 2013 +0200
Remove dependency of climaker on registry format
See the comment in climaker_app.cxx main about room for improvement.
Change-Id: I11cc2f62c9d42269d5c96253198ee4e730496e75
diff --git a/cli_ure/Executable_climaker.mk b/cli_ure/Executable_climaker.mk
index c8dd3da..2c30b5c 100644
--- a/cli_ure/Executable_climaker.mk
+++ b/cli_ure/Executable_climaker.mk
@@ -29,6 +29,8 @@ $(eval $(call gb_Executable_use_libraries,climaker,\
cppu \
cppuhelper \
sal \
+ salhelper \
+ unoidl \
$(gb_UWINAPI) \
))
diff --git a/cli_ure/source/climaker/climaker_app.cxx b/cli_ure/source/climaker/climaker_app.cxx
index e74cc23..12c63a7 100755
--- a/cli_ure/source/climaker/climaker_app.cxx
+++ b/cli_ure/source/climaker/climaker_app.cxx
@@ -17,6 +17,10 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include "sal/config.h"
+
+#include <cstdlib>
+#include <iostream>
#include <stdio.h>
#include <vector>
#include <memory>
@@ -30,13 +34,12 @@
#include "rtl/ustrbuf.hxx"
#include "cppuhelper/shlib.hxx"
#include "cppuhelper/bootstrap.hxx"
-#include "com/sun/star/lang/XInitialization.hpp"
-#include "com/sun/star/lang/XSingleComponentFactory.hpp"
#include "com/sun/star/lang/XComponent.hpp"
#include "com/sun/star/container/XHierarchicalNameAccess.hpp"
#include "com/sun/star/container/XSet.hpp"
#include "com/sun/star/reflection/XTypeDescriptionEnumerationAccess.hpp"
-#include "com/sun/star/registry/XSimpleRegistry.hpp"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "unoidl/unoidl.hxx"
using namespace ::std;
using namespace ::System::Reflection;
@@ -239,65 +242,15 @@ static OUString path_make_absolute_file_url( OUString const & path )
{
throw RuntimeException(
"cannot make absolute: " + file_url,
- Reference< XInterface >() );
+ css::uno::Reference< XInterface >() );
}
}
else
{
throw RuntimeException(
"cannot get file url from system path: " + path,
- Reference< XInterface >() );
- }
-}
-
-//==============================================================================
-Reference< registry::XSimpleRegistry > open_registries(
- vector< OUString > const & registries,
- Reference< XComponentContext > xContext )
-{
- if (registries.empty())
- {
- throw RuntimeException(
- "no registries given!",
- Reference< XInterface >() );
- }
-
- Reference< registry::XSimpleRegistry > xSimReg;
- for ( size_t nPos = registries.size(); nPos--; )
- {
- Reference< registry::XSimpleRegistry > xReg(
- xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.registry.SimpleRegistry", xContext ),
- UNO_QUERY_THROW );
- xReg->open( registries[ nPos ], sal_True, sal_False );
- if (! xReg->isValid())
- {
- throw RuntimeException(
- "invalid registry: " + registries[ nPos ],
- Reference< XInterface >() );
- }
-
- if (xSimReg.is()) // nest?
- {
- Reference< registry::XSimpleRegistry > xNested(
- xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.registry.NestedRegistry", xContext ),
- UNO_QUERY_THROW );
- Reference< lang::XInitialization > xInit(
- xNested, UNO_QUERY_THROW );
- Sequence< Any > args( 2 );
- args[ 0 ] <<= xReg;
- args[ 1 ] <<= xSimReg;
- xInit->initialize( args );
- xSimReg = xNested;
- }
- else
- {
- xSimReg = xReg;
- }
+ css::uno::Reference< XInterface >() );
}
-
- return xSimReg;
}
}
@@ -315,7 +268,7 @@ SAL_IMPLEMENT_MAIN()
}
int ret = 0;
- Reference< XComponentContext > xContext;
+ css::uno::Reference< XComponentContext > xContext;
try
{
@@ -433,7 +386,7 @@ SAL_IMPLEMENT_MAIN()
"to print all options.") );
throw RuntimeException(
buf.makeStringAndClear(),
- Reference< XInterface >() );
+ css::uno::Reference< XInterface >() );
}
else
{
@@ -453,45 +406,37 @@ SAL_IMPLEMENT_MAIN()
// bootstrap uno
xContext = ::cppu::defaultBootstrap_InitialComponentContext();
- Reference< container::XHierarchicalNameAccess > xTDmgr(
+ css::uno::Reference< container::XHierarchicalNameAccess > xTDmgr(
xContext->getValueByName(
"/singletons/com.sun.star.reflection."
"theTypeDescriptionManager" ),
UNO_QUERY_THROW );
- // get rdb tdprovider factory
- Reference< lang::XSingleComponentFactory > xTDprov_factory(
- ::cppu::loadSharedLibComponentFactory(
- "bootstrap.uno" SAL_DLLEXTENSION, OUString(),
- "com.sun.star.comp.stoc.RegistryTypeDescriptionProvider",
- Reference< lang::XMultiServiceFactory >(
- xContext->getServiceManager(), UNO_QUERY ),
- Reference< registry::XRegistryKey >(), "bootstrap_" ),
- UNO_QUERY );
- if (! xTDprov_factory.is())
- {
- throw RuntimeException(
- "cannot get registry typedescription provider: "
- "bootstrap.uno" SAL_DLLEXTENSION "!",
- Reference< XInterface >() );
- }
-
- // create registry td provider for mandatory registry files
- Any arg( makeAny( open_registries( mandatory_registries, xContext ) ) );
- Reference< XInterface > xTD_provider(
- xTDprov_factory->createInstanceWithArgumentsAndContext(
- Sequence< Any >( &arg, 1 ), xContext ) );
- // insert provider to tdmgr
- Reference< container::XSet > xSet( xTDmgr, UNO_QUERY_THROW );
+ // The registries are consumed twice, once to insert them into the
+ // TypeDescriptionManager so that TypeEmitter can work on
+ // css.star.reflection.XTypeDescription representation, and once
+ // directly as unoidl::Provider instances to keep track which types are
+ // coming from the mandatory registries for the "no explicit types
+ // given" case (which iterates over the full TypeDescriptionManager
+ // now); a welcome clean-up would be to make TypeEmitter work on
+ // unoidl::Entity directly like the other codemakers:
+ css::uno::Reference< container::XSet > xSet( xTDmgr, UNO_QUERY_THROW );
+ rtl::Reference< unoidl::Manager > unoidlMgr(new unoidl::Manager);
+ std::vector< rtl::Reference< unoidl::Provider > > unoidlMandatoryProvs;
for (vector< OUString >::iterator i(extra_registries.begin());
i != extra_registries.end(); ++i)
{
xSet->insert(makeAny(*i));
+ unoidlMgr->addProvider(unoidl::loadProvider(unoidlMgr, *i));
}
for (vector< OUString >::iterator i(mandatory_registries.begin());
i != mandatory_registries.end(); ++i)
{
xSet->insert(makeAny(*i));
+ rtl::Reference< unoidl::Provider > prov(
+ unoidl::loadProvider(unoidlMgr, *i));
+ unoidlMgr->addProvider(prov);
+ unoidlMandatoryProvs.push_back(prov);
}
if (0 == output.getLength()) // no output file specified
@@ -519,7 +464,7 @@ SAL_IMPLEMENT_MAIN()
throw RuntimeException(
"cannot get system path from file url " +
output.copy( 0, slash ),
- Reference< XInterface >() );
+ css::uno::Reference< XInterface >() );
}
OUString filename( output.copy( slash +1 ) );
sal_Int32 dot = filename.lastIndexOf( '.' );
@@ -660,27 +605,40 @@ SAL_IMPLEMENT_MAIN()
// and emit types to it
if (explicit_types.empty())
{
- Reference< reflection::XTypeDescriptionEnumeration > xTD_enum(
- Reference< reflection::XTypeDescriptionEnumerationAccess >(
- xTD_provider, UNO_QUERY_THROW )
+ css::uno::Reference< reflection::XTypeDescriptionEnumeration > xTD_enum(
+ css::uno::Reference< reflection::XTypeDescriptionEnumerationAccess >(
+ xTDmgr, UNO_QUERY_THROW )
->createTypeDescriptionEnumeration(
OUString() /* all IDL modules */,
Sequence< TypeClass >() /* all classes of types */,
reflection::TypeDescriptionSearchDepth_INFINITE ) );
while (xTD_enum->hasMoreElements())
{
- type_emitter->get_type( xTD_enum->nextTypeDescription() );
+ css::uno::Reference< reflection::XTypeDescription > td(
+ xTD_enum->nextTypeDescription());
+ OUString name(td->getName());
+ bool emit = false;
+ for (std::vector< rtl::Reference< unoidl::Provider > >::iterator
+ i(unoidlMandatoryProvs.begin());
+ i != unoidlMandatoryProvs.end(); ++i)
+ {
+ if ((*i)->findEntity(name).is()) {
+ emit = true;
+ break;
+ }
+ }
+ if (emit) {
+ type_emitter->get_type(td);
+ }
}
}
else
{
- Reference< container::XHierarchicalNameAccess > xHNA(
- xTD_provider, UNO_QUERY_THROW );
for ( size_t nPos = explicit_types.size(); nPos--; )
{
type_emitter->get_type(
- Reference< reflection::XTypeDescription >(
- xHNA->getByHierarchicalName( explicit_types[ nPos ] ),
+ css::uno::Reference< reflection::XTypeDescription >(
+ xTDmgr->getByHierarchicalName( explicit_types[ nPos ] ),
UNO_QUERY_THROW ) );
}
}
@@ -710,6 +668,18 @@ SAL_IMPLEMENT_MAIN()
}
current_appdomain->TypeResolve -= type_resolver;
}
+ catch (unoidl::NoSuchFileException & e)
+ {
+ std::cerr << "ERROR: No such file <" << e.getUri() << ">\n";
+ return EXIT_FAILURE;
+ }
+ catch (unoidl::FileFormatException & e)
+ {
+ std::cerr
+ << "ERROR: Bad format of <" << e.getUri() << ">, \""
+ << e.getDetail() << "\"\n";
+ return EXIT_FAILURE;
+ }
catch (Exception & exc)
{
OString msg(
@@ -732,7 +702,7 @@ SAL_IMPLEMENT_MAIN()
try
{
- Reference< lang::XComponent > xComp( xContext, UNO_QUERY );
+ css::uno::Reference< lang::XComponent > xComp( xContext, UNO_QUERY );
if (xComp.is())
xComp->dispose();
}
commit 411524d10ac88698605c67f69b3015125f9a84aa
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Apr 29 13:35:30 2013 +0200
Typos
Change-Id: I2ff65979a9da7da12ad6ac97dc090898913a2e8c
diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk
index 915fd68..cc2a463 100644
--- a/solenv/gbuild/UnoApiTarget.mk
+++ b/solenv/gbuild/UnoApiTarget.mk
@@ -128,10 +128,10 @@ $(call gb_UnoApiTarget_get_clean_target,%) :
$(call gb_Output_announce,$*,$(false),UNO,4)
-$(call gb_Helper_abbreviate_dirs,\
rm -f $(call gb_UnoApiTarget_get_target,$*) \
- $(call gb_UnoApiTarget_get_target,$*).oldformat
+ $(call gb_UnoApiTarget_get_target,$*).oldformat \
-rm -rf $(call gb_UnoApiTarget_get_dep_target,$*) \
$(basename $(call gb_UnoApiPartTarget_get_dep_target,$*)) \
- $(call gb_UnoApiPartTarget_get_target,$*)
+ $(call gb_UnoApiPartTarget_get_target,$*))
# cat the deps of all IDLs in one file, then we need only open that one file
define gb_UnoApiTarget__command_dep
More information about the Libreoffice-commits
mailing list