Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!decwrl!bacchus.pa.dec.com!rust.zso.dec.com!shlump.nac.dec.com!mountn.dec.com!minow From: minow@mountn.dec.com (Martin Minow) Newsgroups: comp.sys.mac.programmer Subject: Re: THINK C Suggestions Message-ID: <1966@mountn.dec.com> Date: 12 Oct 90 22:57:18 GMT References: <90283.224058CXT105@psuvm.psu.edu> <16704@thorin.cs.unc.edu> Reply-To: minow@bolt.enet.dec.com (Martin Minow) Organization: Digital Equipment Corporation Lines: 34 In article <16704@thorin.cs.unc.edu> morse@currituck.cs.unc.edu (Bryan Morse) writes: >The general question is: how do you efficiently (using C notation) >double-dereference handles and access structure members, especially >when chaining handle dereferences? Define your handle-based structures as follows: typedef struct Mumble { int mumble; } MumbleRec, *MumblePtr, **MumbleHdl; /* * The MumbleRec is always accessed using the * mumbleHandle local variable. Thus, any * element in the structure may be accessed * using the following macro. */ #define MBL (**mumbleHandle) Now, your subroutine is just void IncrementMumble( register MumbleHdl mumbleHandle ) { ++MBL.mumble; } It's that simple. Martin Minow minow@bolt.enet.dec.com