source: branches/textos/UTextBuffer.pas

Last change on this file was 53, checked in by chronos, 6 months ago
  • Added: Experimental textos computer.
File size: 950 bytes
Line 
1unit UTextBuffer;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, SyncObjs;
9
10type
11 { TTextBuffer }
12
13 TTextBuffer = class
14 Buffer: string;
15 Lock: TCriticalSection;
16 procedure Write(Text: string);
17 function Read: string;
18 function Size: Integer;
19 constructor Create;
20 destructor Destroy; override;
21 end;
22
23
24implementation
25
26{ TTextBuffer }
27
28procedure TTextBuffer.Write(Text: string);
29begin
30 Lock.Acquire;
31 try
32 Buffer := Buffer + Text;
33 finally
34 Lock.Release;
35 end;
36end;
37
38function TTextBuffer.Read: string;
39begin
40 Lock.Acquire;
41 try
42 Result := Buffer;
43 Buffer := '';
44 finally
45 Lock.Release;
46 end;
47end;
48
49function TTextBuffer.Size: Integer;
50begin
51 Lock.Acquire;
52 try
53 Result := Length(Buffer);
54 finally
55 Lock.Release;
56 end;
57end;
58
59constructor TTextBuffer.Create;
60begin
61 Lock := TCriticalSection.Create;
62end;
63
64destructor TTextBuffer.Destroy;
65begin
66 FreeAndNil(Lock);
67 inherited;
68end;
69
70
71end.
72
Note: See TracBrowser for help on using the repository browser.