DEADSOFTWARE

mempool is optional now
[d2df-sdl.git] / src / shared / conbuf.pas
index 581a8818b5f1672a6a5047e9ea1d0e2d87bf2c02..12b0a6e71db79a8f4d9deaf16b91b2eee7ec8bb2 100644 (file)
@@ -13,7 +13,8 @@
  * 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
@@ -26,10 +27,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);
@@ -38,6 +39,10 @@ function cbufLineUp (var sp: LongWord; var ep: LongWord): Boolean;
 
 procedure cbufClear ();
 
+var
+  conbufDumpToStdOut: Boolean = false;
+  conbufConPrefix: Boolean = true;
+
 
 implementation
 
@@ -60,6 +65,9 @@ function cbufLastChange (): LongWord; begin result := changeCount; end;
 
 
 // ////////////////////////////////////////////////////////////////////////// //
+var
+  needCon: Boolean = true;
+
 procedure cbufPutChars (buf: PChar; count: Integer);
 var
   np: LongWord;
@@ -67,6 +75,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
@@ -102,10 +123,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;
 
 
 // ////////////////////////////////////////////////////////////////////////// //