twriter.inc 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. {
  2. This file is part of the Free Component Library (FCL)
  3. Copyright (c) 1999-2000 by Michael Van Canneyt and Florian Klaempfl
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. (*Procedure TTextWriter.WriteLn(Const Msg : String);
  11. Const CRLF = #10;
  12. begin
  13. Write(Msg+CRLF);
  14. end;
  15. Procedure TTextWriter.Write(Const Msg : String);
  16. Var S : String;
  17. begin
  18. S:=FPrefix+Msg;
  19. FStream.Write(Pointer(S)^,Length(S));
  20. end;
  21. Procedure TTextWriter.WriteFmt(Fmt : String; Args : Array of const);
  22. begin
  23. Writeln(Format(Fmt,Args));
  24. end;
  25. Procedure TTextWriter.StartObject(Const AClassName, AName : String);
  26. begin
  27. WriteFmt('Object %s %s',[AName,AClassName]);
  28. FPrefix:=FPrefix+' ';
  29. end;
  30. Procedure TTextWriter.EndObject;
  31. Var L : longint;
  32. begin
  33. L:=Length(FPrefix);
  34. If L>2 Then
  35. SetLength(FPrefix,L-2);
  36. Writeln('end');
  37. end;
  38. Procedure TTextWriter.StartCollection(Const AName : String);
  39. begin
  40. WriteFmt('%s = (',[AName]);
  41. FPrefix:=FPrefix+' ';
  42. end;
  43. Procedure TTextWriter.StartCollectionItem;
  44. begin
  45. end;
  46. Procedure TTextWriter.EndCollectionItem;
  47. begin
  48. end;
  49. Procedure TTextWriter.EndCollection;
  50. Var L : longint;
  51. begin
  52. L:=Length(FPrefix);
  53. If L>2 Then
  54. SetLength(FPrefix,L-2);
  55. Writeln(')');
  56. end;
  57. Procedure TTextWriter.WritePropName(const PropName: string);
  58. begin
  59. Writeln(PropName);
  60. end;
  61. Constructor TTextWriter.Create(S : TStream);
  62. begin
  63. Inherited Create;
  64. FStream:=S;
  65. FPrefix:='';
  66. end;
  67. Destructor TTextWriter.Destroy;
  68. begin
  69. end;
  70. Procedure TTextWriter.WriteIntegerProperty(Const Name : Shortstring;Value : Longint);
  71. begin
  72. WriteFmt('%s = %d',[Name,Value]);
  73. end;
  74. Procedure TTextWriter.WriteSetProperty (Const Name : ShortString;Value : longint; BaseType : TTypeInfo);
  75. begin
  76. //!! needs implementing.
  77. WriteFmt('%s = []',[Name]);
  78. end;
  79. Procedure TTextWriter.WriteEnumerationProperty (Const Name : ShortString;Value : Longint; Const EnumName : ShortSTring);
  80. begin
  81. WriteFmt('%s = %s',[Name,EnumName])
  82. end;
  83. Procedure TTextWriter.WriteStringProperty(Const Name : ShortString; Const Value : String);
  84. Type
  85. TMode = (quoted,unquoted);
  86. Var
  87. Mode : TMode;
  88. S : String;
  89. I,L : Longint;
  90. c : char;
  91. Procedure Add (A : String);
  92. begin
  93. S:=S+A;
  94. end;
  95. begin
  96. L:=Length(Value);
  97. Mode:=unquoted;
  98. S:=Name+' = ';
  99. For I:=1 to L do
  100. begin
  101. C:=Value[i];
  102. If (ord(C)>31) and (Ord(c)<=128) and (c<>'''') then
  103. begin
  104. If mode=Quoted then
  105. Add(c)
  106. else
  107. begin
  108. Add(''''+c);
  109. mode:=quoted
  110. end
  111. end
  112. else
  113. begin
  114. If Mode=quoted then
  115. begin
  116. Add('''');
  117. mode:=unquoted;
  118. end;
  119. Add(Format('#%d',[ord(c)]));
  120. end;
  121. If Length(S)>72 then
  122. begin
  123. if mode=quoted then
  124. Add ('''');
  125. Add('+');
  126. Writeln(S);
  127. Mode:=unQuoted;
  128. end;
  129. end;
  130. if mode=quoted then Add('''');
  131. Writeln(S);
  132. end;
  133. Procedure TTextWriter.WriteFloatProperty(Const Name : ShortString; Value : Extended);
  134. begin
  135. WriteFmt('%s = %e',[Name,Value])
  136. end;
  137. Procedure TTextWriter.WriteCollectionProperty(Const Name : ShortString;Value : TCollection);
  138. begin
  139. end;
  140. Procedure TTextWriter.WriteClassProperty(Instance : TPersistent;Propinfo :PPropInfo);
  141. begin
  142. end;
  143. Procedure TTextWriter.WriteComponentProperty(Const Name : ShortSTring; Value : TComponent);
  144. begin
  145. WriteFmt ('%s = %s',[Name,Value.Name]);
  146. end;
  147. Procedure TTextWriter.WriteNilProperty(Const Name : Shortstring);
  148. begin
  149. system.Writeln(stderr,'Nil : ',Name);
  150. WriteFmt ('%s = Nil',[Name])
  151. end;
  152. Procedure TTextWriter.WriteMethodProperty(Const Name,AMethodName : ShortString);
  153. begin
  154. WriteFmt ('%s = %s',[Name,AMethodName]);
  155. end;*)