Browse Source

converter - just turns function spelling in var spelling

alex 25 years ago
parent
commit
213941063d
1 changed files with 98 additions and 0 deletions
  1. 98 0
      packages/opengl/build2/def2def.pas

+ 98 - 0
packages/opengl/build2/def2def.pas

@@ -0,0 +1,98 @@
+PROGRAM def2def;
+{ converts the rpoc section of a def file
+  from function prototye format to function varaible format
+  if not already in right form }
+
+VAR
+  Fin, Fout  : Text;
+  I, J, K, L : Word;
+  S, T, U, V : String;
+  Mode       : Word;
+
+PROCEDURE UpString(VAR S:String);
+VAR
+  I : Word;
+BEGIN
+  FOR I := 1 TO Length(S) DO
+    S[I] := UpCase(S[I]);
+END;
+
+BEGIN
+  IF ParamCount<>2 THEN
+  BEGIN
+    WriteLn('Error: Invalid parameter count');
+    WriteLn('Usage:');
+    WriteLn('  def2def [source] [destination]');
+    Halt(1);
+  END;
+
+  IF ParamStr(1)=ParamStr(2) THEN
+  BEGIN
+    WriteLn('Error: files must be different');
+    WriteLn('Usage:');
+    WriteLn('  def2def [source] [destination]');
+    Halt(1);
+  END;
+
+  Assign(Fin,ParamStr(1));
+  Reset(Fin);
+
+  Assign(Fout,ParamStr(2));
+  ReWrite(Fout);
+
+  WriteLn('Converting...');
+  Mode := 0;
+  WHILE Not(EOF(Fin)) DO
+  BEGIN
+    ReadLn(Fin,S);
+    IF Length(S)>0 THEN
+      IF S[1]='%' THEN
+      BEGIN
+        IF S='%END'            THEN Mode:=0 ELSE
+        IF S='%COPY_INTERFACE' THEN Mode:=1 ELSE
+        IF S='%PROCS'          THEN Mode:=2 ELSE
+           (* Unknown *)            Mode:=0;
+      END ELSE
+      BEGIN
+        CASE Mode OF
+          0 : { nothing };
+          1 : { nothing };
+          2 : BEGIN
+                T := S;
+                WHILE Pos(' ',T)=1 DO
+                  Delete(T,1,1);
+                I := Pos(' ',T);
+                U := Copy(T,1,I-1);
+                V := U;
+                UpString(U);
+                IF (U='PROCEDURE') OR (U='FUNCTION') THEN
+                BEGIN
+                  { this line needs swapping }
+                  Delete(T,1,I);
+                  WHILE Pos(' ',T)=1 DO
+                    Delete(T,1,1);
+                  I := Pos('(',T);
+                  J := Pos(' ',T);
+                  K := Pos(':',T);
+                  L := Pos(';',T);
+                  IF L>0 THEN
+                  BEGIN
+                    IF (I>0) AND (I<L) THEN L := I;
+                    IF (J>0) AND (J<L) THEN L := J;
+                    IF (K>0) AND (K<L) THEN L := K;
+                    Insert(': '+V,T,L);
+                    S := T;
+                  END;
+                END;
+              END;
+          ELSE { nothing };
+        END;
+      END;
+    WriteLn(Fout,S);
+  END;
+
+  Close(Fin);
+  Close(Fout);
+
+  WriteLn('Done.');
+END.