Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!utgpu!water!watmath!clyde!rutgers!cmcl2!nrl-cmf!ames!oliveb!intelca!mipos3!cpocd2!howard
From: howard@cpocd2.UUCP
Newsgroups: comp.sys.mac
Subject: Re: Help wanted:  a LSC question
Message-ID: <1005@cpocd2.UUCP>
Date: Thu, 3-Dec-87 13:24:10 EST
Article-I.D.: cpocd2.1005
Posted: Thu Dec  3 13:24:10 1987
Date-Received: Sun, 6-Dec-87 21:08:04 EST
References: <870053@hpcilzb.HP.COM> <3424@husc6.harvard.edu>
Reply-To: howard@cpocd2.UUCP (Howard A. Landman)
Organization: Intel Corp. ASIC Systems Organization, Chandler AZ
Lines: 39

>In article <870053@hpcilzb.HP.COM> tedj@hpcilzb.HP.COM (Ted Johnson) writes:
>>Can someone tell me what I'm doing wrong here?  Using Lightspeed C v.2.11,
>>I tried to do the following:
>>
>>		tempPoint = aRect.topLeft;
>>
>>When I tried to compile this, I got the error message: 
>>	"Wrong number of arguments to macro topLeft"

In article <3424@husc6.harvard.edu> singer@endor.UUCP (THINK Technologies) writes:
>	You're getting confused between C and Pascal. In C there's no easy
>way to get at the variants of a record.

Assuming something like:

	typedef struct {int x, y;} point;

one way of describing a rectangle which would allow easy access is:

	typedef union
	{
		struct {int top, left, bottom, right;}	ints;
		struct {point topLeft, bottomRight;}	points;
	} rectangle;

which would allow references of the form:

	tempPoint = aRect.points.topLeft;
	tempInt = aRect.ints.top;

Note that this doesn't require the overhead of an extra variable to
keep track of variants.  Admittedly, Ted got confused, but that's no
reason to make incorrect accusations about C.

-- 
	Howard A. Landman
	{oliveb,hplabs}!intelca!mipos3!cpocd2!howard
	howard%cpocd2.intel.com@RELAY.CS.NET
	"I'm sorry, Dave, but I can't do that."