fixgtk.pp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. function lower(const s : string) : string;
  2. {
  3. return lowercased string of s
  4. }
  5. var
  6. i : longint;
  7. begin
  8. for i:=1 to length(s) do
  9. if s[i] in ['A'..'Z'] then
  10. lower[i]:=char(byte(s[i])+32)
  11. else
  12. lower[i]:=s[i];
  13. lower[0]:=s[0];
  14. end;
  15. function upper(const s : string) : string;
  16. {
  17. return lowercased string of s
  18. }
  19. var
  20. i : longint;
  21. begin
  22. for i:=1 to length(s) do
  23. if s[i] in ['a'..'z'] then
  24. upper[i]:=char(byte(s[i])-32)
  25. else
  26. upper[i]:=s[i];
  27. upper[0]:=s[0];
  28. end;
  29. function trimspace(const s:string):string;
  30. var
  31. i,j : longint;
  32. begin
  33. i:=length(s);
  34. while (i>0) and (s[i] in [#9,' ']) do
  35. dec(i);
  36. j:=1;
  37. while (j<i) and (s[j] in [#9,' ']) do
  38. inc(j);
  39. trimspace:=Copy(s,j,i-j+1);
  40. end;
  41. function trimbegin(const s:string):string;
  42. var
  43. i,j : longint;
  44. begin
  45. i:=length(s);
  46. j:=1;
  47. while (j<i) and (s[j] in [#9,' ']) do
  48. inc(j);
  49. trimbegin:=Copy(s,j,i-j+1);
  50. end;
  51. procedure Replace(var s:string;const s1,s2:string;single:boolean);
  52. var
  53. last,
  54. i : longint;
  55. begin
  56. last:=0;
  57. repeat
  58. i:=pos(s1,upper(s));
  59. if i=last then
  60. i:=0;
  61. if (i>0) then
  62. begin
  63. Delete(s,i,length(s1));
  64. Insert(s2,s,i);
  65. last:=i;
  66. end;
  67. until single or (i=0);
  68. end;
  69. procedure ReplaceCase(var s:string;const s1,s2:string;single:boolean);
  70. var
  71. last,
  72. i : longint;
  73. begin
  74. last:=0;
  75. repeat
  76. i:=pos(s1,s);
  77. if i=last then
  78. i:=0;
  79. if (i>0) then
  80. begin
  81. Delete(s,i,length(s1));
  82. Insert(s2,s,i);
  83. last:=i;
  84. end;
  85. until single or (i=0);
  86. end;
  87. procedure fixreplace(var s:string);
  88. begin
  89. replace(s,'P_GTK','PGtk',false);
  90. replace(s,'= ^T_GTK','= ^TGtk',false);
  91. replace(s,'^T_GTK','PGtk',false);
  92. replace(s,'T_GTK','TGtk',false);
  93. replace(s,'^GTK','PGtk',false);
  94. replace(s,'EXTERNAL_LIBRARY','gtkdll',false);
  95. replacecase(s,' Gtk',' TGtk',false);
  96. replacecase(s,':Gtk',':TGtk',false);
  97. replace(s,'^G','PG',false);
  98. end;
  99. var
  100. t,f : text;
  101. ssmall : string[20];
  102. hs,
  103. s : string;
  104. name : string;
  105. i : word;
  106. func,
  107. impl : boolean;
  108. begin
  109. impl:=false;
  110. assign(t,paramstr(1));
  111. assign(f,'fixgtk.tmp');
  112. reset(t);
  113. rewrite(f);
  114. writeln(f,'{');
  115. writeln(f,' $Id$');
  116. writeln(f,'}');
  117. writeln(f,'');
  118. writeln(f,'{$ifndef gtk_include_files}');
  119. writeln(f,' {$define read_interface}');
  120. writeln(f,' {$define read_implementation}');
  121. writeln(f,'{$endif not gtk_include_files}');
  122. writeln(f,'');
  123. writeln(f,'{$ifndef gtk_include_files}');
  124. writeln(f,'');
  125. writeln(f,' unit ',Copy(paramstr(1),1,pos('.',paramstr(1))-1),';');
  126. writeln(f,' interface');
  127. writeln(f,'');
  128. writeln(f,' uses');
  129. writeln(f,' glib,gdkmain,');
  130. writeln(f,' gtkobjects;');
  131. writeln(f,'');
  132. writeln(f,' {$ifdef win32}');
  133. writeln(f,' const');
  134. writeln(f,' gtkdll=''gtk-1.1.dll''; { leave the .dll else .1.1 -> .1 !! }');
  135. writeln(f,' {$else}');
  136. writeln(f,' const');
  137. writeln(f,' gtkdll=''gtk.so'';');
  138. writeln(f,' {$linklib c}');
  139. writeln(f,' {$endif}');
  140. writeln(f,'');
  141. writeln(f,' Type');
  142. writeln(f,' PLongint = ^Longint;');
  143. writeln(f,' PByte = ^Byte;');
  144. writeln(f,' PWord = ^Word;');
  145. writeln(f,' PINteger = ^Integer;');
  146. writeln(f,' PCardinal = ^Cardinal;');
  147. writeln(f,' PReal = ^Real;');
  148. writeln(f,' PDouble = ^Double;');
  149. writeln(f,'');
  150. writeln(f,'{$endif not gtk_include_files}');
  151. writeln(f,'');
  152. writeln(f,'{$ifdef read_interface}');
  153. writeln(f,'');
  154. while not eof(t) do
  155. begin
  156. read(t,ssmall);
  157. fixreplace(ssmall);
  158. if (not impl) and (copy(trimspace(ssmall),1,14)='implementation') then
  159. begin
  160. impl:=true;
  161. readln(t,s);
  162. writeln(f,'{$endif read_interface}');
  163. writeln(f,'');
  164. writeln(f,'');
  165. writeln(f,'{$ifndef gtk_include_files}');
  166. writeln(f,' implementation');
  167. writeln(f,'{$endif not gtk_include_files}');
  168. writeln(f,'');
  169. writeln(f,'{$ifdef read_implementation}');
  170. writeln(f,'');
  171. continue;
  172. end;
  173. if (impl) and (copy(trimspace(ssmall),1,4)='end.') then
  174. begin
  175. writeln(f,'{$endif read_implementation}');
  176. writeln(f,'');
  177. writeln(f,'');
  178. writeln(f,'{$ifndef gtk_include_files}');
  179. writeln(f,'end.');
  180. writeln(f,'{$endif not gtk_include_files}');
  181. writeln(f,'');
  182. writeln(f,'{');
  183. $Log$
  184. Revision 1.2 2000-07-13 11:33:18 michael
  185. + removed logs
  186. }