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 markup

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.