(*$DLL      BDOG can  be implemented as dynamic link library *)

DEFINITION MODULE BDOG;

(***************************************************************************
  OS/2 2.1 interface for SOM class BigDog

  Copyright (c) 1994 by Juergen Neuhoff
****************************************************************************)

(*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
(*$CDECL+    C-style procedures                                         *)
(*$A         default alignment for record fields                        *)

IMPORT SOM;

(************************************************************************
  Additional TYPE- and CONST-declarations supporting BigDog
*************************************************************************)

IMPORT OS2DEF;
IMPORT DOG;
TYPE PSZ                    = OS2DEF.PSZ;


(*************************************************************************
  SOM class API for BigDog, including type-bound procedures
**************************************************************************)

TYPE PSOMClass              = SOM.PSOMClass;
TYPE INTEGER4               = SOM.INTEGER4;
TYPE somMToken              = SOM.somMToken;
TYPE somDToken              = SOM.somDToken;
TYPE somMethodProc          = SOM.somMethodProc;
TYPE PBigDog                = POINTER TO BigDog;
TYPE PM_BigDog              = POINTER TO M_BigDog;

CONST
  BigDog_MajorVersion       = 0;
  BigDog_MinorVersion       = 0;

TYPE
  BigDogClassDataStructure  = RECORD
    classObject               : PSOMClass;
                              END;

VAR
  BigDogClassData : BigDogClassDataStructure;

TYPE
  (*$SOM+ *)
  BigDog = RECORD( DOG.Dog ) END;
  (*$SOM- *)


PROCEDURE BigDogNewClass
(
  majorVersion  : INTEGER4;
  minorVersion  : INTEGER4
)               : PSOMClass;

PROCEDURE( Self : PBigDog ) talk();


END BDOG.
