Site Menu Project Specification Implementation Recommendations Reference Needs Updating Work in Progress Wastebasket Wiki Manual |
Operator Binding Example For Approach 2 Z-TypeWiP.OperatorBindingExampleForApproach2Z-Type HistoryHide minor edits - Show changes to output 2010-04-16 09:38
by -
Changed line 3 from:
(* Example to:
(* Example library for a signed integer type using operator bindings *) 2010-04-16 09:37
by -
Changed lines 26-28 from:
PROCEDURE [:=] assign ( VAR assignTo : to:
PROCEDURE [:=] assign ( VAR assignTo : INT; literal : ARRAY OF CHAR ); Changed lines 31-37 from:
PROCEDURE [::] toCARD ( n : PROCEDURE [::] toINT ( n : PROCEDURE [::] toREAL ( n : to:
PROCEDURE [::] toCARD ( n : INT ) : CARDINAL; PROCEDURE [::] toINT ( n : INT ) : INTEGER; PROCEDURE [::] toREAL ( n : INT ) : REAL; Changed lines 40-44 from:
PROCEDURE [::] fromCARD ( n : CARDINAL ) : PROCEDURE [::] fromINT ( n : INTEGER ) : to:
PROCEDURE [::] fromCARD ( n : CARDINAL ) : INT; PROCEDURE [::] fromINT ( n : INTEGER ) : INT; Changed lines 47-53 from:
PROCEDURE [ABS] abs ( n : PROCEDURE [NEG] neg ( n : PROCEDURE [ODD] odd ( n : to:
PROCEDURE [ABS] abs ( n : INT ) : INT; PROCEDURE [NEG] neg ( n : INT ) : INT; PROCEDURE [ODD] odd ( n : INT ) : BOOLEAN; Changed lines 56-66 from:
PROCEDURE [+] add ( n, m : PROCEDURE [-] sub ( n, m : PROCEDURE [*] multiply ( n, m : PROCEDURE [DIV] divide ( n, m : PROCEDURE [MOD] modulo ( n, m : to:
PROCEDURE [+] add ( n, m : INT ) : INT; PROCEDURE [-] sub ( n, m : INT ) : INT; PROCEDURE [*] multiply ( n, m : INT ) : INT; PROCEDURE [DIV] divide ( n, m : INT ) : INT; PROCEDURE [MOD] modulo ( n, m : INT ) : INT; Changed lines 69-75 from:
PROCEDURE [=] isEqual ( n, m : PROCEDURE [<] isLess ( n, m : PROCEDURE [>] isGreater ( n, m : to:
PROCEDURE [=] isEqual ( n, m : INT ) : BOOLEAN; PROCEDURE [<] isLess ( n, m : INT ) : BOOLEAN; PROCEDURE [>] isGreater ( n, m : INT ) : BOOLEAN; Deleted lines 77-78:
Changed lines 80-86 from:
PROCEDURE [TO] toSXF ( n : (* convert PROCEDURE [FROM] fromSXF ( VAR n : (* convert a string in scalar exchange format to to:
PROCEDURE [TO] toSXF ( n : INT; VAR s : ARRAY OF CHAR ); (* convert an INT value to a string in scalar exchange format *) PROCEDURE [FROM] fromSXF ( VAR n : INT; s : ARRAY OF CHAR ); (* convert a string in scalar exchange format to an INT value *) Changed lines 89-90 from:
PROCEDURE Read( infile : File; VAR b : (* Reads the textual representation of to:
PROCEDURE Read( infile : File; VAR b : INT ); (* Reads the textual representation of an INT value in simple format from input stream infile Changed lines 100-101 from:
items : CARDINAL; VARIADIC v[items] OF b : (* Writes a formatted textual representation of one or more to:
items : CARDINAL; VARIADIC v[items] OF b : INT ); (* Writes a formatted textual representation of one or more INT values to output stream outfile. The Changed line 104 from:
END to:
END INT.@] 2010-04-16 09:35
by -
Added lines 1-106:
[@DEFINITION MODULE INT; (* Example of a signed integer type *) FROM FileIO IMPORT File; (* required for IO *) (* INT type *) TYPE SampleINT = OPAQUE RECORD ("Z-Type") value : ARRAY 2 OF OCTET; (* 16 bits *) END; (* range *) CONST [TMIN] minValue = -32768; CONST [TMAX] maxValue = 32767; (* assignment *) PROCEDURE [:=] assign ( VAR assignTo : SampleINT; literal : ARRAY OF CHAR ); (* type conversions *) PROCEDURE [::] toCARD ( n : SampleINT ) : CARDINAL; PROCEDURE [::] toINT ( n : SampleINT ) : INTEGER; PROCEDURE [::] toREAL ( n : SampleINT ) : REAL; (* experimental *) PROCEDURE [::] fromCARD ( n : CARDINAL ) : SampleINT; PROCEDURE [::] fromINT ( n : INTEGER ) : SampleINT; (* monadic arithmetic operations *) PROCEDURE [ABS] abs ( n : SampleINT ) : SampleINT; PROCEDURE [NEG] neg ( n : SampleINT ) : BOOLEAN; PROCEDURE [ODD] odd ( n : SampleINT ) : BOOLEAN; (* dyadic arithmetic operations *) PROCEDURE [+] add ( n, m : SampleINT ) : SampleINT; PROCEDURE [-] sub ( n, m : SampleINT ) : SampleINT; PROCEDURE [*] multiply ( n, m : SampleINT ) : SampleINT; PROCEDURE [DIV] divide ( n, m : SampleINT ) : SampleINT; PROCEDURE [MOD] modulo ( n, m : SampleINT ) : SampleINT; (* relational operations *) PROCEDURE [=] isEqual ( n, m : SampleINT ) : BOOLEAN; PROCEDURE [<] isLess ( n, m : SampleINT ) : BOOLEAN; PROCEDURE [>] isGreater ( n, m : SampleINT ) : BOOLEAN; (* scalar conversion primitives *) CONST stdINT = TRUE; (* experimental *) CONST digitCapacity = 4; (* total digits in native radix *) PROCEDURE [TO] toSXF ( n : SampleINT; VAR s : ARRAY OF CHAR ); (* convert a SampleINT value to a string in scalar exchange format *) PROCEDURE [FROM] fromSXF ( VAR n : SampleINT; s : ARRAY OF CHAR ); (* convert a string in scalar exchange format to a SampleINT value *) (* IO operations, bound to READ, WRITE and WRITEF *) PROCEDURE Read( infile : File; VAR b : SampleINT ); (* Reads the textual representation of a SampleINT value in simple format from input stream infile - any leading whitespace is skipped - any remaining characters that are part of the numeral being read are removed from infile - the numeric value of the numeral string read is assigned to the variable passed in for b - the file status is set to any of success, outOfRange, wrongFormat, endOfLine, or endOfInput *) PROCEDURE Write( outfile : File; b : SampleINT ); (* Writes the textual representation of value b in simple format to output stream outfile *) PROCEDURE WriteF( outfile : File; fmtStr : ARRAY OF CHAR; items : CARDINAL; VARIADIC v[items] OF b : SampleINT ); (* Writes a formatted textual representation of one or more SampleINT values to output stream outfile. The value of parameter items is calculated and inserted automatically. The output format is determined by fmtStr. *) END SampleINT.@] |