RE: Named Integers

From: CFB Software <"CFB>
Date: Sun, 21 Nov 2004 14:57:56 +1030

----boundary-LibPST-iamunique-1634540155_-_-
Content-type: text/plain

> The parameter list of MarkRect is _not_ self-documenting. All you know
> by looking at formal parameter mode is that it is an integer. All you
> know
> by looking at the CONST section is that there are some integer
> constants,
> but you have no way of knowing which of the integer constants, if any,
> is meant to be used as the mode value in MarkRect. You must search
> through
> the documentation for the explanation.
>

The proposal for named integers is worth consideration. I have a few
immediate concerns which may take a little time to think through.

In the meantime, the following technique satisfies the above requirements,
without any change to the language whatsoever, and without being too
'kludgey':

MODULE xyz;

TYPE
  MarkMode = BYTE;

VAR
  invert-, hilite-, dim25-, dim50-, dim75-: MarkMode;

...
...
PROCEDURE (f: Frame) MarkRect (l, t, r, b, s: INTEGER; mode: MarkMode; show:
BOOLEAN), NEW;
...
...

BEGIN
  invert := 0;
  hilite := 1;
  dim25 := 2;
  dim50 := 3;
  dim75 := 4;
END xyz.

Notes:

1. The variables are marked read-only so that their values cannot be altered
by client modules. They are initialised at load time so efficiency is not a
major issue.

2. Declaring MarkMode as BYTE gives some type-compatibility protection
against passing arbitrary SHORT or INTEGER variables as actual parameters to
the MarkMode parameter of the procedure.

3. The separation of the declarations from the corresponding initialisation
statements might be thought to be a concern. However, as with named
integers, the client should not even be aware of the specific values
assigned to each variable.

Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp



