home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2demo / animals / animal.def next >
Text File  |  1995-01-25  |  3KB  |  119 lines

  1. (*$DLL      ANIMAL can  be implemented as dynamic link library *)
  2.  
  3. DEFINITION MODULE ANIMAL;
  4.  
  5. (***************************************************************************
  6.   OS/2 2.1 interface for SOM class Animal
  7.  
  8.   Copyright (c) 1994 by Juergen Neuhoff
  9. ****************************************************************************)
  10.  
  11. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  12. (*$CDECL+    C-style procedures                                         *)
  13. (*$A         default alignment for record fields                        *)
  14.  
  15. IMPORT SOM;
  16.  
  17. (************************************************************************
  18.   Additional TYPE- and CONST-declarations supporting Animal
  19. *************************************************************************)
  20.  
  21. IMPORT OS2DEF;
  22. IMPORT SYSTEM;
  23.  
  24. TYPE PSZ                    = OS2DEF.PSZ;
  25.  
  26.  
  27. (*************************************************************************
  28.   SOM class API for Animal, including type-bound procedures
  29. **************************************************************************)
  30.  
  31. TYPE PSOMClass              = SOM.PSOMClass;
  32. TYPE INTEGER4               = SOM.INTEGER4;
  33. TYPE somMToken              = SOM.somMToken;
  34. TYPE somDToken              = SOM.somDToken;
  35. TYPE somMethodProc          = SOM.somMethodProc;
  36. TYPE PAnimal                = POINTER TO Animal;
  37. TYPE PM_Animal              = POINTER TO M_Animal;
  38.  
  39. CONST
  40.   Animal_MajorVersion     = 0;
  41.   Animal_MinorVersion     = 0;
  42.  
  43. TYPE
  44.   AnimalClassDataStructure     = RECORD
  45.     classObject                  : PSOMClass;
  46.     setSound                     : somMToken;
  47.     getGenus                     : somMToken;
  48.     getSpecies                   : somMToken;
  49.     talk                         : somMToken;
  50.     display                      : somMToken;
  51.                                  END;
  52.  
  53. VAR
  54.   AnimalClassData : AnimalClassDataStructure;
  55.  
  56. TYPE
  57.   (*$SOM+ *)
  58.   Animal = RECORD( SOM.SOMObject ) END;
  59.   (*$SOM- *)
  60.  
  61.  
  62. PROCEDURE AnimalNewClass
  63. (
  64.   majorVersion  : INTEGER4;
  65.   minorVersion  : INTEGER4
  66. )               : PSOMClass;
  67.  
  68. PROCEDURE( Self : PAnimal ) setSound
  69. (
  70.   mySound      : OS2DEF.PSZ
  71. );
  72.  
  73. PROCEDURE( Self : PAnimal ) getGenus() : OS2DEF.PSZ;
  74.  
  75. PROCEDURE( Self : PAnimal ) getSpecies() : OS2DEF.PSZ;
  76.  
  77. PROCEDURE( Self : PAnimal ) talk();
  78.  
  79. PROCEDURE( Self : PAnimal ) display();
  80.  
  81.  
  82. (*************************************************************************
  83.   SOM class API for M_Animal, including type-bound procedures
  84. **************************************************************************)
  85.  
  86. CONST
  87.   M_Animal_MajorVersion   = 0;
  88.   M_Animal_MinorVersion   = 0;
  89.  
  90. TYPE
  91.   M_AnimalClassDataStructure   = RECORD
  92.     classObject                  : PSOMClass;
  93.     newAnimal                    : somMToken;
  94.                                  END;
  95.  
  96. VAR
  97.   M_AnimalClassData : M_AnimalClassDataStructure;
  98.  
  99. TYPE
  100.   (*$SOM+ *)
  101.   M_Animal = RECORD( SOM.SOMClass ) END;
  102.   (*$SOM- *)
  103.  
  104.  
  105. PROCEDURE M_AnimalNewClass
  106. (
  107.   majorVersion : INTEGER4;
  108.   minorVersion : INTEGER4
  109. )              : PSOMClass;
  110.  
  111.  
  112. PROCEDURE( Self : PM_Animal ) newAnimal
  113. (
  114.   sound         : OS2DEF.PSZ
  115. )               : SYSTEM.ADDRESS;
  116.  
  117.  
  118. END ANIMAL.
  119.