Site Menu Project Specification Implementation Recommendations Reference Needs Updating Work in Progress Wastebasket Wiki Manual |
Operator Binding Example For Approach 2 S-TypeDEFINITION MODULE String; (* Example library for dynamic strings using operator bindings *) TYPE String = OPAQUE ("S-Type"); (* allocator *) PROCEDURE [NEW] new ( VAR s : String ); (* Allocates a new string and passes a reference to it back in s *) (* literal assignment *) PROCEDURE [:=] assign ( VAR s : String; literal : ARRAY OF CHAR ); (* concatenation *) PROCEDURE [+] concatenate ( s1, s2 : String ) : String; (* relational operations *) PROCEDURE [=] isEqual ( s1, s2 : String ) : BOOLEAN; PROCEDURE [>] isGreater ( s1, s2 : String ) : BOOLEAN; PROCEDURE [<] isLess ( s1, s2 : String ) : BOOLEAN; (* length *) PROCEDURE [LENGTH] length ( s : String ) : LONGCARD; (* destructor *) PROCEDURE [DISPOSE] dispose ( VAR s : String ); (* Deallocates string s and passes NIL back in s *) (* IO procedures *) PROCEDURE Read ( f : File; VAR s : String ); PROCEDURE Write ( f : File; s : String ); PROCEDURE WriteF ( f : File; fmtStr : ARRAY OF CHAR; items : CARDINAL; VARIADIC v[items] OF s : String ); END String. |