home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume36 / formes / part01 / form.c < prev    next >
C/C++ Source or Header  |  1993-04-01  |  2KB  |  119 lines

  1.  
  2. /*
  3.  *  Copyright (C) 1992-1993 Jeffrey Chilton
  4.  *
  5.  *  Permission is granted to anyone to make or distribute copies of
  6.  *  this program, in any medium, provided that the copyright notice
  7.  *  and permission notice are preserved, and that the distributor
  8.  *  grants the recipient permission for further redistribution as
  9.  *  permitted by this notice.
  10.  *  
  11.  *  Author's E-mail address:  172-9221@mcimail.com
  12.  *  
  13.  */
  14.  
  15. static char *whatstring = "@(#)form.c    2.2 JWC";
  16.  
  17. #include <stdio.h>
  18. #include <malloc.h>
  19.  
  20. #include "class.h"
  21. #include "form.h"
  22.  
  23. char *formNames[N_OF_PERSON][N_OF_PLURAL][N_OF_GENDER] = 
  24. {
  25.     "1SM", "1SF", "1PM", "1PF",
  26.     "2SM", "2SF", "2PM", "2PF",
  27.     "3SM", "3SF", "3PM", "3PF",
  28. };
  29.  
  30. Form *
  31. Form_new(person, plurality, gender)
  32. int person;
  33. int plurality;
  34. int gender;
  35. {
  36.     Form *self;
  37.  
  38.     self = (Form *)malloc(sizeof (Form));
  39.     if (!self)
  40.     {
  41.     fprintf(stderr, "Form_new: malloc fails\n");
  42.     goto out;
  43.     }
  44.  
  45.     self->gender = gender;
  46.     self->plurality = plurality;
  47.     self->person = person;
  48.  
  49. out:
  50.  
  51.     return self;
  52.  
  53. }
  54.  
  55. Form *
  56. Form_newFromImage(image)
  57. char *image;
  58. {
  59.     int person;
  60.     int plurality;
  61.     int gender;
  62.     char *name;
  63.     Form *self;
  64.  
  65.     self = (Form *)malloc(sizeof (Form));
  66.     if (!self)
  67.     {
  68.     fprintf(stderr, "Form_newFromImage: malloc fails\n");
  69.     goto out;
  70.     }
  71.  
  72.     for (person = 0; person < N_OF_PERSON; person++)
  73.     {
  74.     for (plurality = 0; plurality < N_OF_PLURAL; plurality++)
  75.     {
  76.         for (gender = 0; gender < N_OF_GENDER; gender++)
  77.         {
  78.         name = formNames[person][plurality][gender];
  79.         if (0 == strncmp(image, name, strlen(image)))
  80.         {
  81.             self->gender = gender;
  82.             self->plurality = plurality;
  83.             self->person = person;
  84.             goto out;
  85.         }
  86.         }
  87.     }
  88.     }
  89.  
  90.     self = (Form *)(0);
  91.  
  92. out:
  93.  
  94.     return self;
  95.  
  96. }
  97.  
  98. int
  99. Form_isEquivalent(self, x)
  100. Form *self;
  101. Form *x;
  102. {
  103.     return self->person == x->person && self->plurality == x->plurality;
  104. }
  105.  
  106. char *
  107. Form_image(self)
  108. Form *self;
  109. {
  110.     return formNames[self->person][self->plurality][self->gender];
  111. }
  112.  
  113. void
  114. Form_destroy(self)
  115. Form *self;
  116. {
  117.     free(self);
  118. }
  119.