diff --git a/src/shared/conbuf.pas b/src/shared/conbuf.pas
index 581a8818b5f1672a6a5047e9ea1d0e2d87bf2c02..a3a7ecde8c1a53f7ee7da6e1849b69f5618e1dfb 100644 (file)
--- a/src/shared/conbuf.pas
+++ b/src/shared/conbuf.pas
-(* Copyright (C) DooM 2D:Forever Developers
+(* 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
*
* 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
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
-{$MODE OBJFPC}
+{$INCLUDE a_modes.inc}
+{.$MODE OBJFPC}
unit conbuf;
interface
unit conbuf;
interface
function cbufWalkStart (): LongWord;
function cbufWalkEnd (pos: LongWord): 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);
// get last line
procedure cbufLastLine (var sp: LongWord; var ep: LongWord);
procedure cbufClear ();
procedure cbufClear ();
+var
+ conbufDumpToStdOut: Boolean = false;
+ conbufConPrefix: Boolean = true;
+
implementation
implementation
// ////////////////////////////////////////////////////////////////////////// //
// ////////////////////////////////////////////////////////////////////////// //
+var
+ needCon: Boolean = true;
+
procedure cbufPutChars (buf: PChar; count: Integer);
var
np: LongWord;
procedure cbufPutChars (buf: PChar; count: Integer);
var
np: LongWord;
begin
if count > 0 then
begin
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
Inc(changeCount);
if changeCount = 0 then changeCount := 1;
while count > 0 do
// 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;
// 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;
// ////////////////////////////////////////////////////////////////////////// //
// ////////////////////////////////////////////////////////////////////////// //