* ? How get/use a 'type' from a Ada shared library loaded at run time (plugin) ?
@ 2021-04-15 8:48 Daniel Norte Moraes
2021-04-15 9:28 ` Dmitry A. Kazakov
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Norte Moraes @ 2021-04-15 8:48 UTC (permalink / raw)
Hi All!
How use Ada 'type(s)' from an library loaded at run time (dlopen &Cia)? are they possible?
My main need is to declare variables from these types or and make
dispatching calls based in these types.
Any help is welcome.
Best wishes,
Dani.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ? How get/use a 'type' from a Ada shared library loaded at run time (plugin) ?
2021-04-15 8:48 ? How get/use a 'type' from a Ada shared library loaded at run time (plugin) ? Daniel Norte Moraes
@ 2021-04-15 9:28 ` Dmitry A. Kazakov
2021-04-15 9:47 ` Daniel Norte Moraes
0 siblings, 1 reply; 3+ messages in thread
From: Dmitry A. Kazakov @ 2021-04-15 9:28 UTC (permalink / raw)
On 2021-04-15 10:48, Daniel Norte Moraes wrote:
> How use Ada 'type(s)' from an library loaded at run time (dlopen &Cia)? are they possible?
Like any other type.
You should not forget to initialize the library though. The library
project should normally have
for Library_Auto_Init use "false";
because otherwise it would likely deadlock under Windows [if you wish to
make your project portable]. Under Linux I am not sure if it deadlocks,
never tested for that.
> My main need is to declare variables from these types or and make
> dispatching calls based in these types.
You cannot declare variables of types declared in a dynamically loaded
library for the obvious reason that you cannot dynamically refer to a
package from the library.
But you can dispatch on a class-wide object which specific type is
declared in a dynamically loaded library.
For example you can call a dynamically loaded constructing function that
returns T'Class where T is declared outside the library and then
dispatch to an overridden primitive operation of S derived from T inside
the library.
To my understanding library initialization expands dispatching tables
with all tagged types declared in the library.
P.S. What happens on finalization is an intriguing question. I would
rather never attempt to unload an Ada library...
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ? How get/use a 'type' from a Ada shared library loaded at run time (plugin) ?
2021-04-15 9:28 ` Dmitry A. Kazakov
@ 2021-04-15 9:47 ` Daniel Norte Moraes
0 siblings, 0 replies; 3+ messages in thread
From: Daniel Norte Moraes @ 2021-04-15 9:47 UTC (permalink / raw)
Em quinta-feira, 15 de abril de 2021 às 06:28:29 UTC-3, Dmitry A. Kazakov escreveu:
> On 2021-04-15 10:48, Daniel Norte Moraes wrote:
>
> > How use Ada 'type(s)' from an library loaded at run time (dlopen &Cia)? are they possible?
> Like any other type.
>
> You should not forget to initialize the library though. The library
> project should normally have
>
> for Library_Auto_Init use "false";
>
> because otherwise it would likely deadlock under Windows [if you wish to
> make your project portable]. Under Linux I am not sure if it deadlocks,
> never tested for that.
> > My main need is to declare variables from these types or and make
> > dispatching calls based in these types.
> You cannot declare variables of types declared in a dynamically loaded
> library for the obvious reason that you cannot dynamically refer to a
> package from the library.
>
> But you can dispatch on a class-wide object which specific type is
> declared in a dynamically loaded library.
>
> For example you can call a dynamically loaded constructing function that
> returns T'Class where T is declared outside the library and then
> dispatch to an overridden primitive operation of S derived from T inside
> the library.
>
> To my understanding library initialization expands dispatching tables
> with all tagged types declared in the library.
>
> P.S. What happens on finalization is an intriguing question. I would
> rather never attempt to unload an Ada library...
>
> --
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de
Thanks!
Best Whishes,
Dani.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-15 9:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15 8:48 ? How get/use a 'type' from a Ada shared library loaded at run time (plugin) ? Daniel Norte Moraes
2021-04-15 9:28 ` Dmitry A. Kazakov
2021-04-15 9:47 ` Daniel Norte Moraes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox