##stringtype Oberon
##shortstrings
MODULE %o3;
(****************************************************************
   This file was created automatically by `%fv'
   Do NOT edit by hand!
   Oberon-A source description C 1994 by Albert Weinert
   Using with Oberon-A Interfaces for AmigaOS Release 3.1

   Application: %b
   Language   : %l
   Version    : %v
   Description: %f0

****************************************************************)

(* $P- *)

IMPORT
  lo := Locale, e := Exec, u := Utility, y := SYSTEM;

CONST
  builtinlanguage = %l;
  version = %v;

CONST
  %i* = %d;

TYPE
  AppString = RECORD;
     id  : LONGINT;
     str : e.STRPTR;
  END;
  AppStringArray = ARRAY %n OF AppString;

VAR
  AppStrings : AppStringArray;
  catalog : lo.CatalogPtr;

  PROCEDURE SetStrings;
    BEGIN
      AppStrings[%e].id := %i; AppStrings[%e].str := y.ADR( %s );
    END SetStrings;

  PROCEDURE CloseCatalog*();
    BEGIN
      IF catalog # NIL THEN lo.base.CloseCatalog (catalog); catalog:=NIL END;
   END CloseCatalog;

  PROCEDURE OpenCatalog*(loc:lo.LocalePtr; language:ARRAY OF CHAR);
    VAR Tag : ARRAY 4 OF u.TagItem;
    BEGIN
      CloseCatalog();
      IF (catalog = NIL) & (lo.base # NIL) THEN
	Tag[0].tag := lo.ocBuiltInLanguage; Tag[0].data := y.ADR( builtinlanguage );
	Tag[1].tag := u.tagSkip;	  Tag[1].data := y.ADR( language );
	Tag[2].tag := lo.ocVersion;	    Tag[2].data := version;
	Tag[3].tag := u.tagDone;

	IF language # "" THEN
	  Tag[1].tag:= lo.ocLanguage;
	END;
	catalog := lo.base.OpenCatalogA (loc, "%b.catalog", Tag);
      END;
    END OpenCatalog;

  PROCEDURE GetString* (num: LONGINT): e.STRPTR;
    VAR
      i: LONGINT;
      default: e.STRPTR;
    BEGIN
      i := 0; WHILE (i < %n) & (AppStrings[i].id # num) DO INC (i) END;

      IF i # %n THEN
	default := AppStrings[i].str;
      ELSE
	default := NIL;
      END;

      IF catalog # NIL THEN
	RETURN lo.base.GetCatalogStr (catalog, num, default^);
      ELSE
	RETURN default;
      END;
    END GetString;

BEGIN
  catalog := NIL;
  lo.OpenLib( FALSE );
  SetStrings;
END %o3.