--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-1634540155_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwID4gVGhlIHBhcmFtZXRlciBsaXN0IG9mIE1hcmtS
ZWN0IGlzIF9ub3RfIHNlbGYtZG9jdW1lbnRpbmcuIEFsbCB5b3Uga25vd1xwYXINCj4gYnkgbG9v
a2luZyBhdCBmb3JtYWwgcGFyYW1ldGVyIG1vZGUgaXMgdGhhdCBpdCBpcyBhbiBpbnRlZ2VyLiBB
bGwgeW91XHBhcg0KPiBrbm93XHBhcg0KPiBieSBsb29raW5nIGF0IHRoZSBDT05TVCBzZWN0aW9u
IGlzIHRoYXQgdGhlcmUgYXJlIHNvbWUgaW50ZWdlclxwYXINCj4gY29uc3RhbnRzLFxwYXINCj4g
YnV0IHlvdSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoaWNoIG9mIHRoZSBpbnRlZ2VyIGNvbnN0
YW50cywgaWYgYW55LFxwYXINCj4gaXMgbWVhbnQgdG8gYmUgdXNlZCBhcyB0aGUgbW9kZSB2YWx1
ZSBpbiBNYXJrUmVjdC4gWW91IG11c3Qgc2VhcmNoXHBhcg0KPiB0aHJvdWdoXHBhcg0KPiB0aGUg
ZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGV4cGxhbmF0aW9uLlxwYXINCj5ccGFyDQpccGFyDQpUaGUg
cHJvcG9zYWwgZm9yIG5hbWVkIGludGVnZXJzIGlzIHdvcnRoIGNvbnNpZGVyYXRpb24uIEkgaGF2
ZSBhIGZld1xwYXINCmltbWVkaWF0ZSBjb25jZXJucyB3aGljaCBtYXkgdGFrZSBhIGxpdHRsZSB0
aW1lIHRvIHRoaW5rIHRocm91Z2guXHBhcg0KXHBhcg0KSW4gdGhlIG1lYW50aW1lLCB0aGUgZm9s
bG93aW5nIHRlY2huaXF1ZSBzYXRpc2ZpZXMgdGhlIGFib3ZlIHJlcXVpcmVtZW50cyxccGFyDQp3
aXRob3V0IGFueSBjaGFuZ2UgdG8gdGhlIGxhbmd1YWdlIHdoYXRzb2V2ZXIsIGFuZCB3aXRob3V0
IGJlaW5nIHRvb1xwYXINCidrbHVkZ2V5JzpccGFyDQpccGFyDQpNT0RVTEUgeHl6O1xwYXINClxw
YXINClRZUEVccGFyDQogIE1hcmtNb2RlID0gQllURTtccGFyDQpccGFyDQpWQVJccGFyDQogIGlu
dmVydC0sIGhpbGl0ZS0sIGRpbTI1LSwgZGltNTAtLCBkaW03NS06IE1hcmtNb2RlO1xwYXINClxw
YXINCi4uLlxwYXINCi4uLlxwYXINClBST0NFRFVSRSAoZjogRnJhbWUpIE1hcmtSZWN0IChsLCB0
LCByLCBiLCBzOiBJTlRFR0VSOyBtb2RlOiBNYXJrTW9kZTsgc2hvdzpccGFyDQpCT09MRUFOKSwg
TkVXO1xwYXINCi4uLlxwYXINCi4uLlxwYXINClxwYXINCkJFR0lOXHBhcg0KICBpbnZlcnQgOj0g
MDtccGFyDQogIGhpbGl0ZSA6PSAxO1xwYXINCiAgZGltMjUgOj0gMjtccGFyDQogIGRpbTUwIDo9
IDM7XHBhcg0KICBkaW03NSA6PSA0O1xwYXINCkVORCB4eXouXHBhcg0KXHBhcg0KTm90ZXM6XHBh
cg0KXHBhcg0KMS4gVGhlIHZhcmlhYmxlcyBhcmUgbWFya2VkIHJlYWQtb25seSBzbyB0aGF0IHRo
ZWlyIHZhbHVlcyBjYW5ub3QgYmUgYWx0ZXJlZFxwYXINCmJ5IGNsaWVudCBtb2R1bGVzLiBUaGV5
IGFyZSBpbml0aWFsaXNlZCBhdCBsb2FkIHRpbWUgc28gZWZmaWNpZW5jeSBpcyBub3QgYVxwYXIN
Cm1ham9yIGlzc3VlLlxwYXINClxwYXINCjIuIERlY2xhcmluZyBNYXJrTW9kZSBhcyBCWVRFIGdp
dmVzIHNvbWUgdHlwZS1jb21wYXRpYmlsaXR5IHByb3RlY3Rpb25ccGFyDQphZ2FpbnN0IHBhc3Np
bmcgYXJiaXRyYXJ5IFNIT1JUIG9yIElOVEVHRVIgdmFyaWFibGVzIGFzIGFjdHVhbCBwYXJhbWV0
ZXJzIHRvXHBhcg0KdGhlIE1hcmtNb2RlIHBhcmFtZXRlciBvZiB0aGUgcHJvY2VkdXJlLlxwYXIN
ClxwYXINCjMuIFRoZSBzZXBhcmF0aW9uIG9mIHRoZSBkZWNsYXJhdGlvbnMgZnJvbSB0aGUgY29y
cmVzcG9uZGluZyBpbml0aWFsaXNhdGlvblxwYXINCnN0YXRlbWVudHMgbWlnaHQgYmUgdGhvdWdo
dCB0byBiZSBhIGNvbmNlcm4uIEhvd2V2ZXIsIGFzIHdpdGggbmFtZWRccGFyDQppbnRlZ2Vycywg
dGhlIGNsaWVudCBzaG91bGQgbm90IGV2ZW4gYmUgYXdhcmUgb2YgdGhlIHNwZWNpZmljIHZhbHVl
c1xwYXINCmFzc2lnbmVkIHRvIGVhY2ggdmFyaWFibGUuXHBhcg0KXHBhcg0KQ2hyaXMgQnVycm93
c1xwYXINCkNGQiBTb2Z0d2FyZVxwYXINCmh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tL2dwY3Bc
cGFyDQpccGFyDQpccGFyDQpccGFyDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxwYXINClxwYXINClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBtYWlsaW5nIGxp
c3QsIHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHdvcmQgInVuc3Vic2NyaWJlIiB0bzpc
cGFyDQogICBibGFja2JveC1yZXF1ZXN0QG9iZXJvbi5jaFxwYXINClxwYXINClRvIGdldCBhIGxp
c3Qgb2YgdmFsaWQgZS1tYWlsIGNvbW1hbmRzIGFuZCBpbnN0cnVjdGlvbnMgb24gdGhlaXIgdXNh
Z2UsIHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHdvcmQgImhlbHAiIHRvIHRoZSBhYm92
ZSBhZGRyZXNzLlxwYXINClxwYXINClNlbmQgYW55IHByb2JsZW0gcmVwb3J0cyBvciBxdWVzdGlv
bnMgcmVsYXRlZCB0byB0aGlzIGVtYWlsIGxpc3QgdG8gdGhlIGxpc3Qgb3duZXIgYXRccGFyDQog
ICBvd25lci1ibGFja2JveEBvYmVyb24uY2hccGFyDQpccGFyDQpDdXJyZW50IHBvc3RpbmcgcG9s
aWN5OlxwYXINClxwYXINCmEpIFRvIHBvc3QgeW91IHNob3VsZCB1c2UgdGhlIHNhbWUgYWRkcmVz
cyBieSB3aGljaCB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIG1haWxpbmcgbGlzdC4gVGhhdCB3
YXksIHRoZSBsaXN0IHNlcnZlciB3aWxsIHJlY29nbml6ZSB5b3UgYXMgc3Vic2NyaWJlciBhbmQg
Zm9yd2FyZCB5b3VyIHBvc3RpbmcgaW1tZWRpYXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92
ZXJoZWFkLlxwYXINClxwYXINCmIpIElmLCBmb3Igc29tZSByZWFzb24sIHlvdSBjYW5ub3QgcG9z
dCBmcm9tIHRoZSBhZGRyZXNzLCBieSB3aGljaCB5b3UgYXJlIHN1YnNjcmliZWQsIHlvdXIgbWVz
c2FnZSB3aWxsIGJlIG1vZGVyYXRlZCB0byBhdm9pZCBzcGFtLiBQbGVhc2UgdW5kZXJzdGFuZCB0
aGF0IG1vZGVyYXRpb24gd2lsbCBvZnRlbiBjYXVzZSBzb21lIGRlbGF5LCBpbiBwYXJ0aWN1bGFy
IG92ZXIgd2Vla2VuZHMgb3IgaG9seWRheXMuXHBhcg0KfQ==


----boundary-LibPST-iamunique-1634540155_-_---
Received on Sun Nov 21 2004 - 05:27:56 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:30 UTC