From: Shark8 <onewingedshark@gmail.com>
Subject: Re: converting pointer to value
Date: Thu, 4 Mar 2021 11:38:38 -0800 (PST) [thread overview]
Message-ID: <f0cfc37e-d37f-4489-b79b-6b7f55e86359n@googlegroups.com> (raw)
In-Reply-To: <s1r5o1$5df$1@gioia.aioe.org>
On Thursday, March 4, 2021 at 10:35:01 AM UTC-7, Dmitry A. Kazakov wrote:
> On 2021-03-04 17:55, Shark8 wrote:
>
> >> type SQLPOINTER is private;
> > ....
> >> private
> >> type SQLPOINTER is new System.Storage_Elements.Integer_Address;
> >
> > And here we have SQLPOINTER, which is private, but which is something of the same representation that Integer_Address has; let's assume that the ADDRESS type is implementation-defined, and a private type.
> SQLPOINTER is System.Address.
Which is implementation-defined.
Even though most programmers would assert that address and integer are the same thing, this isn't a given; segmented architectures would more naturally map to records.
> > What does this mean?
> > It means that we don't know what the size of ADDRESS (and thus SQLPOINTER) actually is, but assuming you're on a 32- or 64-bit machine it's likely 2 to 4 times as large as the 16-bit SQLSMALLINT-- which is a good indication that a simple UNCHECKED_CONVERSION is the wrong answer.
> You need not to know that:
>
> declare
> P : SQLPOINTER := ...;
> A : System.Address;
> pragma Import (Ada, A);
> for A'Address use P'Address;
> T : My_Fancy_Object;
> pragma Import (Ada, My_Fancy_Object);
> for T'Address use A;
> begin
> ... -- Use T at P
None of that addresses the issue that he asked: "how to get the Pvalue as an SQLRETURN?"
One of these is 16-bits, the other is derived from System.Storage_Elements.Integer_Address.
Sure, you can overlay, and that could be valid in some cases, but I simply don't have enough information here to say if that would be a valid solution and it's much more likely that it would be completely unintended.
next prev parent reply other threads:[~2021-03-04 19:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-04 15:59 converting pointer to value Björn Lundin
2021-03-04 16:50 ` Dmitry A. Kazakov
2021-03-05 7:06 ` Björn Lundin
2021-03-05 7:44 ` Dmitry A. Kazakov
2021-03-05 9:10 ` Björn Lundin
2021-03-04 16:55 ` Shark8
2021-03-04 17:35 ` Dmitry A. Kazakov
2021-03-04 19:38 ` Shark8 [this message]
2021-03-04 21:27 ` Dmitry A. Kazakov
2021-03-05 8:58 ` Björn Lundin
2021-03-05 8:54 ` Björn Lundin
2021-03-05 11:02 ` Björn Lundin
2021-03-05 11:57 ` Björn Lundin
2021-03-05 14:00 ` Dmitry A. Kazakov
2021-03-09 12:07 ` [SOLVED] " Björn Lundin
2021-03-04 20:09 ` Simon Wright
2021-03-04 21:00 ` Shark8
2021-03-05 8:59 ` Björn Lundin
2021-03-05 7:10 ` Björn Lundin
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox