MODULE StringLib;

IMPORT
    RTS;


PROCEDURE CanDeleteAll*(len : INTEGER;
                        sIx : INTEGER;
                        num : INTEGER) : BOOLEAN;

PROCEDURE CanAppendAll*(    len : INTEGER;
                        VAR dst : ARRAY OF CHAR) : BOOLEAN;

PROCEDURE CanAssignAll*(    sLen : INTEGER;
                        IN  dest : ARRAY OF CHAR) : BOOLEAN;

PROCEDURE CanInsertAll*(    sLen : INTEGER;
                            sIdx : INTEGER;
                        VAR dest : ARRAY OF CHAR) : BOOLEAN;

PROCEDURE Extract*(IN  src : ARRAY OF CHAR;
                       sIx : INTEGER;
                       num : INTEGER;
                   OUT dst : ARRAY OF CHAR);

PROCEDURE Replace*(IN  src : ARRAY OF CHAR;
                       sIx : INTEGER;
                   VAR dst : ARRAY OF CHAR);

PROCEDURE Capitalize*(VAR str : ARRAY OF CHAR);

PROCEDURE Assign*(IN  src : ARRAY OF CHAR;
                  OUT dst : ARRAY OF CHAR);

PROCEDURE Delete*(VAR str : ARRAY OF CHAR;
                      sIx : INTEGER;
                      num : INTEGER);

PROCEDURE Append*(    src : ARRAY OF CHAR;
                  VAR dst : ARRAY OF CHAR);

PROCEDURE FindDiff*(IN  str1 : ARRAY OF CHAR;
                    IN  str2 : ARRAY OF CHAR;
                    OUT diff : BOOLEAN;
                    OUT dPos : INTEGER);

PROCEDURE Insert*(IN  src : ARRAY OF CHAR;
                      sIx : INTEGER;
                  VAR dst : ARRAY OF CHAR);

PROCEDURE FindNext*(IN  pat : ARRAY OF CHAR;
                    IN  str : ARRAY OF CHAR;
                        bIx : INTEGER;
                    OUT fnd : BOOLEAN;
                    OUT pos : INTEGER);

PROCEDURE FindPrev*(IN  pat : ARRAY OF CHAR;
                    IN  str : ARRAY OF CHAR;
                        bIx : INTEGER;
                    OUT fnd : BOOLEAN;
                    OUT pos : INTEGER);

PROCEDURE CanExtractAll*(    len : INTEGER;
                             sIx : INTEGER;
                             num : INTEGER;
                         OUT dst : ARRAY OF CHAR) : BOOLEAN;

PROCEDURE CanReplaceAll*(    len : INTEGER;
                             sIx : INTEGER;
                         VAR dst : ARRAY OF CHAR) : BOOLEAN;


END StringLib.