X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2Fconbuf.pas;h=bc7a8f7d7054803327859f9522af7e5ac138b4be;hb=987c4a835a103345b59937e8e1be8524a6228712;hp=751f39ad06596afbfec3df125271b2c30ca19f8f;hpb=25fd929e92f5bc8dcedc5a39385cf6286b9b91c6;p=d2df-sdl.git diff --git a/src/shared/conbuf.pas b/src/shared/conbuf.pas index 751f39a..bc7a8f7 100644 --- a/src/shared/conbuf.pas +++ b/src/shared/conbuf.pas @@ -1,4 +1,19 @@ -{$MODE OBJFPC} +(* Copyright (C) Doom 2D: Forever Developers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License ONLY. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *) +{$INCLUDE a_modes.inc} +{.$MODE OBJFPC} unit conbuf; interface @@ -11,10 +26,10 @@ function cbufLastChange (): LongWord; function cbufWalkStart (): LongWord; function cbufWalkEnd (pos: LongWord): LongWord; -procedure cbufPrev (var pos: LongWord); -procedure cbufNext (var pos: LongWord); +procedure cbufPrev (var pos: LongWord); inline; +procedure cbufNext (var pos: LongWord); inline; -function cbufAt (const pos: LongWord): Char; +function cbufAt (const pos: LongWord): Char; inline; // get last line procedure cbufLastLine (var sp: LongWord; var ep: LongWord); @@ -23,6 +38,10 @@ function cbufLineUp (var sp: LongWord; var ep: LongWord): Boolean; procedure cbufClear (); +var + conbufDumpToStdOut: Boolean = false; + conbufConPrefix: Boolean = true; + implementation @@ -45,6 +64,9 @@ function cbufLastChange (): LongWord; begin result := changeCount; end; // ////////////////////////////////////////////////////////////////////////// // +var + needCon: Boolean = true; + procedure cbufPutChars (buf: PChar; count: Integer); var np: LongWord; @@ -52,6 +74,19 @@ var begin if count > 0 then begin + if conbufDumpToStdOut then + begin + for np := 0 to count-1 do + begin + if needCon then + begin + if conbufConPrefix then write(stdout, 'CON: '); + needCon := false; + end; + write(stdout, buf[np]); + needCon := (buf[np] = #10); + end; + end; Inc(changeCount); if changeCount = 0 then changeCount := 1; while count > 0 do @@ -87,10 +122,10 @@ end; // warning! don't modify conbuf while the range is active! function cbufWalkStart (): LongWord; begin result := cbuftail; end; function cbufWalkEnd (pos: LongWord): LongWord; begin result := cbufhead; end; -procedure cbufPrev (var pos: LongWord); begin pos := (pos+ConBufSize-1) mod ConBufSize; end; -procedure cbufNext (var pos: LongWord); begin pos := (pos+1) mod ConBufSize; end; +procedure cbufPrev (var pos: LongWord); inline; begin pos := (pos+ConBufSize-1) mod ConBufSize; end; +procedure cbufNext (var pos: LongWord); inline; begin pos := (pos+1) mod ConBufSize; end; -function cbufAt (const pos: LongWord): Char; begin result := cbuf[pos mod ConBufSize]; end; +function cbufAt (const pos: LongWord): Char; inline; begin result := cbuf[pos mod ConBufSize]; end; // ////////////////////////////////////////////////////////////////////////// //