00001 /* 00002 * finflect - Algorithms and tools for inflecting Finnish nouns 00003 * Copyright (C) 2004, 2005 The FinFlect Team 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 * 00019 * 00020 * For the complete legal text of the GNU Lesser General Public License, 00021 * see the file LICENSE. For a complete list of authors and copyright 00022 * holders, see the file AUTHORS. 00023 */ 00024 00025 /** 00026 * @file ffcase.h Defines constants for cases and counts, and a function (ff_case_name, implemented in ffcase.c) 00027 * that returns case names. 00028 */ 00029 00030 #ifndef __FFCASE_H 00031 #define __FFCASE_H 00032 00033 #ifdef __cplusplus 00034 extern "C" { 00035 #endif 00036 00037 #include "fftypes.h" 00038 00039 /** 00040 * The case constants 00041 */ 00042 typedef enum ffcase { 00043 /** 00044 * Nominative 00045 */ 00046 FFCASE_NOMINATIVE = 1000, 00047 00048 /** 00049 * Partitive 00050 */ 00051 FFCASE_PARTITIVE, 00052 00053 /** 00054 * Genitive 00055 */ 00056 FFCASE_GENITIVE, 00057 00058 /** 00059 * Essive 00060 */ 00061 FFCASE_ESSIVE, 00062 00063 /** 00064 * Translative 00065 */ 00066 FFCASE_TRANSLATIVE, 00067 00068 /** 00069 * Inessive 00070 */ 00071 FFCASE_INESSIVE, 00072 00073 /** 00074 * Elative 00075 */ 00076 FFCASE_ELATIVE, 00077 00078 /** 00079 * Illative 00080 */ 00081 FFCASE_ILLATIVE, 00082 00083 /** 00084 * Adessive 00085 */ 00086 FFCASE_ADESSIVE, 00087 00088 /** 00089 * Ablative 00090 */ 00091 FFCASE_ABLATIVE, 00092 00093 /** 00094 * Allative 00095 */ 00096 FFCASE_ALLATIVE, 00097 00098 /** 00099 * Abessive 00100 */ 00101 FFCASE_ABESSIVE, 00102 00103 /** 00104 * Comitative 00105 */ 00106 FFCASE_COMITATIVE, 00107 00108 /** 00109 * Instructive 00110 */ 00111 FFCASE_INSTRUCTIVE 00112 } ffcase; 00113 00114 /** 00115 * The case enum 00116 */ 00117 typedef enum ffcount { 00118 /** 00119 * Singular 00120 */ 00121 FFCOUNT_SINGULAR = 1, 00122 00123 /** 00124 * Plural 00125 */ 00126 FFCOUNT_PLURAL = 2 00127 } ffcount; 00128 00129 /** 00130 * Returns a pointer to the name of the given case. 00131 * @param thecase The case whose name you want 00132 * @return A pointer to the name of the given case 00133 */ 00134 ffchar* ff_case_name(ffcase thecase); 00135 00136 #ifdef __cplusplus 00137 } 00138 #endif 00139 00140 #endif