Browse Source

Added a function to allow calling the splitColumns function with a command. Naming scheme a bit inconsistent, but retained for compatibility reasons.

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6937 8c9fc860-2736-0410-a75d-ab315db34111
skoster 8 years ago
parent
commit
6d69bff97c
1 changed files with 32 additions and 0 deletions
  1. 32 0
      source/FoxTRMTools.Mod

+ 32 - 0
source/FoxTRMTools.Mod

@@ -274,6 +274,38 @@ IMPORT Files,Commands,Options,Strings,Basic := FoxBasic, Diagnostics, BitSets,Ob
 		END;
 	END SplitFiles;
 
+	(*numBase words of 36 bits each are assembled to a base, and each base holds baseDiv words of 18 bits each.*)
+	PROCEDURE SplitColumnsCmd* (context: Commands.Context);  (*todo: rename as splitColumns, fix all call sites*)
+	VAR options: Options.Options;
+		name: Files.FileName;
+		insW,numB,baseD: LONGINT;
+		diagnostics: Diagnostics.StreamDiagnostics;
+		done: BOOLEAN;
+		targetName: ARRAY 128 OF CHAR;
+	BEGIN
+		NEW (options);
+		options.Add('i',"instructionWidth",Options.Integer);
+		options.Add('n',"numBases",Options.Integer);
+		options.Add('b',"baseDivider",Options.Integer);
+		options.Add('t',"target",Options.String);
+
+		IF ~options.Parse (context.arg, context.error) THEN context.result := Commands.CommandParseError; RETURN; END;
+		IF ~options.GetInteger("instructionWidth",insW) THEN insW:= 18 END;
+		IF ~options.GetInteger("numBases",numB) THEN numB:=1 END;
+		IF ~options.GetInteger("baseDivider",baseD) THEN baseD:=2 END;
+		IF ~options.GetString("target",targetName) THEN targetName:="default.mem" END;
+		NEW(diagnostics,context.out);
+		
+		diagnostics.Information("target name", 0, 0, targetName);
+		done:=TRUE;
+		WHILE done & context.arg.GetString (name) DO
+		
+			diagnostics.Information("source name", 0, 0, name);
+			done := SplitColumns(name,  targetName, insW, numB, baseD, diagnostics);
+		END;
+	END SplitColumnsCmd;
+
+
 	PROCEDURE CompareFiles*(context: Commands.Context);
 	VAR f1,f2,f3: Files.File; name1, name2, matrixname: Files.FileName; r1, r2: Files.Reader;  x,y: ARRAY 32 OF CHAR; i: LONGINT; line1: LONGINT;
 		matrix: ARRAY 16 OF ARRAY 16 OF LONGINT; j: LONGINT; p1, p2: LONGINT; writer: Files.Writer;