comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: Address of an object
Date: Tue, 19 Sep 2006 05:15:01 -0400
Date: 2006-09-19T05:15:01-04:00	[thread overview]
Message-ID: <u3bao9q0a.fsf@stephe-leake.org> (raw)
In-Reply-To: z020j9odcruv.ytmd4kywn98r.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

>> So you want access to some compiler-dependent information; clearly the
>> method will be compiler-dependent, since it isn't defined by the language.
>
> No, I don't want to access it. I only want my information.

I don't understand. You want write-only data?

>> What are you going to do with the "dopes" you add? They won't be
>> visible from Ada.
>
> That's exactly the goal, because what I want is to extend types in a way
> Ada does not support. I wanted to add something to a type without
> quarreling with Ada, which mistakenly [OK, that was a political decision]
> does not support MI. It was corrected in Ada 2005 but only for pure
> interfaces, while I need implementations. There is a vast number of cases
> where it might be useful.

So you are trying to extend the Ada language. You should be editing
the compiler; that's one of the reasons GNAT is open source.

> It seemed quite easy, thank to user-defined pools. Well, actually it is
> spoiled a bit with pointers and generics, but that's another story. 

Actually, that's part of the reason MI isn't in Ada. You must consider
how it impacts the entire language.

> The idea is as follows:
>
> 1. You define a pool which eventually takes its memory from some another
> pool.
>
> 2. When something is allocated in the pool, you just add necessary data to
> the allocated object in front of the allocated memory block
>
> 3. The interface to this is a generic package, which provides a pointer
> type to the objects in the pool. [Unfortunately, the type of the pointer's
> pool cannot be made opaque, but that is a minor language problem.]

So this generic package needs to read the data, from Ada. Or at least
provide a pointer to it, so other Ada packages can read it.

> 4. New operations are defined on the pointer type.

In Ada, or some other language?

> It is clean and portable design, because all the functionality is hidden
> behind the pointer type. It does not break the type allocated in the pool
> in any way.
>
> The only unexpected problem with this is that the compiler mangles pointers
> and there seems to be no way to influence or learn how it does this.

Read the source code for the compiler. Or ask the compiler vendor.

-- 
-- Stephe



  parent reply	other threads:[~2006-09-19  9:15 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-15 20:24 Address of an object Dmitry A. Kazakov
2006-09-15 23:31 ` Adam Beneschan
2006-09-16  8:13   ` Dmitry A. Kazakov
2006-09-18 10:29     ` Stephen Leake
2006-09-18 12:09       ` Dmitry A. Kazakov
2006-09-18 13:54         ` Maciej Sobczak
2006-09-18 14:53           ` Dmitry A. Kazakov
2006-09-19  9:15         ` Stephen Leake [this message]
2006-09-19 13:29           ` Dmitry A. Kazakov
2006-09-16 13:21 ` Stephen Leake
2006-09-16 17:06   ` Dmitry A. Kazakov
2006-09-20  0:43     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox