DEFINITION MODULE WPCLSMGR;

(***************************************************************************
  OS/2 2.1 Workplace class interface for WPClassManager

  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;
IMPORT WPOBJECT;
IMPORT OS2DEF;

TYPE PSOMClass              = SOM.PSOMClass;
TYPE INTEGER4               = SOM.INTEGER4;
TYPE somMToken              = SOM.somMToken;
TYPE somDToken              = SOM.somDToken;
TYPE somMethodProc          = SOM.somMethodProc;
TYPE PWPClassManager        = POINTER TO WPClassManager;

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

TYPE PWPObject              = WPOBJECT.PWPObject;
TYPE PSZ                    = OS2DEF.PSZ;

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

CONST
  WPClassManager_MajorVersion     = 1;
  WPClassManager_MinorVersion     = 2;

TYPE
  WPClassManagerClassDataStructure     = RECORD
    classObject                          : PSOMClass;
    wpQueryClassReplaceList              : somMToken;
    wpGetTrueClassName                   : somMToken;
                                         END;

VAR
  WPClassManagerClassData : WPClassManagerClassDataStructure;

TYPE
  (*$SOM+ *)
  WPClassManager = RECORD( SOM.SOMClassMgr ) END;
  (*$SOM- *)


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

PROCEDURE( Self : PWPClassManager ) wpGetTrueClassName
(
  Object        : PWPObject
)               : PSZ;


END WPCLSMGR.
