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

OO Stack

Spec.OOStack History

Hide minor edits - Show changes to output

2010-01-11 10:51 by benjk -
Added lines 13-22:

(* or should this be something like ...

    Stack = RECORD
        (* field declarations *)
    END;

  or perhaps ...

    Stack = OPAQUE RECORD; *)
2010-01-11 07:28 by benjk -
Changed lines 14-24 from:
PROCEDURE ( self : Stack ) new ( initialSize : LONGCARD; VAR status : Status ) : Stack;

PROCEDURE ( self : Stack ) push ( stack : Stack; value : CollectionData; VAR status : Status );

PROCEDURE ( self : Stack ) pop ( stack
: Stack; VAR status : Status ) : CollectionData;

PROCEDURE ( self : Stack ) capacity ( stack : Stack) : LONGCARD;

PROCEDURE ( self : Stack ) numberOfEntries ( stack : Stack ) : LONGCARD;

PROCEDURE ( self : Stack ) dispose ( VAR stack : Stack )
;
to:
PROCEDURE ( self : Stack ) New ( initialSize : LONGCARD; VAR status : Status ) : Stack;

PROCEDURE ( self : Stack ) Push ( value : CollectionData; VAR status : Status );

PROCEDURE ( self : Stack
) Pop ( VAR status : Status ) : CollectionData;

PROCEDURE ( self
: Stack ) Capacity : LONGCARD;

PROCEDURE ( self : Stack ) NumberOfEntries : LONGCARD;

PROCEDURE ( self
: Stack ) Dispose;
2010-01-11 07:02 by benjk - object oriented version of Stack
Added lines 1-26:
[@DEFINITION MODULE Stack;

(* Object oriented version of Stack *)

FROM Collections IMPORT CollectionData, Status;

CONST
    defaultSize = <implementation defined>;
    maximumSize = <implementation defined>;

TYPE
    Stack = OPAQUE;

PROCEDURE ( self : Stack ) new ( initialSize : LONGCARD; VAR status : Status ) : Stack;

PROCEDURE ( self : Stack ) push ( stack : Stack; value : CollectionData; VAR status : Status );

PROCEDURE ( self : Stack ) pop ( stack : Stack; VAR status : Status ) : CollectionData;

PROCEDURE ( self : Stack ) capacity ( stack : Stack) : LONGCARD;

PROCEDURE ( self : Stack ) numberOfEntries ( stack : Stack ) : LONGCARD;

PROCEDURE ( self : Stack ) dispose ( VAR stack : Stack );

END Stack.@]