From d46b37876ed8bf2736e4ff6fc29f4b5b397aead4 Mon Sep 17 00:00:00 2001 From: tomo Date: Wed, 25 Feb 2004 08:22:42 +0000 Subject: [PATCH] (Q_identical): New variable. (Q_identical_from): New variable. (Fchar_feature): Regard `->identical' as a feature to find ancestors. (Fput_char_attribute): Add reversed link for `{->|<-}identical'. (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs' for `{->|<-}identical'. (syms_of_chartab): Add new symbols `{->|<-}identical'. --- src/chartab.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/chartab.c b/src/chartab.c index 1ef4e31..2ec5694 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -1136,6 +1136,8 @@ Lisp_Object Qsystem_char_id; Lisp_Object Qcomposition; Lisp_Object Q_decomposition; +Lisp_Object Q_identical; +Lisp_Object Q_identical_from; Lisp_Object Q_denotational; Lisp_Object Q_denotational_from; Lisp_Object Q_subsumptive; @@ -3313,7 +3315,8 @@ Return DEFAULT-VALUE if the value is not exist. } } - if ( !(EQ (attribute, Q_subsumptive_from)) && + if ( !(EQ (attribute, Q_identical)) && + !(EQ (attribute, Q_subsumptive_from)) && !(EQ (attribute, Q_denotational_from)) && ( (NILP (char_rel_max) || (INTP (char_rel_max) && @@ -3325,7 +3328,11 @@ Return DEFAULT-VALUE if the value is not exist. if ( (name_str[0] != '=') || (name_str[1] == '>') ) { Lisp_Object ancestors - = Fget_char_attribute (character, Q_subsumptive_from, Qnil); + = Fget_char_attribute (character, Q_identical, Qnil); + + if (NILP (ancestors)) + ancestors + = Fget_char_attribute (character, Q_subsumptive_from, Qnil); if (NILP (ancestors)) ancestors @@ -3482,6 +3489,8 @@ Store CHARACTER's ATTRIBUTE with VALUE. EQ (attribute, Q_subsumptive_from) || EQ (attribute, Q_denotational) || EQ (attribute, Q_denotational_from) || + EQ (attribute, Q_identical) || + EQ (attribute, Q_identical_from) || !NILP (Fstring_match (build_string ("^<-simplified[^*]*$"), Fsymbol_name (attribute), Qnil, Qnil)) ) @@ -3492,7 +3501,11 @@ Store CHARACTER's ATTRIBUTE with VALUE. struct gcpro gcpro1; GCPRO1 (rev_feature); - if (EQ (attribute, Q_subsumptive)) + if (EQ (attribute, Q_identical)) + rev_feature = Q_identical_from; + else if (EQ (attribute, Q_identical_from)) + rev_feature = Q_identical; + else if (EQ (attribute, Q_subsumptive)) rev_feature = Q_subsumptive_from; else if (EQ (attribute, Q_subsumptive_from)) rev_feature = Q_subsumptive; @@ -3782,6 +3795,8 @@ Save values of ATTRIBUTE into database file. Lisp_Object (*filter)(Lisp_Object value); if ( EQ (attribute, Qideographic_structure) + || EQ (attribute, Q_identical) + || EQ (attribute, Q_identical_from) || !NILP (Fstring_match (build_string ("^\\(<-\\|->\\)simplified[^*]*$"), Fsymbol_name (attribute), @@ -4559,6 +4574,8 @@ syms_of_chartab (void) defsymbol (&Q_subsumptive_from, "<-subsumptive"); defsymbol (&Q_denotational, "->denotational"); defsymbol (&Q_denotational_from, "<-denotational"); + defsymbol (&Q_identical, "->identical"); + defsymbol (&Q_identical_from, "<-identical"); defsymbol (&Qcomposition, "composition"); defsymbol (&Q_decomposition, "->decomposition"); defsymbol (&Qcompat, "compat"); -- 1.7.10.4