diff options
Diffstat (limited to 'cli_ure')
-rw-r--r-- | cli_ure/CustomTarget_cli_ure_assemblies.mk | 43 | ||||
-rw-r--r-- | cli_ure/Module_cli_ure.mk | 2 | ||||
-rw-r--r-- | cli_ure/README | 5 | ||||
-rw-r--r-- | cli_ure/README.md | 7 | ||||
-rw-r--r-- | cli_ure/qa/climaker/climaker.cs | 16 | ||||
-rw-r--r-- | cli_ure/qa/climaker/types.idl | 8 | ||||
-rw-r--r-- | cli_ure/source/climaker/climaker_app.cxx | 19 | ||||
-rw-r--r-- | cli_ure/source/climaker/climaker_emit.cxx | 117 | ||||
-rw-r--r-- | cli_ure/source/climaker/climaker_share.h | 4 | ||||
-rw-r--r-- | cli_ure/source/uno_bridge/cli_data.cxx | 17 |
10 files changed, 99 insertions, 139 deletions
diff --git a/cli_ure/CustomTarget_cli_ure_assemblies.mk b/cli_ure/CustomTarget_cli_ure_assemblies.mk index 260a52b25fec..266df95f2706 100644 --- a/cli_ure/CustomTarget_cli_ure_assemblies.mk +++ b/cli_ure/CustomTarget_cli_ure_assemblies.mk @@ -19,37 +19,24 @@ $(call gb_CustomTarget_get_target,cli_ure/source) : \ $(call gb_CustomTarget_get_workdir,cli_ure/source)/ure/assembly.cs $(call gb_CustomTarget_get_workdir,cli_ure/source)/basetypes/assembly.cs : \ - $(SRCDIR)/cli_ure/source/basetypes/assembly.cs \ - $(SRCDIR)/cli_ure/version/version.txt \ - $(cli_ure_source_MAKEFILE) \ - | $(call gb_CustomTarget_get_workdir,cli_ure/source)/basetypes/.dir + $(SRCDIR)/cli_ure/source/basetypes/assembly.cs \ + $(SRCDIR)/cli_ure/version/version.txt \ + $(cli_ure_source_MAKEFILE) \ + | $(call gb_CustomTarget_get_workdir,cli_ure/source)/basetypes/.dir + sed -e "s/@CLI_BASETYPES_NEW_VERSION@/$(CLI_BASETYPES_NEW_VERSION)/g" $< > $@ $(call gb_CustomTarget_get_workdir,cli_ure/source)/native/assembly.cxx : \ - $(SRCDIR)/cli_ure/source/native/assembly.cxx \ - $(SRCDIR)/cli_ure/version/version.txt \ - $(cli_ure_source_MAKEFILE) \ - | $(call gb_CustomTarget_get_workdir,cli_ure/source)/native/.dir + $(SRCDIR)/cli_ure/source/native/assembly.cxx \ + $(SRCDIR)/cli_ure/version/version.txt \ + $(cli_ure_source_MAKEFILE) \ + | $(call gb_CustomTarget_get_workdir,cli_ure/source)/native/.dir + sed -e "s/@CLI_CPPUHELPER_NEW_VERSION@/$(CLI_CPPUHELPER_NEW_VERSION)/g" $< > $@ $(call gb_CustomTarget_get_workdir,cli_ure/source)/ure/assembly.cs : \ - $(SRCDIR)/cli_ure/source/ure/assembly.cs \ - $(SRCDIR)/cli_ure/version/version.txt \ - $(cli_ure_source_MAKEFILE) \ - | $(call gb_CustomTarget_get_workdir,cli_ure/source)/ure/.dir - -$(call gb_CustomTarget_get_workdir,cli_ure/source)/basetypes/assembly.cs : - sed -e "s/@CLI_BASETYPES_NEW_VERSION@/$(CLI_BASETYPES_NEW_VERSION)/g" \ - < $< > $@.tmp && \ - mv $@.tmp $@ - -# TODO use macros for this -$(call gb_CustomTarget_get_workdir,cli_ure/source)/native/assembly.cxx : - sed -e "s/@CLI_CPPUHELPER_NEW_VERSION@/$(CLI_CPPUHELPER_NEW_VERSION)/g" \ - < $< > $@.tmp && \ - mv $@.tmp $@ - -$(call gb_CustomTarget_get_workdir,cli_ure/source)/ure/assembly.cs : - sed -e "s/@CLI_URE_NEW_VERSION@/$(CLI_URE_NEW_VERSION)/g" \ - < $< > $@.tmp && \ - mv $@.tmp $@ + $(SRCDIR)/cli_ure/source/ure/assembly.cs \ + $(SRCDIR)/cli_ure/version/version.txt \ + $(cli_ure_source_MAKEFILE) \ + | $(call gb_CustomTarget_get_workdir,cli_ure/source)/ure/.dir + sed -e "s/@CLI_URE_NEW_VERSION@/$(CLI_URE_NEW_VERSION)/g" $< > $@ # vim: set noet sw=4 ts=4: diff --git a/cli_ure/Module_cli_ure.mk b/cli_ure/Module_cli_ure.mk index 91863abb59c9..ba18aecd1e4b 100644 --- a/cli_ure/Module_cli_ure.mk +++ b/cli_ure/Module_cli_ure.mk @@ -10,7 +10,7 @@ $(eval $(call gb_Module_Module,cli_ure)) ifeq ($(COM),MSC) -ifneq ($(CPUNAME),ARM64) +ifneq ($(CPUNAME)_$(CROSS_COMPILING),AARCH64_TRUE) $(eval $(call gb_Module_add_targets,cli_ure,\ CliLibrary_cli_basetypes \ CliLibrary_cli_ure \ diff --git a/cli_ure/README b/cli_ure/README deleted file mode 100644 index 8f173dffe8ab..000000000000 --- a/cli_ure/README +++ /dev/null @@ -1,5 +0,0 @@ -Common Lang Infrastructure Uno Runtime Environment - support assemblies and tools for the MS .Net (and Mono) UNO binding. - -See also: -[git:cli_ure/source/readme.txt] - diff --git a/cli_ure/README.md b/cli_ure/README.md new file mode 100644 index 000000000000..b6f27e7c6979 --- /dev/null +++ b/cli_ure/README.md @@ -0,0 +1,7 @@ +# Common Language Infrastructure (CLI) UNO Runtime Environment + +Support assemblies and tools for the MS .NET UNO binding. + +## See also + +`[git:cli_ure/readme.txt]` diff --git a/cli_ure/qa/climaker/climaker.cs b/cli_ure/qa/climaker/climaker.cs index 37e46bf0e1ee..1fcc5351351f 100644 --- a/cli_ure/qa/climaker/climaker.cs +++ b/cli_ure/qa/climaker/climaker.cs @@ -237,8 +237,8 @@ public sealed class Test l.assure(s.p4 == 0); l.assure(s.p5 == 0); l.assure(s.p6 == 0); - l.assure(s.p7 == 0L); - l.assure(s.p8 == 0L); + l.assure(s.p7 == 0); + l.assure(s.p8 == 0); l.assure(s.p9 == 0.0f); l.assure(s.p10 == 0.0); l.assure(s.p11 == '\u0000'); @@ -255,8 +255,8 @@ public sealed class Test l.assure(s.t4 == 0); l.assure(s.t5 == 0); l.assure(s.t6 == 0); - l.assure(s.t7 == 0L); - l.assure(s.t8 == 0L); + l.assure(s.t7 == 0); + l.assure(s.t8 == 0); l.assure(s.t9 == 0.0f); l.assure(s.t10 == 0.0); l.assure(s.t11 == '\u0000'); @@ -353,8 +353,8 @@ public sealed class Test l.assure(s.p4 == 3); l.assure(s.p5 == 4); l.assure(s.p6 == 5); - l.assure(s.p7 == 6L); - l.assure(s.p8 == 7L); + l.assure(s.p7 == 6); + l.assure(s.p8 == 7); l.assure(s.p9 == 0.8f); l.assure(s.p10 == 0.9); l.assure(s.p11 == 'A'); @@ -371,8 +371,8 @@ public sealed class Test l.assure(s.t4 == 0); l.assure(s.t5 == 0); l.assure(s.t6 == 0); - l.assure(s.t7 == 0L); - l.assure(s.t8 == 0L); + l.assure(s.t7 == 0); + l.assure(s.t8 == 0); l.assure(s.t9 == 0.0f); l.assure(s.t10 == 0.0); l.assure(s.t11 == '\u0000'); diff --git a/cli_ure/qa/climaker/types.idl b/cli_ure/qa/climaker/types.idl index c9bb612ddb19..1c34918e2827 100644 --- a/cli_ure/qa/climaker/types.idl +++ b/cli_ure/qa/climaker/types.idl @@ -17,14 +17,6 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <com/sun/star/lang/ClassNotFoundException.idl> -#include <com/sun/star/lang/IllegalAccessException.idl> -#include <com/sun/star/uno/DeploymentException.idl> -#include <com/sun/star/uno/Exception.idl> -#include <com/sun/star/uno/RuntimeException.idl> -#include <com/sun/star/uno/XInterface.idl> -#include <com/sun/star/uno/XNamingService.idl> -#include <com/sun/star/lang/XComponent.idl> module test { module cliure { module climaker { enum Enum1 { VALUE1 = -100, VALUE2 = 100 }; diff --git a/cli_ure/source/climaker/climaker_app.cxx b/cli_ure/source/climaker/climaker_app.cxx index 97b1a5ce9bce..d551659fec4b 100644 --- a/cli_ure/source/climaker/climaker_app.cxx +++ b/cli_ure/source/climaker/climaker_app.cxx @@ -39,7 +39,6 @@ #include "com/sun/star/uno/XComponentContext.hpp" #include "unoidl/unoidl.hxx" -using namespace ::std; using namespace ::System::Reflection; @@ -285,10 +284,10 @@ SAL_IMPLEMENT_MAIN() get_option_info( "assembly-trademark" ); OUString output; - vector< OUString > mandatory_registries; - vector< OUString > extra_registries; - vector< OUString > extra_assemblies; - vector< OUString > explicit_types; + std::vector< OUString > mandatory_registries; + std::vector< OUString > extra_registries; + std::vector< OUString > extra_assemblies; + std::vector< OUString > explicit_types; OUString version, product, description, company, copyright, trademark, keyfile, delaySign; @@ -395,12 +394,12 @@ SAL_IMPLEMENT_MAIN() std::vector< rtl::Reference< unoidl::Provider > > unoidlMandatoryProvs; for (auto& rRegistry : extra_registries) { - xSet->insert(makeAny(rRegistry)); + xSet->insert(Any(rRegistry)); unoidlMgr->addProvider(rRegistry); } for (auto& rRegistry : mandatory_registries) { - xSet->insert(makeAny(rRegistry)); + xSet->insert(Any(rRegistry)); rtl::Reference< unoidl::Provider > prov(unoidlMgr->addProvider(rRegistry)); unoidlMandatoryProvs.push_back(prov); } @@ -583,9 +582,9 @@ SAL_IMPLEMENT_MAIN() { css::uno::Reference< reflection::XTypeDescription > td( xTD_enum->nextTypeDescription()); - OUString name(td->getName()); + OUString td_name(td->getName()); bool bEmit = std::any_of(unoidlMandatoryProvs.begin(), unoidlMandatoryProvs.end(), - [&name](rtl::Reference<unoidl::Provider>& rProv) { return rProv->findEntity(name).is(); }); + [&td_name](rtl::Reference<unoidl::Provider>& rProv) { return rProv->findEntity(td_name).is(); }); if (bEmit) { type_emitter->get_type(td); } @@ -601,7 +600,7 @@ SAL_IMPLEMENT_MAIN() UNO_QUERY_THROW ) ); } } - type_emitter->~TypeEmitter(); + type_emitter->finish(); if (g_bVerbose) { diff --git a/cli_ure/source/climaker/climaker_emit.cxx b/cli_ure/source/climaker/climaker_emit.cxx index e34a9b088bda..d5f1a56d7e9f 100644 --- a/cli_ure/source/climaker/climaker_emit.cxx +++ b/cli_ure/source/climaker/climaker_emit.cxx @@ -520,18 +520,16 @@ Assembly ^ TypeEmitter::type_resolve( TypeAttributes::BeforeFieldInit | TypeAttributes::AnsiClass) ); - Sequence< Reference< + const Sequence< Reference< reflection::XConstantTypeDescription > > seq_constants( xType->getConstants() ); - Reference< reflection::XConstantTypeDescription > const * constants = - seq_constants.getConstArray(); sal_Int32 constants_length = seq_constants.getLength(); for ( sal_Int32 constants_pos = 0; constants_pos < constants_length; ++constants_pos ) { Reference< reflection::XConstantTypeDescription > const & xConstant = - constants[ constants_pos ]; + seq_constants[ constants_pos ]; ::System::Object ^ constant = to_cli_constant( xConstant->getConstantValue() ); ::System::String ^ uno_name = @@ -575,12 +573,10 @@ Assembly ^ TypeEmitter::type_resolve( (FieldAttributes) (FieldAttributes::Private | FieldAttributes::SpecialName | FieldAttributes::RTSpecialName) ); - Sequence< OUString > seq_enum_names( xType->getEnumNames() ); - Sequence< sal_Int32 > seq_enum_values( xType->getEnumValues() ); + const Sequence< OUString > seq_enum_names( xType->getEnumNames() ); + const Sequence< sal_Int32 > seq_enum_values( xType->getEnumValues() ); sal_Int32 enum_length = seq_enum_names.getLength(); OSL_ASSERT( enum_length == seq_enum_values.getLength() ); - OUString const * enum_names = seq_enum_names.getConstArray(); - sal_Int32 const * enum_values = seq_enum_values.getConstArray(); for ( sal_Int32 enum_pos = 0; enum_pos < enum_length; ++enum_pos ) { // enum_builder->DefineLiteral( @@ -588,13 +584,13 @@ Assembly ^ TypeEmitter::type_resolve( // __box ((::System::Int32) enum_values[ enum_pos ]) ); Emit::FieldBuilder ^ field_builder = enum_builder->DefineField( - ustring_to_String( enum_names[ enum_pos ] ), + ustring_to_String( seq_enum_names[ enum_pos ] ), enum_builder, (FieldAttributes) (FieldAttributes::Public | FieldAttributes::Static | FieldAttributes::Literal) ); field_builder->SetConstant( - ((::System::Int32) enum_values[ enum_pos ]) ); + ((::System::Int32) seq_enum_values[ enum_pos ]) ); } if (g_bVerbose) @@ -844,20 +840,17 @@ Assembly ^ TypeEmitter::type_resolve( } } - Sequence< + const Sequence< Reference< reflection::XInterfaceMemberTypeDescription > > seq_members( xType->getMembers() ); - Reference< reflection::XInterfaceMemberTypeDescription > const * members = - seq_members.getConstArray(); sal_Int32 members_length = seq_members.getLength(); for ( sal_Int32 members_pos = 0; members_pos < members_length; ++members_pos ) { Reference< reflection::XInterfaceMemberTypeDescription > const & xMember = - members[ members_pos ]; + seq_members[ members_pos ]; Sequence< Reference< reflection::XTypeDescription > > seq_exceptions; - Emit::MethodBuilder ^ method_builder; MethodAttributes c_method_attr = (MethodAttributes) (MethodAttributes::Public | @@ -871,21 +864,19 @@ Assembly ^ TypeEmitter::type_resolve( Reference< reflection::XInterfaceMethodTypeDescription > xMethod( xMember, UNO_QUERY_THROW ); - Sequence< + const Sequence< Reference< reflection::XMethodParameter > > seq_parameters( xMethod->getParameters() ); sal_Int32 params_length = seq_parameters.getLength(); array< ::System::Type^>^ param_types = gcnew array< ::System::Type^>( params_length ); - Reference< reflection::XMethodParameter > const * parameters = - seq_parameters.getConstArray(); // first determine all types //Make the first param type as return type sal_Int32 params_pos = 0; for ( ; params_pos < params_length; ++params_pos ) { Reference< reflection::XMethodParameter > const & xParam = - parameters[ params_pos ]; + seq_parameters[ params_pos ]; ::System::Type ^ param_type = get_type( xParam->getType() ); ::System::String ^ param_type_name = param_type->FullName; if (xParam->isOut()) @@ -905,7 +896,7 @@ Assembly ^ TypeEmitter::type_resolve( // c_method_attr, tb, // param_types ); // else - method_builder = type_builder->DefineMethod( + Emit::MethodBuilder ^ method_builder = type_builder->DefineMethod( ustring_to_String( xMethod->getMemberName() ), c_method_attr, get_type( xMethod->getReturnType() ), param_types ); @@ -914,7 +905,7 @@ Assembly ^ TypeEmitter::type_resolve( for ( ; params_pos < params_length; ++params_pos ) { Reference< reflection::XMethodParameter > const & xParam = - parameters[ params_pos ]; + seq_parameters[ params_pos ]; long param_flags = 0; if (xParam->isIn()) param_flags |= (long)ParameterAttributes::In; @@ -933,19 +924,17 @@ Assembly ^ TypeEmitter::type_resolve( if (xReturnStruct.is()) { - Sequence<Reference<reflection::XTypeDescription> > seq_type_args = + const Sequence<Reference<reflection::XTypeDescription> > seq_type_args = xReturnStruct->getTypeArguments(); if (seq_type_args.getLength() != 0) { //get th ctor of the attribute array< ::System::Type^>^ arCtor = {::System::Type::GetType("System.Type[]")}; //Get the arguments for the attribute's ctor - Reference<reflection::XTypeDescription> const * arXTypeArgs = - seq_type_args.getConstArray(); int numTypes = seq_type_args.getLength(); array< ::System::Type^>^ arCtsTypes = gcnew array< ::System::Type^>(numTypes); for (int i = 0; i < numTypes; i++) - arCtsTypes[i] = get_type(arXTypeArgs[i]); + arCtsTypes[i] = get_type(seq_type_args[i]); array< ::System::Object^>^ arArgs = {arCtsTypes}; Emit::CustomAttributeBuilder ^ attrBuilder = @@ -969,11 +958,11 @@ Assembly ^ TypeEmitter::type_resolve( { array< ::System::Type^>^ arCtorOneway = gcnew array< ::System::Type^>(0); array< ::System::Object^>^ arArgs = gcnew array< ::System::Object^>(0); - Emit::CustomAttributeBuilder ^ attrBuilder = + Emit::CustomAttributeBuilder ^ attrBuilder2 = gcnew Emit::CustomAttributeBuilder( ::uno::OnewayAttribute::typeid->GetConstructor( arCtorOneway), arArgs); - method_builder->SetCustomAttribute(attrBuilder); + method_builder->SetCustomAttribute(attrBuilder2); } } else // attribute @@ -1038,10 +1027,10 @@ Assembly ^ TypeEmitter::type_resolve( method_builder->DefineParameter( 1 /* starts with 1 */, ParameterAttributes::In, "value" ); //define UNO exception attribute (exceptions)-------------------------------------- - Emit::CustomAttributeBuilder^ attrBuilder = + Emit::CustomAttributeBuilder^ attrBuilder2 = get_exception_attribute(xAttribute->getSetExceptions()); - if (attrBuilder != nullptr) - method_builder->SetCustomAttribute(attrBuilder); + if (attrBuilder2 != nullptr) + method_builder->SetCustomAttribute(attrBuilder2); property_builder->SetSetMethod( method_builder ); } @@ -1081,7 +1070,7 @@ Assembly ^ TypeEmitter::type_resolve( { array< ::System::Object^>^ aArg = gcnew array< ::System::Object^>(numTypes); for (int i = 0; i < numTypes; i++) - aArg[i] = ustring_to_String(seq_type_parameters.getConstArray()[i]); + aArg[i] = ustring_to_String(seq_type_parameters[i]); array< ::System::Object^>^ args = {aArg}; array< ::System::Type^>^ arTypesCtor = @@ -1106,22 +1095,18 @@ Assembly ^ TypeEmitter::type_resolve( } // members - Sequence< Reference< reflection::XTypeDescription > > seq_members( + const Sequence< Reference< reflection::XTypeDescription > > seq_members( entry->m_xType->getMemberTypes() ); - Sequence< OUString > seq_member_names( entry->m_xType->getMemberNames() ); + const Sequence< OUString > seq_member_names( entry->m_xType->getMemberNames() ); sal_Int32 members_length = seq_members.getLength(); OSL_ASSERT( seq_member_names.getLength() == members_length ); //check if we have a XTypeDescription for every member. If not then the user may //have forgotten to specify additional rdbs with the --extra option. - Reference< reflection::XTypeDescription > const * pseq_members = - seq_members.getConstArray(); - OUString const * pseq_member_names = - seq_member_names.getConstArray(); for (int i = 0; i < members_length; i++) { const OUString sType(entry->m_xType->getName()); - const OUString sMemberName(pseq_member_names[i]); - if ( ! pseq_members[i].is()) + const OUString sMemberName(seq_member_names[i]); + if ( ! seq_members[i].is()) throw RuntimeException("Missing type description . Check if you need to " "specify additional RDBs with the --extra option. Type missing for: " + sType + "::" + sMemberName,0); @@ -1179,10 +1164,10 @@ Assembly ^ TypeEmitter::type_resolve( ::System::String ^ base_type_name = base_type->FullName; //ToDo m_generated_structs? - struct_entry ^ entry = + struct_entry ^ entry2 = dynamic_cast< struct_entry ^ >( m_generated_structs[base_type_name] ); - if (nullptr == entry) + if (nullptr == entry2) { // complete type array<FieldInfo^>^ fields = @@ -1191,9 +1176,9 @@ Assembly ^ TypeEmitter::type_resolve( BindingFlags::Public | BindingFlags::DeclaredOnly) ); sal_Int32 len = fields->Length; - for ( sal_Int32 pos = 0; pos < len; ++pos ) + for ( sal_Int32 pos2 = 0; pos2 < len; ++pos2 ) { - FieldInfo ^ field = fields[ pos ]; + FieldInfo ^ field = fields[ pos2 ]; all_member_names[ member_pos ] = field->Name; all_param_types[ member_pos ] = field->FieldType; ++member_pos; @@ -1202,13 +1187,13 @@ Assembly ^ TypeEmitter::type_resolve( else // generated during this session: // members may be incomplete ifaces { - sal_Int32 len = entry->m_member_names->Length; - for ( sal_Int32 pos = 0; pos < len; ++pos ) + sal_Int32 len = entry2->m_member_names->Length; + for ( sal_Int32 pos2 = 0; pos2 < len; ++pos2 ) { all_member_names[ member_pos ] = - entry->m_member_names[ pos ]; + entry2->m_member_names[ pos2 ]; all_param_types[ member_pos ] = - entry->m_param_types[ pos ]; + entry2->m_param_types[ pos2 ]; ++member_pos; } } @@ -1232,11 +1217,11 @@ Assembly ^ TypeEmitter::type_resolve( for ( member_pos = 0; member_pos < members_length; ++member_pos ) { ::System::String ^ field_name = - ustring_to_String( pseq_member_names[ member_pos ] ); + ustring_to_String( seq_member_names[ member_pos ] ); ::System::Type ^ field_type; //Special handling of struct parameter types bool bParameterizedType = false; - if (pseq_members[ member_pos ]->getTypeClass() == TypeClass_UNKNOWN) + if (seq_members[ member_pos ]->getTypeClass() == TypeClass_UNKNOWN) { bParameterizedType = true; if (type_param_pos < seq_type_parameters.getLength()) @@ -1252,7 +1237,7 @@ Assembly ^ TypeEmitter::type_resolve( } else { - field_type = get_type( pseq_members[ member_pos ] ); + field_type = get_type( seq_members[ member_pos ] ); if (field_type->IsArray && m_incomplete_structs[cts_name] @@ -1263,7 +1248,7 @@ Assembly ^ TypeEmitter::type_resolve( while ((value = value->GetElementType())->IsArray); //If the value type is a struct then make sure it is fully created. get_complete_struct(value->FullName); - field_type = get_type(pseq_members[member_pos]); + field_type = get_type(seq_members[member_pos]); } } members[ member_pos ] = @@ -1276,7 +1261,7 @@ Assembly ^ TypeEmitter::type_resolve( //get the name OSL_ASSERT(seq_type_parameters.getLength() > curParamIndex); ::System::String^ sTypeName = ustring_to_String( - seq_type_parameters.getConstArray()[curParamIndex++]); + seq_type_parameters[curParamIndex++]); array< ::System::Object^>^ args = {sTypeName}; //set ParameterizedTypeAttribute array< ::System::Type^>^ arCtorTypes = {::System::String::typeid}; @@ -1474,12 +1459,12 @@ Assembly ^ TypeEmitter::type_resolve( MethodAttributes::RTSpecialName), CallingConventions::Standard, nullptr); - Emit::ILGenerator^ ilGen = ctor_builder->GetILGenerator(); - ilGen->Emit( Emit::OpCodes::Ldarg_0 ); // push this - ilGen->Emit( + Emit::ILGenerator^ ilGen1 = ctor_builder->GetILGenerator(); + ilGen1->Emit( Emit::OpCodes::Ldarg_0 ); // push this + ilGen1->Emit( Emit::OpCodes::Call, type_builder->BaseType->GetConstructor(gcnew array< ::System::Type^>(0))); - ilGen->Emit( Emit::OpCodes::Ret ); + ilGen1->Emit( Emit::OpCodes::Ret ); //Create the service constructors. @@ -1505,25 +1490,24 @@ Assembly ^ TypeEmitter::type_resolve( ::System::Type ^ type_uno_exception = get_type("unoidl.com.sun.star.uno.Exception", true); - for (int i = seqCtors.getLength() - 1; i >= 0; i--) + for (int j = seqCtors.getLength() - 1; j >= 0; j--) { bool bParameterArray = false; ::System::Type ^ typeAny = ::uno::Any::typeid; const Reference<reflection::XServiceConstructorDescription> & ctorDes = - seqCtors[i]; + seqCtors[j]; //obtain the parameter types - Sequence<Reference<reflection::XParameter> > seqParams = + const Sequence<Reference<reflection::XParameter> > seqParams = ctorDes->getParameters(); - Reference<reflection::XParameter> const * arXParams = seqParams.getConstArray(); sal_Int32 cParams = seqParams.getLength(); array< ::System::Type^>^ arTypeParameters = gcnew array< ::System::Type^> (cParams + 1); arTypeParameters[0] = get_type("unoidl.com.sun.star.uno.XComponentContext", true); for (int iparam = 0; iparam != cParams; iparam++) { - if (arXParams[iparam]->isRestParameter()) + if (seqParams[iparam]->isRestParameter()) arTypeParameters[iparam + 1] = array< ::uno::Any>::typeid; else - arTypeParameters[iparam + 1] = get_type(arXParams[iparam]->getType()); + arTypeParameters[iparam + 1] = get_type(seqParams[iparam]->getType()); } //The array arTypeParameters can contain: //System.Type and uno.PolymorphicType. @@ -1573,7 +1557,7 @@ Assembly ^ TypeEmitter::type_resolve( gcnew array<Emit::ParameterBuilder^> (cParams); for (int iparam = 0; iparam != cParams; iparam++) { - Reference<reflection::XParameter> const & aParam = arXParams[iparam]; + Reference<reflection::XParameter> const & aParam = seqParams[iparam]; ::System::String ^ sParamName = ustring_to_String(aParam->getName()); arParameterBuilder[iparam] = method_builder->DefineParameter( @@ -1910,9 +1894,6 @@ Emit::CustomAttributeBuilder^ TypeEmitter::get_exception_attribute( { Emit::CustomAttributeBuilder ^ attr_builder = nullptr; - Reference< reflection::XCompoundTypeDescription > const * exceptions = - seq_exceptionsTd.getConstArray(); - array< ::System::Type^>^ arTypesCtor = {::System::Type::GetType("System.Type[]")}; ConstructorInfo ^ ctor_ExceptionAttribute = ::uno::ExceptionAttribute::typeid->GetConstructor(arTypesCtor); @@ -1925,7 +1906,7 @@ Emit::CustomAttributeBuilder^ TypeEmitter::get_exception_attribute( for ( sal_Int32 exc_pos = 0; exc_pos < exc_length; ++exc_pos ) { Reference< reflection::XCompoundTypeDescription > const & xExc = - exceptions[ exc_pos ]; + seq_exceptionsTd[ exc_pos ]; exception_types[ exc_pos ] = get_type( xExc ); } array< ::System::Object^>^ args = {exception_types}; @@ -2154,7 +2135,7 @@ Emit::CustomAttributeBuilder^ TypeEmitter::get_exception_attribute( //get_type will asked the module builder for the type or otherwise all known assemblies. return get_type(sName, true); } -TypeEmitter::~TypeEmitter() +void TypeEmitter::finish() { while (true) { diff --git a/cli_ure/source/climaker/climaker_share.h b/cli_ure/source/climaker/climaker_share.h index ed7ab256a3ad..29c3c876426e 100644 --- a/cli_ure/source/climaker/climaker_share.h +++ b/cli_ure/source/climaker/climaker_share.h @@ -110,7 +110,7 @@ static ::System::Reflection::MethodAttributes c_ctor_method_attr = ::System::Reflection::MethodAttributes::Instance*/); -ref class TypeEmitter : public ::System::IDisposable +ref class TypeEmitter { ::System::Reflection::Emit::ModuleBuilder ^ m_module_builder; array< ::System::Reflection::Assembly^>^ m_extra_assemblies; @@ -243,7 +243,7 @@ public: ::System::Reflection::Emit::ModuleBuilder ^ module_builder, array< ::System::Reflection::Assembly^>^ assemblies ); // must be called to finish up uncompleted types - ~TypeEmitter(); + void finish(); ::System::Reflection::Assembly ^ type_resolve( ::System::Object ^ sender, ::System::ResolveEventArgs ^ args ); diff --git a/cli_ure/source/uno_bridge/cli_data.cxx b/cli_ure/source/uno_bridge/cli_data.cxx index f321549da31e..72b39df4884f 100644 --- a/cli_ure/source/uno_bridge/cli_data.cxx +++ b/cli_ure/source/uno_bridge/cli_data.cxx @@ -42,7 +42,6 @@ namespace sr = System::Reflection; namespace st = System::Text; namespace ucss = unoidl::com::sun::star; -using namespace std; namespace cli_uno { @@ -51,9 +50,9 @@ OUString mapCliTypeName(System::String^ typeName); System::String^ mapCliPolymorphicName(System::String^ unoName); System::String^ mapPolymorphicName(System::String^ unoName, bool bCliToUno); -inline unique_ptr< rtl_mem > seq_allocate( sal_Int32 nElements, sal_Int32 nSize ) +inline std::unique_ptr< rtl_mem > seq_allocate( sal_Int32 nElements, sal_Int32 nSize ) { - unique_ptr< rtl_mem > seq( + std::unique_ptr< rtl_mem > seq( rtl_mem::allocate( SAL_SEQUENCE_HEADER_SIZE + (nElements * nSize) ) ); uno_Sequence * p = (uno_Sequence *)seq.get(); p->nRefCount = 1; @@ -899,7 +898,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, } else { - unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (sal_Int64) ) ); + std::unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (sal_Int64) ) ); *(sal_Int64 *) mem.get()= *safe_cast<System::Int64^>(aAny.Value); pAny->pData = mem.release(); } @@ -912,7 +911,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, } else { - unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (sal_uInt64) ) ); + std::unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (sal_uInt64) ) ); *(sal_uInt64 *) mem.get()= *safe_cast<System::UInt64^>(aAny.Value); pAny->pData = mem.release(); } @@ -925,7 +924,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, } else { - unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (float) ) ); + std::unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (float) ) ); *(float*) mem.get() = *safe_cast<System::Single^>(aAny.Value); pAny->pData = mem.release(); } @@ -938,7 +937,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, } else { - unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (double) ) ); + std::unique_ptr< rtl_mem > mem( rtl_mem::allocate( sizeof (double) ) ); *(double*) mem.get()= *safe_cast<System::Double^>(aAny.Value); pAny->pData= mem.release(); } @@ -967,7 +966,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, css::uno::Type anyType(value_td); typelib_TypeDescription* td= NULL; anyType.getDescription(&td); - unique_ptr< rtl_mem > mem(rtl_mem::allocate(td->nSize)); + std::unique_ptr< rtl_mem > mem(rtl_mem::allocate(td->nSize)); typelib_typedescription_release(td); map_to_uno( mem.get(), aAny.Value, value_td.getTypeLibType(), @@ -1219,7 +1218,7 @@ void Bridge::map_to_uno(void * uno_data, System::Object^ cli_data, typelib_TypeDescriptionReference * element_type = ((typelib_IndirectTypeDescription *)td.get())->pType; - unique_ptr< rtl_mem > seq; + std::unique_ptr< rtl_mem > seq; System::Array^ ar = nullptr; if (cli_data != nullptr) |