moytrage

mt_lgk.h

Mar 4th, 2012
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.38 KB | None | 0 0
  1. #ifndef LGK_H__
  2. #define LGK_H__
  3.  
  4. /********* Parts of speech codes *************************/
  5. namespace mt
  6. {
  7.  
  8.     /**
  9.      * all possible speech parts
  10.      */
  11.     enum spart_type
  12.     {
  13.         /* without options */
  14.         special_part = -1,
  15.         abbreviation = 1, /**< сокращение */
  16.         adverb, /**< наречие */
  17.         interjection, /**< междометие */
  18.         conjunction, /**< союз */
  19.         article, /**< артикль */
  20.         numeral, /**< количественное числительное */
  21.         ord_numeral, /**< порядковое числительное */
  22.         preposition, /**< предлог */
  23.         form, /**< неизменяемое */
  24.         particle, /**< частица */
  25.         predicative, /**< предикатив */
  26.         /* with options */
  27.         pronoun = 1<<4, /**< личное местоимение */
  28.         adjective = 1<<5, /**< прилагательное */
  29.         noun = 1<<6, /**< существительное */
  30.         verb = 1<<7, /**< глагол */
  31.         /**< extra options in high bit*/
  32.         euphemism = 1<<10 /**< эвфемизм */
  33.     };
  34.  
  35.     namespace adj_bits
  36.     {
  37.         enum options
  38.         { /**< параметры прилагательного */
  39.             sya = 1, /**< употребляется с 'ся' */
  40.             pronoun = 1<<1, /**< местоимённое прилагательное */
  41.             /* bit not used */
  42.             comparative = 1<<3, /**< наличие сравнительной формы */
  43.             has_short = 1<<4 /**< наличие короткой формы */
  44.         };
  45.     }
  46.    
  47.     namespace noun_bits
  48.     {
  49.         enum options
  50.         { /**< параметры существительного*/
  51.             singular = 1, /**< только единственное число */
  52.             plural = 1<<1, /**< только множественное число */
  53.             normal = singular|plural, /**< обычное (и едиственное и множественное число) */
  54.             animated = 1<<2, /**< одушевлённое */
  55.             masculine = 1<<3, /**< мужской род*/
  56.             feminine = 1<<4, /**< женский род */
  57.             old_neuter = feminine|masculine, /**< средний род */
  58.             unchangeable = 1<<5, /**< неизменяемое */
  59.             /* верхние биты */
  60.             pronoun = 1<<8, /**<  ещё отдельное свойство под причастие */
  61.             neuter = 1<<9 /**< ещё один отдельный бит для среднего рода */
  62.         };
  63.     }
  64.    
  65.     namespace verb_bits
  66.     {
  67.         enum options
  68.         { /**< параметры глагола */
  69.             sya = 1, /**< глагол с 'ся' */
  70.             participle3 = 1<<1, /**< причастие 3, 'делаемый' */       
  71.             participle4 = 1<<2, /**< причастие 4, 'деланный' */
  72.             perfect = 1<<3, /**< совершенный */
  73.             imperfect = 1<<4, /**< несовершенный */
  74.             transitive = 1<<5, /**< переходный */
  75.             intransitive = 1<<6, /**< непереходный */
  76.             /* верхние биты */
  77.             geborren = 1<<8, /**< некоторое исключение в немецком языке */
  78.             prich = 1<<9 /**< причастие (форма глагола, меняется как прилагательное) */ //P_PRICH
  79.         };
  80.     }
  81.  
  82.     int speech_part(int); /**< @return only speech part bit from code */
  83.    
  84.     inline bool is_noun(int lgk) { return (speech_part(lgk)&mt::noun) == mt::noun; }
  85.     inline bool is_verb(int lgk) { return (speech_part(lgk)&mt::verb) == mt::verb; }
  86.     inline bool is_adjective(int lgk){ return (speech_part(lgk)&mt::adjective) == mt::adjective; }
  87.     inline bool is_prich(int lgk)
  88.     {
  89.         return (!is_noun(lgk)) &&
  90.            ((lgk&mt::verb_bits::prich) == mt::verb_bits::prich);
  91.     }
  92.  
  93.     bool is_perfect(int); /**< @check are lgk perfect */
  94. }
  95.  
  96.  
  97. //что это?
  98. #define         N_NOMINATIVE_PLURAL          128
  99.  
  100.  
  101. #define         N_ACCUSATIVE_PLURAL          1024
  102. #define         N_ACCUSATIVE_PLURAL1         2048
  103. #define         N_ACCUSATIVE_SINGULAR        8
  104. #define         N_ACCUSATIVE_SINGULAR1       16
  105. #define         N_ACCUSATIVES   N_ACCUSATIVE_SINGULAR|N_ACCUSATIVE_SINGULAR1|N_ACCUSATIVE_PLURAL|N_ACCUSATIVE_PLURAL1
  106.  
  107.  
  108. //This is separate type of the form
  109.  
  110. //Уточнить что это такое
  111.  
  112. // New forms bits
  113. #define         F_NOMINATIVE            ((DWORDLONG)1 << 0)
  114. #define         F_GENITIVE              ((DWORDLONG)1 << 1)
  115. #define         F_DATIVE                ((DWORDLONG)1 << 2)
  116. #define         F_ACCUSATIVE            ((DWORDLONG)1 << 3)
  117. #define         F_INSTRUMENTAL          ((DWORDLONG)1 << 4)
  118. #define         F_PREPOSITIONAL         ((DWORDLONG)1 << 5)
  119. #define         F_MASCULINE             ((DWORDLONG)1 << 6)
  120. #define         F_FEMININE              ((DWORDLONG)1 << 7)
  121. #define         F_NEUTER                ((DWORDLONG)1 << 8)
  122. #define         F_SINGULAR              ((DWORDLONG)1 << 9)
  123. #define         F_PLURAL                ((DWORDLONG)1 << 10)
  124. #define         F_SHORT                 ((DWORDLONG)1 << 11)
  125. #define         F_COMPARATIVE           ((DWORDLONG)1 << 12)
  126. #define         F_COMPARATIVE1          ((DWORDLONG)1 << 13)  // for English - big-bigger-biggest
  127. #define         F_LITSO1                ((DWORDLONG)1 << 14)
  128. #define         F_LITSO2                ((DWORDLONG)1 << 15)
  129. #define         F_LITSO3                ((DWORDLONG)1 << 16)
  130. #define         F_DEEPR                 ((DWORDLONG)1 << 17)
  131. #define         F_INFINITIVE            ((DWORDLONG)1 << 18)
  132. #define         F_IMPERATIVE            ((DWORDLONG)1 << 19)
  133. #define         F_PAST                  ((DWORDLONG)1 << 20)
  134. #define         F_PRESENT               ((DWORDLONG)1 << 21)
  135. #define         F_FUTURE                ((DWORDLONG)1 << 22)
  136. #define         F_ANIMATED              ((DWORDLONG)1 << 23)
  137. #define         F_INANIMATED            ((DWORDLONG)1 << 24)
  138. #define         F_PRICH                 ((DWORDLONG)1 << 25)
  139. #define         F_NOUN                  ((DWORDLONG)1 << 26)
  140. #define         F_VERB                  ((DWORDLONG)1 << 27)
  141. #define         F_ADJECTIVE             ((DWORDLONG)1 << 28)
  142. #define         F_ADVERB                ((DWORDLONG)1 << 29)
  143. #define          F_GERUND                ((DWORDLONG)1 << 30)
  144. #define          F_INDEFINITE            ((DWORDLONG)1 << 31)
  145. #define          F_SYA                   ((DWORDLONG)1 << 32)
  146. #define         F_PRICH1                ((DWORDLONG)1 << 33)
  147. #define         F_PRICH2                ((DWORDLONG)1 << 34)
  148. #define         F_PRICH3                ((DWORDLONG)1 << 35)
  149. #define         F_PRICH4                ((DWORDLONG)1 << 36)
  150. #define         F_ADDITIONAL_FORM       ((DWORDLONG)1 << 37)
  151. #define         F_PARTICIPLE               ((DWORDLONG)1 << 38)
  152. #define         F_PREPOSITION              ((DWORDLONG)1 << 39)
  153.  
  154. #define          F_SPEECH_PART_MASK     F_NOUN|F_VERB|F_ADJECTIVE|F_ADVERB
  155. #define         F_CASEMASK            (F_NOMINATIVE | F_GENITIVE | F_DATIVE | F_ACCUSATIVE | F_INSTRUMENTAL | F_PREPOSITIONAL)
  156. #define         F_GENDERMASK          (F_MASCULINE | F_FEMININE | F_NEUTER)
  157. #define         F_NUMBERMASK          (F_SINGULAR | F_PLURAL)
  158. #define         F_SHORTMASK           (F_SHORT)
  159. #define         F_COMPARATIVEMASK     (F_COMPARATIVE)
  160. #define         F_LITSOMASK           (F_LITSO1 | F_LITSO2 | F_LITSO3)
  161. #define         F_DEEPRMASK           (F_DEEPRMASK)
  162. #define         F_INFINITIVEMASK      (F_INFINITIVE)
  163. #define         F_TENSEMASK           (F_PAST | F_PRESENT | F_FUTURE)
  164. #define         F_ANIMATEDMASK        (F_ANIMATED | F_INANIMATED)
  165.  
  166. #endif
Advertisement
Add Comment
Please, Sign In to add comment