<html><head><base href="x-msg://2636/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><span class="Apple-style-span" style="font-size: medium;"><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'">Steady on.  I have it fixed.  CHeckin coming.  No need for more.</font></span></div></span></span></span></span></span></span></span></span></div></span></span>
</div>
<br><div><div>On 11 Feb 2010, at 07:05, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; ">TInt/TWord proposal<br> <br><br>TInt needs to be a "complete" replacement for INTEGER and LONGINT.<br> Plus overflow checking.<br> Not just for the frontend, but also m3back.<br><br> <br>TWord needs to be a "complete" replacement for Word and Long.<br> Therefore not likely any overflow checking.<br><br> <br>But in reality you might need all four:<br>  signed with silent overflow<br>  signed with nonsilent overflow<br>  unsigned with silent overflow<br>  unsigned with nonsilent overflow<br> <br><br>You can provide silent overflow by computing the result<br>and leaving it to the caller to ignore the BOOLEAN or not.<br> <br><br>However in practise I don't think I needed silent overflow at all.<br>The only places I allow it, I think really I'm confusing TInt with TWord,<br>because TWord doesn't provide the right interface.<br> <br> <br>Settle on bits or bytes for sizes.<br>Enshrine it mostly in the public interface.<br> It maybe already is, granted.<br> But more so -- external users can construct the things.<br> <br><br>Operations with mixed sizes shall not be allowed.  <=== *****<br>  Just as INTEGER, LONGINT, Word, Long don't allow.<br> <br> <br>There would be some conversion functions, granted.<br>SignedTruncate, UnsignedTruncate, SignExtend, ZeroExtend.<br> <br> <br>Constants Zero, One, MOne, etc. shall probably be<br>replaced with an array of 8 each, or maybe just<br>1, 2, 4, 8 -- the number of bytes in the size.<br> <br><br>"M" for "minus" is the wrong term.<br>It should N or Neg or Negative.<br><br> <br>Something like:<br>TYPE BitCount = [8, 16, 32, 64]; (* not legal, darn *)<br>TYPE ByteCount = [1, 2, 4, 8]; (* also not legal, darn *)<br>TYPE ByteCount = [1..8]; (* wasteful, darn *)<br><br>CONST Invalid = Target.Int{-1,IntBytes{0,..}};<br> <br>CONST ZeroBytes = IntBytes{0,..};<br>CONST OneBytes = IntBytes{1,0,..};<br>CONST NegativeOneBytes = IntBytes{16_FF,..};<br>CONST ThirtyTwoBytes = IntBytes{32,0,..};<br>etc.<br> <br>CONST Zero = ARRAY ByteCount OF { Target.Int{1,ZeroBytes}, Target.Int{2,ZeroBytes}, Invalid, Target.Int{4,ZeroBytes}, Invalid, Invalid,<br> Invalid, Target.Int{8,ZeroBytes}};<br> <br>CONST One = ARRAY ByteCount OF { Target.Int{1,OneBytes}, Target.Int{2,OneBytes}, Invalid, Target.Int{4,OneBytes}, Invalid, Invalid,<br> Invalid, Target.Int{8,OneBytes}};<br>etc.<br><br> <br>TInt.Zero becomes replaced by, e.g. TInt.Zero[Target.Integer.bytes] or TInt.Zero[Target.Longint.bytes]<br> <br><br>MAYBE as a possible simplification to the user:<br><br>Introduce InternalTInt which is today's TInt and then:<br>TInt implies Target.Integer.bytes<br>TWord implies Target.Integer.bytes<br>new TLongint implies Target.Longint.bytes<br>new TLong implies Target.Longint.bytes<br> <br><br>I really thing the short name "Long" is bad.<br>There is no indication of unsignedness in it.<br>It should be ULong or UnsignedLong or LongWord.<br><br> <br>"Word" is to INTEGER as what is to LONGINT?<br> I don't think Long is the answer.<br>I'll start another thread on this.<br> <br> <br>m3back maintains a stack of mixed types, but I think it works out ok.<br> <br> <br>All that being said, I think what is there works and isn't terrible<br>and we don't need to solve lots of problems here.<br> <br> <br>I do think the variable sizing is a bit of a problem though.<br> <br> <br> - Jay<br><br></div></span></blockquote></div><br></body></html>