Tim Ellison wrote: > Geir Magnusson Jr wrote: >> Tim Ellison wrote: >>> This function is (deliberately) not exported from the hyprt.dll so you >>> cannot call it directly. You have to call it via the function pointer >>> table ... >> That's the missing element - it's not exported. > > The idea is that code should always go via the function table so that > your caller can control your use of these functions.
Yes - exactly. That makes perfect sense to me. > >>> Of course, you can reference that member directly if you so choose, and >>> as written elsewhere if you are dealing with multiple tables the >>> syntactic sugar doesn't help and you must reference it in full. >> When would you have multiple tables? > > Very rarely (Jimmy brought it up, so maybe he has an example). It would > be more common to modify the table before you pass it on, to include a > function that has more debug info (like the callsite version we saw > earlier), or allocates from a given memory pool, or limits the amount of > resource you can have, runs on a certain processor, etc. etc. > >>> I guess that the confusion is caused by the HyPortLib struct containing >>> a member called 'mem_allocate_memory' that has the address of a function >>> called 'hymem_allocate_memory'? >> really it was having a macro and a function named the same, differing >> only by a number of arguments where the macro expanded out to what has >> the potential of being something very different than the function >> because of the function table. It wasn't obvious that the function >> wasn't exported (of course). > > Right. As you see, the macro names follow a convention that matches the > default table value function name -- once you are comfortable with that > programming using the macros is not much different to programming direct > to the function itself (modulo first portlib arg). I don't mind the macros, I just think the actual function should be named something different than the macro and have some docs to stem confusion from other readers in the future. Yea/nea? geir --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]