(*-------------------------------------------------------------------------*)
(*                                                                         *)
(*  Amiga Oberon Library Module: Pattern              Date: 27-Jan-92      *)
(*                                                                         *)
(*   © 1992 by Martin Horneffer                                            *)
(*                                                                         *)
(*   This  Module may freely be copied and distributed, as long as it is   *)
(*   left  unchanged and kept together with "pattern.library", © 1992 by   *)
(*   Angela Schmidt.                                                       *)
(*                                                                         *)
(*-------------------------------------------------------------------------*)

MODULE Pattern;

IMPORT Exec, Intuition;

CONST
  Name* = "pattern.library";
  Version* = 5;

VAR
  base * : Exec.LibraryPtr;

PROCEDURE ARexxFunction {base,-150}();

PROCEDURE Surprise*{base,-36}( window{8}: Intuition.WindowPtr; option{0}: LONGINT);

PROCEDURE Str2Upper	*{base,-42}( VAR string{8}	: ARRAY OF CHAR);

PROCEDURE Str2Lower	*{base,-48}( VAR string{8}	: ARRAY OF CHAR);

PROCEDURE Char2Upper	*{base,-54}( char{0}		: CHAR): CHAR;

PROCEDURE Char2Lower	*{base,-60}( char{0}		: CHAR): CHAR;

PROCEDURE GetAllocCounter*{base,-66}(): LONGINT;

PROCEDURE AllocPattern	*{base,-72}( patternString{8}	: ARRAY OF CHAR;
                                     flags{0}		: LONGINT): LONGINT;

PROCEDURE AllocPatternNoCase*{base,-78}( pattern{8}	: ARRAY OF CHAR;
                                         flags{0}	: LONGINT): LONGINT;

PROCEDURE IsPattern	*{base,-84}( source{8}		: ARRAY OF CHAR;
                                     VAR dest{9}	: ARRAY OF CHAR;
                                     flags{0}		: LONGINT): BOOLEAN;

PROCEDURE ESCPattern	*{base,-90}( source{8}		: ARRAY OF CHAR;
                                     VAR dest{9}	: ARRAY OF CHAR;
                                     flags{0}		: LONGINT): Exec.STRPTR;

PROCEDURE MatchThePattern*{base,-96}( pattern{0}	: LONGINT;
                                      string{8}		: ARRAY OF CHAR): LONGINT;

PROCEDURE FreePattern	*{base,-102}( pattern{0}	: LONGINT);

PROCEDURE SimpleMatch	*{base,-108}( pattern{8}	: ARRAY OF CHAR;
                                      string{9}		: ARRAY OF CHAR): LONGINT;

PROCEDURE SimpleMatchNoCase*{base,-114}( pattern{8}	: ARRAY OF CHAR;
                                         string{9}	: ARRAY OF CHAR): LONGINT;

PROCEDURE PatternErrorString*{base,-120}( error{0}	: LONGINT;
                                     language{8}	: ARRAY OF CHAR;
                                     VAR buffer{9}	: ARRAY OF CHAR;
                                     buflen{1}		: LONGINT): Exec.STRPTR;

PROCEDURE PatternError2DOS*{base,-126}( error{0}	: LONGINT): LONGINT;

PROCEDURE XParsePattern	*{base,-132}( source{1}		: ARRAY OF CHAR;
                                     VAR dest{2}	: ARRAY OF CHAR;
                                     destLength{3}	: LONGINT): LONGINT;

PROCEDURE XParsePatternNoCase*{base,-138}( source{1}	: ARRAY OF CHAR;
                                     VAR dest{2}	: ARRAY OF CHAR;
                                     destLength{3}	: LONGINT): LONGINT;

PROCEDURE XMatchPattern	*{base,-144}( pattern{1}	: ARRAY OF CHAR;
                                     string{2}		: ARRAY OF CHAR): BOOLEAN;

PROCEDURE XMatchPatternNoCase*{base,-150}( pattern{1}	: ARRAY OF CHAR;
                                     string{2}		: ARRAY OF CHAR): BOOLEAN;

BEGIN
  base := Exec.OpenLibrary( Name, Version);
  IF base=NIL THEN
    IF Intuition.DisplayAlert(0,"\x00\x64\x14missing pattern.library V5!\o\o",50) THEN END;
    HALT(0)
  END;
CLOSE
  IF base#NIL THEN Exec.CloseLibrary(base) END;
END Pattern.
