DEFINITION MODULE ReqSupport; (* V1.1 5/4-91,9/6-92 *)

(*$ DEFINE Test:=TRUE *)
(*$ LongAlign:=TRUE StackParms:=TRUE CStrings:=TRUE LargeVars:=FALSE *)
(*$ IF Test *)
  (*$ Volatile:=FALSE StackChk:=TRUE RangeChk:=TRUE OverflowChk:=TRUE
  NilChk:=TRUE EntryClear:=TRUE CaseChk:=TRUE ReturnChk:=TRUE *)
(*$ ELSE *)
  (*$ Volatile:=TRUE StackChk:=FALSE RangeChk:=FALSE OverflowChk:=FALSE
  NilChk:=FALSE EntryClear:=FALSE CaseChk:=FALSE ReturnChk:=FALSE *)
(*$ ENDIF *)

(* Simple interface to some of the powerful functions in the req.library *)
(* Normally set 'parameterlist' to NIL *)

(* Needs libs:req.library at program run-time, *)
(* req.sym at compile-time, *)
(* req.doc and req.def at learn/code-time. *)

FROM SYSTEM IMPORT 
  ADDRESS;
FROM IntuitionD IMPORT
  WindowPtr;
FROM OptReq IMPORT
  StrPtr;           (* StrPtr=POINTER TO ARRAY[0..5000] OF CHAR *)

TYPE
  TEXTSTR=ARRAY[0..19] OF CHAR;

VAR
  reqOn:BOOLEAN;   (* FALSE hvis req.library ikke kunne åbnes *)
  POSTEXT:TEXTSTR; (* Default='  OK  ' *)
  MIDTEXT:TEXTSTR; (* Default=' DROP ' *)
  NEGTEXT:TEXTSTR; (* Default=' UPS! ' *)
  wsptr :WindowPtr;(* (Optional) point it to a window on the Screen to use *)

(* default outside limits (ex: MAX(LONGINT) ) will give an empty field *) 
PROCEDURE LongRequest(VAR result:LONGINT; title:StrPtr; min,max,
                      default:LONGINT):BOOLEAN; (* ok=TRUE *)

(* EXELLENT! Simple to call, advanced to use (returns path=dir+name) *)
PROCEDURE SimpleFileRequester(title:ARRAY OF CHAR; VAR name,path,
                              dir:ARRAY OF CHAR):BOOLEAN; (* ok=TRUE *)

(* \ in string will be modified to LineFeed. Max string-length=5000 *)
(* Set parameterlist to NIL unless you want to use the special      *)
(* C-style formatting.     Example of call :                        *)
(* v:=SimpleRequest(ADR("First line\Second line\Third line"),NIL);  *)
 
PROCEDURE SimpleRequest(string:StrPtr; TimeOut:CARDINAL; parameterlist:ADDRESS):CARDINAL;
(* ok=1 *)

PROCEDURE TwoGadRequest(string:StrPtr; TimeOut:CARDINAL; parameterlist:ADDRESS):CARDINAL;
(* ok=1, ups!=0 *)

PROCEDURE ThreeGadRequest(string:StrPtr; TimeOut:CARDINAL; parameterlist:ADDRESS):CARDINAL;
(* ok=1, drop=2, ups!=0 *)

END ReqSupport.
