DIRECTORY Environment, ByteBlt, Rope, RopeEditingBLT; RopeEditingBLTImpl: CEDAR PROGRAM IMPORTS ByteBlt EXPORTS RopeEditingBLT = BEGIN OPEN RopeEditingBLT; ArrayToArrayBlt: PUBLIC PROC [ from: REF READONLY CharsArray, fromLoc: NAT, to: REF CharsArray, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc], from:[from,fromLoc], nBytes:nLeft]}; ArrayToTextBlt: PUBLIC PROC [ from: REF READONLY CharsArray, fromLoc: NAT, to: Text, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc+TextCharOffset], from:[from,fromLoc], nBytes:nLeft]}; ArrayToStringBlt: PUBLIC PROC [ from: REF READONLY CharsArray, fromLoc: NAT, to: String, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc+StringCharOffset], from:[from,fromLoc], nBytes:nLeft]}; TextToArrayBlt: PUBLIC PROC [ from: Text, fromLoc: NAT, to: REF CharsArray, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc], from:[from,fromLoc+TextCharOffset], nBytes:nLeft]}; StringToArrayBlt: PUBLIC PROC [ from: REF READONLY TEXT, fromLoc: NAT, to: REF CharsArray, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc], from:[from,fromLoc+StringCharOffset], nBytes:nLeft]}; TextToTextBlt: PUBLIC PROC [ from: Text, fromLoc: NAT, to: Text, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc+TextCharOffset], from:[from,fromLoc+TextCharOffset], nBytes:nLeft]}; TextToStringBlt: PUBLIC PROC [ from: Text, fromLoc: NAT, to: String, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc+StringCharOffset], from:[from,fromLoc+TextCharOffset], nBytes:nLeft]}; StringToStringBlt: PUBLIC PROC [ from: REF READONLY TEXT, fromLoc: NAT, to: String, toLoc: NAT, nChars: NAT] = { nLeft: NAT; IF nChars=0 THEN RETURN; nLeft _ nChars-1; to[toLoc+nLeft] _ from[fromLoc+nLeft]; -- bounds check MyByteBlt[to:[to,toLoc+StringCharOffset], from:[from,fromLoc+StringCharOffset], nBytes:nLeft]}; ByteBlock: TYPE = RECORD [block: REF ANY, startIndex: NAT]; ROByteBlock: TYPE = RECORD [block: REF READONLY ANY, startIndex: NAT]; StringCharOffset: NAT = SIZE[TEXT[0]]*2; TextCharOffset: NAT = SIZE[Rope.TextRep[0]]*2; MyByteBlt: PROC [to: ByteBlock, from: ROByteBlock, nBytes: NAT] = INLINE { eTo, eFrom: Environment.Block; IF nBytes=0 THEN RETURN; eTo.blockPointer _ LOOPHOLE[to.block]; eFrom.blockPointer _ LOOPHOLE[from.block]; eTo.startIndex _ to.startIndex; eFrom.startIndex _ from.startIndex; eTo.stopIndexPlusOne _ to.startIndex+nBytes; eFrom.stopIndexPlusOne _ from.startIndex+nBytes; TRUSTED {[] _ ByteBlt.ByteBlt[eTo,eFrom]}}; END. Î-- RopeEditingBLTImpl.Mesa; written by Bill Paxton, March 1981 -- edited by Paxton, 10-Feb-82 9:13:35 -- edited by McGregor, February 8, 1983 11:08 am -- edited by Maxwell, January 5, 1983 12:11 pm Ê£˜JšÏc?™?Jš'™'Jš0™0Jš œ"™.J˜šÏk ˜ J˜ J˜J˜J˜J˜—šœž ˜!Jšžœ˜Jšžœ˜—Jšžœžœ˜J˜šÏnœžœžœ˜Jšœžœžœžœ˜,Jšœžœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6J˜=J˜—šŸœžœžœ˜Jšœžœžœžœ˜,Jšœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜'J˜$J˜——šŸœžœžœ˜Jšœžœžœžœ˜,Jšœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜)J˜$J˜——šŸœžœžœ˜Jšœžœ˜Jšœžœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜J˜3J˜——šŸœžœžœ˜Jš œžœžœžœ žœ˜&Jšœžœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜J˜5J˜——šŸ œžœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜'J˜3J˜——šŸœžœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜)J˜3J˜——šŸœžœžœ˜ Jš œžœžœžœ žœ˜&Jšœžœ˜Jšœžœ˜Jšœžœ˜ Jšžœ žœžœ˜J˜Jšœ'˜6˜)J˜5J˜——Jš œ žœžœ žœžœžœ˜;Jš œ žœžœ žœžœžœžœ˜FJšœžœžœžœ˜(Jšœžœžœ˜.J˜šŸ œžœ,žœžœ˜JJ˜Jšžœ žœžœ˜Jšœžœ ˜&Jšœžœ ˜*J˜J˜#J˜,J˜0Jšžœ$˜+J˜—Jšžœ˜J˜—…— Š