Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: incomplete rtti


  • To: Nathan Sidwell <nathan@xxxxxxxxxxxxxxxx>
  • Subject: Re: incomplete rtti
  • From: dehnert@xxxxxxxxxxxxxxxxxxxx (Jim Dehnert)
  • Date: Tue, 4 Apr 2000 16:24:41 -0700 (PDT)

I'll try to make this clearer.  However, the sentence you complain about
is correct:

> 	After linking and loading, only one type_info structure is accessible
> 	via the external name defined by this ABI for any particular complete
> 	type symbol.

It does NOT say that no other type_info structures are accessible, only
that there's only one with the ABI-defined name.  This is true for all
types, including pointers.  Your problem is that some "complete"
pointers may reference other type_info structures.  Anyway, I've fixed
this paragraph and the next one you mention -- see what you think.

> That sentance _must_ be changed. In the language of the standard an 'A *' is
> a complete type, regardless of A.
...
> The paragraph descriping pointer equality seems to describe a rather long winded
> algorithm -- and it's incomplete as it doesn't say the cv quals must be compared.
> Why not just compare the NTBS's of the pointer types themselves? I suggest
> 
>  When abi::__pointer_type_info objects are compared for equality, if either has the
>  incomplete flag set the NTBS of the std::type_info bases must be compared. When
>  neither incomplete flag is set, the addresses of the abi::__pointer_type_info objects
>  can be compared as with the other types. The implementation of before() behaves
>  similarly.

I think the reason you can't just check the NTBS of the pointer is
precisely because of intervening CV-qualifiers.  Or do they always have
to match?  Anyway, I haven't changed this paragraph, pending better
understanding.

Jim
-	    Jim Dehnert		dehnert@xxxxxxx
				(650)933-4272