Skip navigation.
 
mlRe: Struct introspection or information
FROM : Steve Christensen
DATE : Tue Nov 06 22:08:44 2007

Well, there's nothing preventing you from disassembling code that 
references the structure fields to determine the offsets and sizes...


On Nov 6, 2007, at 12:04 PM, Monitus wrote:

> Right - I thought that's what I understood too... I was just 
> wondering if maybe there was a way to somehow access the values in 
> a struct "instance" by offset or something... But I guess if I 
> can't know the size of each field, offsets are not usable either...
>
> Thanks!
>
> Jean.
>
> On Nov 6, 2007, at 1:28 PM, Steve Christensen wrote:
>

>> The main issue is that a structure declaration is last used by the 
>> compiler to determine how to allocate memory for a structure 
>> instance, and what the offset and size of a field is so it can be 
>> accessed correctly. Once the assembly instructions corresponding 
>> to the original C statements has been generated there's no further 
>> need to know what the fields were named or what they actually 
>> refer to.
>>
>>
>> On Nov 6, 2007, at 8:25 AM, Monitus wrote:
>>

>>> Thank you to all who replied... Yes, the original problem stated 
>>> that I didn't have access to any kind of structure definition... 
>>> Still, I tried the @encode suggestion, and it looks like it gave 
>>> me an incomplete result - like @encode(struct __MyStruct) gave 
>>> "{__My"... Strange... Anyway, I'm now looking for other ways of 
>>> doing what I need to do, a I seriously doubt i can get to the 
>>> structure info...
>>>
>>> Thanks again!
>>>
>>> Jean.
>>>
>>> On Nov 5, 2007, at 8:53 PM, Steve Christensen wrote:
>>>

>>>> I may have misunderstood, but I thought the OP mentioned not 
>>>> having access to the headers that define certain C structs. If 
>>>> that's the case, we're talking about opaque structures from the 
>>>> point of view of the caller, right?
>>>>
>>>>
>>>> On Nov 5, 2007, at 4:34 PM, David Spooner wrote:
>>>>

>>>>>
>>>>> You might get some mileage out of the @encode() directive.  It 
>>>>> produces a c-string encoding of a c type, which (with 
>>>>> significant effort) can be parsed in order to traverse a c 
>>>>> structure of that type.  These encodings do not contain the 
>>>>> field names of structures, but they often contain structure tag 
>>>>> names...
>>>>>
>>>>> More information is available in the section "Type Encodings" of
>>>>> The Objective-C 2.0 Programming Language
>>>>>
>>>>> dave
>>>>>
>>>>> On 5-Nov-07, at 1:33 PM, Monitus wrote:
>>>>>

>>>>>> Good day everyone - sorry if this is not totally Cocoa-
>>>>>> related: if there's a better list for this, please let me know 
>>>>>> and accept my apologies in advance...
>>>>>>
>>>>>> Is there any way to know the fields in a C structure, if you 
>>>>>> don't have the headers that define it? Or at the very least, 
>>>>>> is it possible to access it's field values?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> Jean Le Clerc.

Related mailsAuthorDate
mlStruct introspection or information Monitus Nov 5, 21:33
mlRe: Struct introspection or information John Stiles Nov 5, 21:57
mlRe: Struct introspection or information Steve Christensen Nov 5, 23:14
mlRe: Struct introspection or information David Spooner Nov 6, 01:34
mlRe: Struct introspection or information Steve Christensen Nov 6, 02:53
mlRe: Struct introspection or information Steve Christensen Nov 6, 19:28
mlRe: Struct introspection or information Steve Christensen Nov 6, 22:08