OSDN Git Service

updated libopenjtalk using python-jtalk
[nvdajp/nvdajpmiscdep.git] / include / jtalk / libopenjtalk / njd_set_digit / njd_set_digit.c
diff --git a/include/jtalk/libopenjtalk/njd_set_digit/njd_set_digit.c b/include/jtalk/libopenjtalk/njd_set_digit/njd_set_digit.c
deleted file mode 100644 (file)
index bb415b0..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-/* ----------------------------------------------------------------- */\r
-/*           The Japanese TTS System "Open JTalk"                    */\r
-/*           developed by HTS Working Group                          */\r
-/*           http://open-jtalk.sourceforge.net/                      */\r
-/* ----------------------------------------------------------------- */\r
-/*                                                                   */\r
-/*  Copyright (c) 2008-2011  Nagoya Institute of Technology          */\r
-/*                           Department of Computer Science          */\r
-/*                                                                   */\r
-/* All rights reserved.                                              */\r
-/*                                                                   */\r
-/* Redistribution and use in source and binary forms, with or        */\r
-/* without modification, are permitted provided that the following   */\r
-/* conditions are met:                                               */\r
-/*                                                                   */\r
-/* - Redistributions of source code must retain the above copyright  */\r
-/*   notice, this list of conditions and the following disclaimer.   */\r
-/* - Redistributions in binary form must reproduce the above         */\r
-/*   copyright notice, this list of conditions and the following     */\r
-/*   disclaimer in the documentation and/or other materials provided */\r
-/*   with the distribution.                                          */\r
-/* - Neither the name of the HTS working group nor the names of its  */\r
-/*   contributors may be used to endorse or promote products derived */\r
-/*   from this software without specific prior written permission.   */\r
-/*                                                                   */\r
-/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND            */\r
-/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,       */\r
-/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF          */\r
-/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE          */\r
-/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */\r
-/* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,          */\r
-/* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED   */\r
-/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     */\r
-/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */\r
-/* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,   */\r
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY    */\r
-/* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           */\r
-/* POSSIBILITY OF SUCH DAMAGE.                                       */\r
-/* ----------------------------------------------------------------- */\r
-\r
-#ifndef NJD_SET_DIGIT_C\r
-#define NJD_SET_DIGIT_C\r
-\r
-#ifdef __cplusplus\r
-#define NJD_SET_DIGIT_C_START extern "C" {\r
-#define NJD_SET_DIGIT_C_END   }\r
-#else\r
-#define NJD_SET_DIGIT_C_START\r
-#define NJD_SET_DIGIT_C_END\r
-#endif                          /* __CPLUSPLUS */\r
-\r
-NJD_SET_DIGIT_C_START;\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "njd.h"\r
-#include "njd_set_digit.h"\r
-\r
-#if defined(CHARSET_EUC_JP)\r
-#include "njd_set_digit_rule_euc_jp.h"\r
-#elif defined(CHARSET_SHIFT_JIS)\r
-#include "njd_set_digit_rule_shift_jis.h"\r
-#elif defined(CHARSET_UTF_8)\r
-#include "njd_set_digit_rule_utf_8.h"\r
-#else\r
-#error CHARSET is not specified\r
-#endif\r
-\r
-#define MAXBUFLEN 1024\r
-\r
-static int strtopcmp(char *str, const char *pattern)\r
-{\r
-   int i;\r
-\r
-   for (i = 0;; i++) {\r
-      if (pattern[i] == '\0')\r
-         return i;\r
-      if (str[i] == '\0')\r
-         return -1;\r
-      if (str[i] != pattern[i])\r
-         return -1;\r
-   }\r
-}\r
-\r
-static int get_digit(NJDNode * node, int convert_flag)\r
-{\r
-   int i;\r
-\r
-   if (NJDNode_get_string(node) == NULL)\r
-      return -1;\r
-\r
-   if (strcmp(NJDNode_get_pos_group1(node), NJD_SET_DIGIT_KAZU) == 0)\r
-      for (i = 0; njd_set_digit_rule_numeral_list1[i] != NULL; i += 3)\r
-         if (strcmp(njd_set_digit_rule_numeral_list1[i], NJDNode_get_string(node)) == 0) {\r
-            if (convert_flag == 1) {\r
-               NJDNode_set_string(node, (char *) njd_set_digit_rule_numeral_list1[i + 2]);\r
-               NJDNode_set_orig(node, (char *) njd_set_digit_rule_numeral_list1[i + 2]);\r
-            }\r
-            return atoi(njd_set_digit_rule_numeral_list1[i + 1]);\r
-         }\r
-\r
-   return -1;\r
-}\r
-\r
-static int get_digit_sequence_score(NJDNode * start, NJDNode * end)\r
-{\r
-   char *buff_pos_group1 = NULL;\r
-   char *buff_pos_group2 = NULL;\r
-   char *buff_string = NULL;\r
-   int score = 0;\r
-\r
-   if (start->prev) {\r
-      buff_pos_group1 = NJDNode_get_pos_group1(start->prev);\r
-      buff_pos_group2 = NJDNode_get_pos_group2(start->prev);\r
-      buff_string = NJDNode_get_string(start->prev);\r
-      if (strcmp(buff_pos_group1, NJD_SET_DIGIT_SUUSETSUZOKU) == 0)     /* prev pos_group1 */\r
-         score += 2;\r
-      else if (strcmp(buff_pos_group1, NJD_SET_DIGIT_KAZU) == 0) {\r
-         if (buff_string != NULL\r
-             && (strcmp(buff_string, NJD_SET_DIGIT_TEN1) == 0\r
-                 || strcmp(buff_string, NJD_SET_DIGIT_TEN2) == 0))\r
-            score -= 3;\r
-      }\r
-      if (strcmp(buff_pos_group2, NJD_SET_DIGIT_JOSUUSHI) == 0) /* prev pos_group2 */\r
-         score += 1;\r
-      if (buff_string != NULL) {\r
-         if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN1) == 0)   /* prev string */\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN2) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN3) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_KAKKO1) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_KAKKO2) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_BANGOU) == 0)\r
-            score -= 2;\r
-      }\r
-      if (start->prev->prev) {\r
-         buff_string = NJDNode_get_string(start->prev->prev);   /* prev prev string */\r
-         if (buff_string != NULL && strcmp(buff_string, NJD_SET_DIGIT_BANGOU) == 0)\r
-            score -= 2;\r
-      }\r
-   }\r
-   if (end->next) {\r
-      buff_pos_group2 = NJDNode_get_pos_group2(end->next);      /* next pos_group2 */\r
-      buff_string = NJDNode_get_string(end->next);      /* next string */\r
-      if (strcmp(buff_pos_group2, NJD_SET_DIGIT_JOSUUSHI) == 0)\r
-         score += 2;\r
-      if (buff_string != NULL) {\r
-         if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN1) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN2) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_HAIHUN3) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_KAKKO1) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_KAKKO2) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_BANGOU) == 0)\r
-            score -= 2;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_TEN1) == 0)\r
-            score += 4;\r
-         else if (strcmp(buff_string, NJD_SET_DIGIT_TEN2) == 0)\r
-            score += 4;\r
-      }\r
-   }\r
-\r
-   return score;\r
-}\r
-\r
-static void convert_digit_sequence(NJDNode * start, NJDNode * end)\r
-{\r
-   NJDNode *node;\r
-   NJDNode *newnode;\r
-   int digit;\r
-   int place = 0;\r
-   int index;\r
-   int size = 0;\r
-   int have = 0;\r
-\r
-   if (get_digit_sequence_score(start, end) < 0)\r
-      return;\r
-\r
-   for (node = start; node != end->next; node = node->next)\r
-      size++;\r
-   if (size <= 1)\r
-      return;\r
-   index = size % 4;\r
-   if (index == 0)\r
-      index = 4;\r
-   if (size > index)\r
-      place = (size - index) / 4;\r
-   index--;\r
-   if (place > 17)\r
-      return;\r
-\r
-   for (node = start; node != end->next; node = node->next) {\r
-      digit = get_digit(node, 0);\r
-      if (index == 0) {\r
-         if (digit == 0) {\r
-            NJDNode_set_pron(node, NULL);\r
-            NJDNode_set_acc(node, 0);\r
-            NJDNode_set_mora_size(node, 0);\r
-         } else {\r
-            have = 1;\r
-         }\r
-         if (have == 1) {\r
-            if (place > 0) {\r
-               newnode = (NJDNode *) calloc(1, sizeof(NJDNode));\r
-               NJDNode_initialize(newnode);\r
-               NJDNode_load(newnode, (char *) njd_set_digit_rule_numeral_list3[place]);\r
-               node = NJDNode_insert(node, node->next, newnode);\r
-            }\r
-            have = 0;\r
-         }\r
-         place--;\r
-      } else {\r
-         if (digit <= 1) {\r
-            NJDNode_set_pron(node, NULL);\r
-            NJDNode_set_acc(node, 0);\r
-            NJDNode_set_mora_size(node, 0);\r
-         }\r
-         if (digit > 0) {\r
-            newnode = (NJDNode *) calloc(1, sizeof(NJDNode));\r
-            NJDNode_initialize(newnode);\r
-            NJDNode_load(newnode, (char *) njd_set_digit_rule_numeral_list2[index]);\r
-            node = NJDNode_insert(node, node->next, newnode);\r
-            have = 1;\r
-         }\r
-      }\r
-      index--;\r
-      if (index < 0)\r
-         index = 4 - 1;\r
-   }\r
-}\r
-\r
-static int search_numerative_class(const char *list[], NJDNode * node)\r
-{\r
-   int i;\r
-   char *str = NJDNode_get_string(node);\r
-\r
-   if (str == NULL)\r
-      return 0;\r
-   for (i = 0; list[i] != NULL; i++) {\r
-      if (strcmp(list[i], str) == 0)\r
-         return 1;\r
-   }\r
-   return 0;\r
-}\r
-\r
-static void convert_digit_pron(const char *list[], NJDNode * node)\r
-{\r
-   int i;\r
-   char *str = NJDNode_get_string(node);\r
-\r
-   if (str == NULL)\r
-      return;\r
-   for (i = 0; list[i] != NULL; i += 4) {\r
-      if (strcmp(list[i], str) == 0) {\r
-         NJDNode_set_pron(node, (char *) list[i + 1]);\r
-         NJDNode_set_acc(node, atoi(list[i + 2]));\r
-         NJDNode_set_mora_size(node, atoi(list[i + 3]));\r
-         return;\r
-      }\r
-   }\r
-}\r
-\r
-static void convert_numerative_pron(const char *list[], NJDNode * node1, NJDNode * node2)\r
-{\r
-   int i, j;\r
-   int type = 0;\r
-   char *str = NJDNode_get_string(node1);\r
-   char buff[MAXBUFLEN];\r
-\r
-   if (str == NULL)\r
-      return;\r
-   for (i = 0; list[i] != NULL; i += 2) {\r
-      if (strcmp(list[i], str) == 0) {\r
-         type = atoi(list[i + 1]);\r
-         break;\r
-      }\r
-   }\r
-   if (type == 1) {\r
-      for (i = 0; njd_set_digit_rule_voiced_sound_symbol_list[i] != NULL; i += 2) {\r
-         str = NJDNode_get_pron(node2);\r
-         j = strtopcmp(str, njd_set_digit_rule_voiced_sound_symbol_list[i]);\r
-         if (j >= 0) {\r
-            strcpy(buff, njd_set_digit_rule_voiced_sound_symbol_list[i + 1]);\r
-            strcat(buff, &str[j]);\r
-            NJDNode_set_pron(node2, buff);\r
-            break;\r
-         }\r
-      }\r
-   } else if (type == 2) {\r
-      for (i = 0; njd_set_digit_rule_semivoiced_sound_symbol_list[i] != NULL; i += 2) {\r
-         str = NJDNode_get_pron(node2);\r
-         j = strtopcmp(str, njd_set_digit_rule_semivoiced_sound_symbol_list[i]);\r
-         if (j >= 0) {\r
-            strcpy(buff, njd_set_digit_rule_semivoiced_sound_symbol_list[i + 1]);\r
-            strcat(buff, &str[j]);\r
-            NJDNode_set_pron(node2, buff);\r
-            break;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-void njd_set_digit(NJD * njd)\r
-{\r
-   int i, j;\r
-   NJDNode *s = NULL;\r
-   NJDNode *e = NULL;\r
-   NJDNode *node;\r
-   int find = 0;\r
-\r
-   /* convert digit sequence */\r
-   for (node = njd->head; node != NULL; node = node->next) {\r
-      if (get_digit(node, 1) >= 0) {\r
-         if (s == NULL)\r
-            s = node;\r
-         if (node == njd->tail)\r
-            e = node;\r
-         find = 1;\r
-      } else {\r
-         if (s != NULL)\r
-            e = node->prev;\r
-      }\r
-      if (s != NULL && e != NULL) {\r
-         convert_digit_sequence(s, e);\r
-         s = e = NULL;\r
-      }\r
-   }\r
-   if (find == 0)\r
-      return;\r
-   NJD_remove_silent_node(njd);\r
-   if (njd->head == NULL)\r
-      return;\r
-\r
-   /* convert feature of a decimal point */\r
-   find = 0;\r
-   for (node = njd->head->next; node != NULL; node = node->next) {\r
-      if (NJDNode_get_string(node) != NULL) {\r
-         if (node->next != NULL &&\r
-             (strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_TEN1) == 0 ||\r
-              strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_TEN2) == 0) &&\r
-             strcmp(NJDNode_get_pos_group1(node->prev), NJD_SET_DIGIT_KAZU) == 0 &&\r
-             strcmp(NJDNode_get_pos_group1(node->next), NJD_SET_DIGIT_KAZU) == 0) {\r
-            NJDNode_load(node, NJD_SET_DIGIT_TEN_FEATURE);\r
-            NJDNode_set_chain_flag(node, 1);\r
-            find = 1;\r
-            if (NJDNode_get_string(node->prev) != NULL) {\r
-               if (strcmp(NJDNode_get_string(node->prev), NJD_SET_DIGIT_ZERO) == 0) {\r
-                  NJDNode_set_pron(node->prev, NJD_SET_DIGIT_ZERO_BEFORE_DP);\r
-                  NJDNode_set_mora_size(node->prev, 2);\r
-               } else if (strcmp(NJDNode_get_string(node->prev), NJD_SET_DIGIT_TWO) == 0) {\r
-                  NJDNode_set_pron(node->prev, NJD_SET_DIGIT_TWO_BEFORE_DP);\r
-                  NJDNode_set_mora_size(node->prev, 2);\r
-               } else if (strcmp(NJDNode_get_string(node->prev), NJD_SET_DIGIT_FIVE) == 0) {\r
-                  NJDNode_set_pron(node->prev, NJD_SET_DIGIT_FIVE_BEFORE_DP);\r
-                  NJDNode_set_mora_size(node->prev, 2);\r
-               }\r
-            }\r
-         } else if (find > 0) {\r
-            if (strcmp(NJDNode_get_pos_group1(node), NJD_SET_DIGIT_KAZU) == 0) {\r
-               if (strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_ZERO) == 0) {\r
-                  NJDNode_set_pron(node, NJD_SET_DIGIT_ZERO_AFTER_DP);\r
-                  NJDNode_set_mora_size(node, 2);\r
-               } else if (node->next == NULL ||\r
-                          (node->next != NULL &&\r
-                           strcmp(NJDNode_get_pos_group2(node->next),\r
-                                  NJD_SET_DIGIT_JOSUUSHI) != 0)) {\r
-                  if (strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_TWO) == 0) {\r
-                     NJDNode_set_pron(node, NJD_SET_DIGIT_TWO_AFTER_DP);\r
-                     NJDNode_set_mora_size(node, 2);\r
-                  } else if (strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_FIVE) == 0) {\r
-                     NJDNode_set_pron(node, NJD_SET_DIGIT_FIVE_AFTER_DP);\r
-                     NJDNode_set_mora_size(node, 2);\r
-                  }\r
-               }\r
-               if (find % 2 == 1)\r
-                  NJDNode_set_chain_flag(node, 0);\r
-               else\r
-                  NJDNode_set_chain_flag(node, 1);\r
-               find++;\r
-            } else {\r
-               find = 0;\r
-            }\r
-         }\r
-      }\r
-   }\r
-\r
-   for (node = njd->head->next; node != NULL; node = node->next) {\r
-      if (strcmp(NJDNode_get_pos_group1(node->prev), NJD_SET_DIGIT_KAZU) == 0) {\r
-         if (strcmp(NJDNode_get_pos_group2(node), NJD_SET_DIGIT_JOSUUSHI) == 0) {\r
-            /* convert digit pron */\r
-            if (search_numerative_class(njd_set_digit_rule_numerative_class1b, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1b, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1c, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1c, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1d, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1d, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1e, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1e, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1f, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1f, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1g, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1g, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1h, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1h, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1i, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1i, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1j, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1j, node->prev);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class1k, node) == 1)\r
-               convert_digit_pron(njd_set_digit_rule_conv_table1k, node->prev);\r
-            /* convert numerative pron */\r
-            if (search_numerative_class(njd_set_digit_rule_numerative_class2b, node) == 1)\r
-               convert_numerative_pron(njd_set_digit_rule_conv_table2b, node->prev, node);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class2c, node) == 1)\r
-               convert_numerative_pron(njd_set_digit_rule_conv_table2c, node->prev, node);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class2d, node) == 1)\r
-               convert_numerative_pron(njd_set_digit_rule_conv_table2d, node->prev, node);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class2e, node) == 1)\r
-               convert_numerative_pron(njd_set_digit_rule_conv_table2e, node->prev, node);\r
-            else if (search_numerative_class(njd_set_digit_rule_numerative_class2f, node) == 1)\r
-               convert_numerative_pron(njd_set_digit_rule_conv_table2f, node->prev, node);\r
-            /* modify accent phrase */\r
-            NJDNode_set_chain_flag(node->prev, 0);\r
-            NJDNode_set_chain_flag(node, 1);\r
-         }\r
-      }\r
-   }\r
-\r
-   for (node = njd->head->next; node != NULL; node = node->next) {\r
-      if (strcmp(NJDNode_get_pos_group1(node->prev), NJD_SET_DIGIT_KAZU) == 0) {\r
-         if (strcmp(NJDNode_get_pos_group1(node), NJD_SET_DIGIT_KAZU) == 0\r
-             && NJDNode_get_string(node->prev) != NULL && NJDNode_get_string(node) != NULL) {\r
-            /* modify accent phrase */\r
-            find = 0;\r
-            for (i = 0; njd_set_digit_rule_numeral_list4[i] != NULL; i++) {\r
-               if (strcmp(NJDNode_get_string(node->prev), njd_set_digit_rule_numeral_list4[i]) == 0) {\r
-                  for (j = 0; njd_set_digit_rule_numeral_list5[j] != NULL; j++) {\r
-                     if (strcmp(NJDNode_get_string(node), njd_set_digit_rule_numeral_list5[j]) == 0) {\r
-                        NJDNode_set_chain_flag(node->prev, 0);\r
-                        NJDNode_set_chain_flag(node, 1);\r
-                        find = 1;\r
-                        break;\r
-                     }\r
-                  }\r
-                  break;\r
-               }\r
-            }\r
-            if (find == 0) {\r
-               for (i = 0; njd_set_digit_rule_numeral_list5[i] != NULL; i++) {\r
-                  if (strcmp(NJDNode_get_string(node->prev), njd_set_digit_rule_numeral_list5[i]) ==\r
-                      0) {\r
-                     for (j = 0; njd_set_digit_rule_numeral_list4[j] != NULL; j++) {\r
-                        if (strcmp(NJDNode_get_string(node), njd_set_digit_rule_numeral_list4[j]) ==\r
-                            0) {\r
-                           NJDNode_set_chain_flag(node, 0);\r
-                           break;\r
-                        }\r
-                     }\r
-                     break;\r
-                  }\r
-               }\r
-            }\r
-         }\r
-         if (search_numerative_class(njd_set_digit_rule_numeral_list8, node) == 1)\r
-            convert_digit_pron(njd_set_digit_rule_numeral_list9, node->prev);\r
-         if (search_numerative_class(njd_set_digit_rule_numeral_list6, node) == 1)\r
-            convert_numerative_pron(njd_set_digit_rule_numeral_list7, node->prev, node);\r
-      }\r
-   }\r
-\r
-   for (node = njd->head->next; node != NULL; node = node->next) {\r
-      if (node->next != NULL &&\r
-          NJDNode_get_string(node->next) != NULL &&\r
-          strcmp(NJDNode_get_pos_group1(node), NJD_SET_DIGIT_KAZU) == 0 &&\r
-          strcmp(NJDNode_get_pos_group1(node->prev), NJD_SET_DIGIT_KAZU) != 0 &&\r
-          strcmp(NJDNode_get_pos_group2(node->next), NJD_SET_DIGIT_JOSUUSHI) == 0) {\r
-         /* convert class3 */\r
-         for (i = 0; njd_set_digit_rule_numerative_class3[i] != NULL; i += 2) {\r
-            if (strcmp(NJDNode_get_string(node->next), njd_set_digit_rule_numerative_class3[i]) == 0\r
-                && strcmp(NJDNode_get_read(node->next),\r
-                          njd_set_digit_rule_numerative_class3[i + 1]) == 0) {\r
-               for (j = 0; njd_set_digit_rule_conv_table3[j] != NULL; j += 4) {\r
-                  if (NJDNode_get_string(node) != NULL &&\r
-                      strcmp(NJDNode_get_string(node), njd_set_digit_rule_conv_table3[j]) == 0) {\r
-                     NJDNode_set_read(node, (char *) njd_set_digit_rule_conv_table3[j + 1]);\r
-                     NJDNode_set_pron(node, (char *) njd_set_digit_rule_conv_table3[j + 1]);\r
-                     NJDNode_set_acc(node, atoi(njd_set_digit_rule_conv_table3[j + 2]));\r
-                     NJDNode_set_mora_size(node, atoi(njd_set_digit_rule_conv_table3[j + 3]));\r
-                     break;\r
-                  }\r
-               }\r
-               break;\r
-            }\r
-         }\r
-         /* person */\r
-         if (strcmp(NJDNode_get_string(node->next), NJD_SET_DIGIT_NIN) == 0) {\r
-            for (i = 0; njd_set_digit_rule_conv_table4[i] != NULL; i += 2) {\r
-               if (NJDNode_get_string(node) != NULL\r
-                   && strcmp(NJDNode_get_string(node), njd_set_digit_rule_conv_table4[i]) == 0) {\r
-                  NJDNode_load(node, (char *) njd_set_digit_rule_conv_table4[i + 1]);\r
-                  NJDNode_set_pron(node->next, NULL);\r
-                  break;\r
-               }\r
-            }\r
-         }\r
-         /* the day of month */\r
-         if (strcmp(NJDNode_get_string(node->next), NJD_SET_DIGIT_NICHI) == 0\r
-             && NJDNode_get_string(node) != NULL) {\r
-            if (NJDNode_get_string(node->prev) != NULL\r
-                && strstr(NJDNode_get_string(node->prev), NJD_SET_DIGIT_GATSU) != NULL\r
-                && strcmp(NJDNode_get_string(node), NJD_SET_DIGIT_ONE) == 0) {\r
-               NJDNode_load(node, NJD_SET_DIGIT_TSUITACHI);\r
-               NJDNode_set_pron(node->next, NULL);\r
-            } else {\r
-               for (i = 0; njd_set_digit_rule_conv_table5[i] != NULL; i += 2) {\r
-                  if (strcmp(NJDNode_get_string(node), njd_set_digit_rule_conv_table5[i]) == 0) {\r
-                     NJDNode_load(node, (char *) njd_set_digit_rule_conv_table5[i + 1]);\r
-                     NJDNode_set_pron(node->next, NULL);\r
-                     break;\r
-                  }\r
-               }\r
-            }\r
-         } else if (strcmp(NJDNode_get_string(node->next), NJD_SET_DIGIT_NICHIKAN) == 0) {\r
-            for (i = 0; njd_set_digit_rule_conv_table6[i] != NULL; i += 2) {\r
-               if (strcmp(NJDNode_get_string(node), njd_set_digit_rule_conv_table6[i]) == 0) {\r
-                  NJDNode_load(node, (char *) njd_set_digit_rule_conv_table6[i + 1]);\r
-                  NJDNode_set_pron(node->next, NULL);\r
-                  break;\r
-               }\r
-            }\r
-         }\r
-      }\r
-   }\r
-\r
-   NJD_remove_silent_node(njd);\r
-   if (njd->head == NULL)\r
-      return;\r
-}\r
-\r
-NJD_SET_DIGIT_C_END;\r
-\r
-#endif                          /* !NJD_SET_DIGIT_C */\r