home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume36 / formes / part02 / verb.h < prev    next >
C/C++ Source or Header  |  1993-04-01  |  3KB  |  96 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 = "@(#)verb.h    2.6 JWC"; */
  16.  
  17. #ifndef VERB_H
  18. #define VERB_H
  19.  
  20. /*
  21.  *  Verb - A verb
  22.  */
  23.  
  24. typedef struct Verb Verb;
  25.  
  26. #include "collect.h"
  27. #include "exstr.h"
  28. #include "form.h"
  29.  
  30. /* I know, some of these are ``moods'' and not tenses... */
  31.  
  32. #define TENSE_INFINITIVE 0    /* infinitive            [x]    */
  33. #define TENSE_PRESENT 1        /* present indicative        [x]    */
  34. #define TENSE_IMPERFECT 2    /* imperfect indicative        [x]    */
  35. #define TENSE_PASTSIMP 3    /* simple past             [ ]    */
  36. #define TENSE_FUTURE  4        /* future            [x]    */
  37. #define TENSE_CONDITION  5    /* conditional            [x]    */
  38. #define TENSE_SUBJUNCT  6    /* present subjunctive        [x]    */
  39. #define TENSE_IMPSUBJ  7    /* imperfect subjunctive    [ ]    */
  40. #define TENSE_PASTCOMP 8    /* compound past        [x]    */
  41. #define TENSE_PLUPERFECT 9    /* pluperfect            [x]    */
  42. #define TENSE_PASTANT 10    /* past anterior        [ ]    */
  43. #define TENSE_FUTUREANT 11    /* future anterior        [ ]    */
  44. #define TENSE_CONDPERF 12    /* conditional perfect        [ ]    */
  45. #define TENSE_PASTSUBJ 13    /* past subjunctive        [x]    */
  46. #define TENSE_PLUPSUBJ 14    /* pluperfect subjunctive   [ ]    */
  47. #define TENSE_IMPERATIVE  15    /* imperative            [x]    */
  48.  
  49. #define N_OF_TENSES 16
  50.  
  51. #define AUX_AVOIR 0
  52. #define AUX_ETRE 1
  53.  
  54. struct Verb
  55. {
  56.     int conjugationClass;
  57.     int thirdPersonOnly;
  58.     int auxiliary;
  59.     ExtendString *infinitive;
  60.     ExtendString *presIndStem;
  61.     ExtendString *presSubjStem;
  62.     ExtendString *imperativeStem;
  63.     ExtendString *imperfectStem;
  64.     ExtendString *futureStem;
  65.     ExtendString *presentParticipal;
  66.     ExtendString *pastParticipal;
  67.     ExtendString *presIndEndings[N_OF_PERSON][N_OF_PLURAL];
  68.     ExtendString *imperfectEndings[N_OF_PERSON][N_OF_PLURAL];
  69.     ExtendString *presSubjEndings[N_OF_PERSON][N_OF_PLURAL];
  70.     ExtendString *imperativeEndings[N_OF_PLURAL + 1];
  71. };
  72.  
  73. #if __STDC__
  74.  
  75. extern Verb *Verb_new(char *infinitive);
  76. extern Verb *Verb_newFromFile(char *infinitive, FILE *stream);
  77. extern ExtendString *Verb_conjugate(Verb *self, Form *form, int tense);
  78. extern void Verb_printOn(Verb *self, FILE *stream);
  79. extern void Verb_destroy(Verb *self);
  80.  
  81. #else
  82.  
  83. extern Verb *Verb_new();
  84. extern Verb *Verb_newFromFile();
  85. extern ExtendString *Verb_conjugate();
  86. extern void Verb_printOn();
  87. extern void Verb_destroy();
  88.  
  89. #endif
  90.  
  91. #define Verb_setConjugationClass(s, n) (s)->conjugationClass = n
  92. #define Verb_getConjugationClass(s) ((s)->conjugationClass)
  93. #define Verb_infinitive(s) ((s)->infinitive)
  94.  
  95. #endif
  96.