Modula-2 Reloaded

A Modern Typesafe & Literate Programming Notation

Site Menu

Project

Specification

Implementation

Recommendations

Reference

Needs Updating

Work in Progress

Wastebasket

Wiki Manual

edit SideBar

Type STRING

WiP.TypeSTRING History

Hide minor edits - Show changes to output

2010-04-16 09:15 by benjk -
Changed lines 2-9 from:
DEFINITION MODULE String;

(* dynamic strings *)

TYPE String = OPAQUE RECORD ("S-Type")
    capacity  : CARDINAL;
    character : ARRAY capacity OF CHAR;
END; (* String *)
to:
DEFINITION MODULE String ("S-Type");

(
* Example library for dynamic strings using operator bindings *)

TYPE String = OPAQUE
;
2010-04-06 17:08 by benjk -
Changed lines 12-17 from:
(* type *)

CONST [TYPE] semanticModel = 'S'; (* obsolete *)


(* assignment *)
to:
(* length *)

PROCEDURE [LENGTH] length ( s : String ) : LONGCARD;


(* literal assignment *)
2010-04-05 12:20 by benjk -
Changed line 6 from:
TYPE String = OPAQUE RECORD
to:
TYPE String = OPAQUE RECORD ("S-Type")
Changed line 14 from:
CONST [TYPE] semanticModel = 'S';
to:
CONST [TYPE] semanticModel = 'S'; (* obsolete *)
2010-04-04 09:48 by benjk -
Changed line 14 from:
CONST [S] isStringType = TRUE; (* or some other syntax *)
to:
CONST [TYPE] semanticModel = 'S';
2010-04-02 05:53 by benjk -
Changed line 43 from:
               items : CARDINAL; VARIADIC v[items] OF s : String );
to:
                 items : CARDINAL; VARIADIC v[items] OF s : String );
2010-04-02 05:51 by benjk -
Added lines 4-5:
(* dynamic strings *)
Added line 11:
Added line 16:
Added line 21:
Added line 26:
Added line 34:
2010-04-02 05:43 by benjk -
Changed line 5 from:
   capacity   : CARDINAL;
to:
   capacity  : CARDINAL;
2010-04-02 05:43 by benjk -
Added lines 1-38:
[@
DEFINITION MODULE String;

TYPE String = OPAQUE RECORD
    capacity  : CARDINAL;
    character : ARRAY capacity OF CHAR;
END; (* String *)

(* type *)

CONST [S] isStringType = TRUE; (* or some other syntax *)

(* 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;

(* 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.@]