123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- {$mode objfpc}
- {$H+}
- uses
- sysutils;
- Function PosIdx (Const Substr : AnsiString; Const Source : AnsiString;i:longint) : Longint;
- var
- S : String;
- begin
- PosIdx:=0;
- if Length(SubStr)=0 then
- exit;
- while (i <= length (Source) - length (substr)) do
- begin
- inc (i);
- S:=copy(Source,i,length(Substr));
- if S=SubStr then
- exit(i);
- end;
- end;
- function trimspace(const s:string):string;
- var
- i,j : longint;
- begin
- i:=length(s);
- while (i>0) and (s[i] in [#9,' ']) do
- dec(i);
- j:=1;
- while (j<i) and (s[j] in [#9,' ']) do
- inc(j);
- trimspace:=Copy(s,j,i-j+1);
- end;
- function trimbegin(const s:string):string;
- var
- i,j : longint;
- begin
- i:=length(s);
- j:=1;
- while (j<i) and (s[j] in [#9,' ']) do
- inc(j);
- trimbegin:=Copy(s,j,i-j+1);
- end;
- procedure Replace(var s:string;const s1,s2:string);
- var
- last,
- i : longint;
- begin
- last:=0;
- repeat
- i:=posidx(s1,uppercase(s),last);
- if (i>0) then
- begin
- Delete(s,i,length(s1));
- Insert(s2,s,i);
- last:=i+1;
- end;
- until (i=0);
- end;
- procedure Conv(const fn: string);
- var
- t,f : text;
- lasts,funcname,
- s,ups : string;
- k,i,j : integer;
- gotisfunc,
- impl : boolean;
- begin
- writeln('processing ',fn);
- assign(t,fn);
- assign(f,'fixgdk.tmp');
- reset(t);
- rewrite(f);
- funcname:='';
- gotisfunc:=false;
- impl:=false;
- while not eof(t) do
- begin
- readln(t,s);
- Replace(s,'PROCEDURE','procedure');
- Replace(s,'FUNCTION','function');
- Replace(s,'FUNCTION ','function ');
- Replace(s,'PPG','PPG');
- Replace(s,'PG','PG');
- Replace(s,'GCHAR','gchar');
- Replace(s,'GUCHAR','guchar');
- Replace(s,'GINT','gint');
- Replace(s,'GUINT','guint');
- Replace(s,'GBOOL','gbool');
- Replace(s,'GSHORT','gshort');
- Replace(s,'GUSHORT','gushort');
- Replace(s,'GLONG','glong');
- Replace(s,'GULONG','gulong');
- Replace(s,'GFLOAT','gfloat');
- Replace(s,'GDOUBLE','gdouble');
- Replace(s,'GPOINTER','gpointer');
- Replace(s,'GCONSTPOINTER','gconstpointer');
- ups:=UpperCase(s);
- if Pos('IMPLEMENTATION',ups)>0 then
- impl:=true;
- i:=Pos('PROCEDURE',ups);
- if i>0 then
- if Pos('_PROCEDURE',ups)>0 then
- i:=0;
- if i=0 then
- begin
- i:=Pos('FUNCTION',ups);
- if Pos('_FUNCTION',ups)>0 then
- i:=0;
- end;
- if i<>0 then
- begin
- { Remove Spaces }
- j:=PosIdx(' ',s,i);
- while (j>0) do
- begin
- Delete(s,j,1);
- i:=j-1;
- j:=PosIdx(' ',s,i);
- end;
- ups:=UpperCase(s);
- { Fix Cdecl }
- if (Pos('g_',s)<>0) or
- ((i>2) and (s[i-2] in [':','='])) then
- begin
- j:=Pos('CDECL;',ups);
- if j=0 then
- j:=Length(s)+1
- else
- begin
- k:=Pos('{$IFNDEF WIN32}CDECL;{$ENDIF}',ups);
- if k>0 then
- begin
- j:=k;
- k:=29;
- end
- else
- begin
- k:=Pos('{$IFDEF WIN32}STDCALL;{$ELSE}CDECL;{$ENDIF}',ups);
- if k>0 then
- begin
- j:=k;
- k:=43;
- end
- else
- k:=6;
- end;
- Delete(s,j,k);
- end;
- Insert('cdecl;',s,j);
- end;
- ups:=UpperCase(s);
- end;
- { Align function with procedure }
- if Copy(s,1,8)='function' then
- Insert(' ',s,9);
- lasts:=s;
- writeln(f,s);
- end;
- close(f);
- close(t);
- erase(t);
- rename(f,fn);
- end;
- var
- i : integer;
- dir : tsearchrec;
- begin
- for i:=1to paramcount do
- begin
- if findfirst(paramstr(i),$20,dir)=0 then
- repeat
- Conv(dir.name);
- until findnext(dir)<>0;
- findclose(dir);
- end;
- end.
- $Log$
- Revision 1.2 2000-07-13 11:33:18 michael
- + removed logs
-
- }
|