X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Ftextprop.c;h=e5b0e0f51d84b681a2c12805e241fd5b95919e14;hb=cd2d763b943e041291fdf003b098848efb40492b;hp=42a026afaf898c602a420c896718fb928e471b8a;hpb=68ce3967e926ad341df6171f8abe6bdd954cf3c7;p=m17n%2Fm17n-lib.git
diff --git a/src/textprop.c b/src/textprop.c
index 42a026a..e5b0e0f 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -32,8 +32,8 @@
application programs can be simple.
A text property consists of a @e key and @e values, where key is a
- symbol and values are anything that can be cast to (void
- *). Unlike other types of properties, a text property can
+ symbol and values are anything that can be cast to (void *)
+ . Unlike other types of properties, a text property can
have multiple values. "The text property whose key is K" may be
shortened to "K property". */
@@ -1429,6 +1429,20 @@ mtext__adjust_plist_for_insert (MText *mt, int pos, int nchars,
}
}
+void
+mtext__adjust_plist_for_change (MText *mt, int from, int to)
+{
+ MTextPlist *plist;
+
+ prepare_to_modify (mt, from, to, Mnil);
+ for (plist = mt->plist; plist; plist = plist->next)
+ {
+ pop_all_properties (plist, from, to);
+ xassert (check_plist (plist, 0) == 0);
+ }
+}
+
+
/*** @} */
#endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */
@@ -1519,7 +1533,7 @@ mtext_get_prop (MText *mt, int pos, MSymbol key)
/*=*/
/***en
- @brief Get multiple values of a text property
+ @brief Get multiple values of a text property.
The mtext_get_prop_values () function searches the character at
$POS in M-text $MT for the property whose key is $KEY. If such
@@ -1597,7 +1611,7 @@ mtext_get_prop_values (MText *mt, int pos, MSymbol key,
/*=*/
/***en
- @brief Get list of text property keys at a position of an M-text.
+ @brief Get a list of text property keys at a position of an M-text.
The mtext_get_prop_keys () function creates an array whose
elements are the keys of text properties found at position $POS in
@@ -1823,7 +1837,8 @@ mtext_put_prop_values (MText *mt, int from, int to,
The mtext_push_prop () function pushes a text property whose key
is $KEY and value is $VAL to the characters between $FROM
- (inclusive) and $TO (exclusive) in $MT. With this functio,
+ (inclusive) and $TO (exclusive) in M-text $MT. With this
+ function,
@verbatim
FROM TO
@@ -1970,7 +1985,7 @@ mtext_push_prop (MText *mt, int from, int to,
/*=*/
/***en
- @brief Pop a text property
+ @brief Pop a text property.
The mtext_pop_prop () function removes the topmost text property
whose key is $KEY from the characters between $FROM (inclusive)
@@ -2140,7 +2155,7 @@ mtext_pop_prop (MText *mt, int from, int to, MSymbol key)
´Ø¿ô mtext_prop_range () ¤Ï¡¢»ØÄꤷ¤¿¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬Æ±¤¸
¤Ç¤¢¤ëϢ³¤·¤¿Ê¸»ú¤ÎÈϰϤòÄ´¤Ù¤ë¡£¤Þ¤º M-text $MT ¤Î $POS ¤Î°ÌÃÖ¤Ë
- ¤¢¤ëʸ»ú¤Î¥×¥í¥Ñ¥Æ¥£¤Î¤¦¤Á¡¢¥¡¼ $KEY ¤Ç»ØÄꤵ¤ì¤¿¤â¤Î¤ÎÃͤò¸«¤Ä¤±
+ ¤¢¤ëʸ»ú¤Î¥×¥í¥Ñ¥Æ¥£¤Î¤¦¤Á¡¢¥¡¼ $KEY ¤Ç»ØÄꤵ¤ì¤¿¤â¤ÎÃͤò¸«¤Ä¤±
¤ë¡£¤½¤·¤ÆÁ°¸å¤Îʸ»ú¤â $KEY ¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬Æ±¤¸¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò
Ä´¤Ù¤ë¡£¸«¤Ä¤±¤¿ÈϰϤκǽé¤ÈºÇ¸å¤ò¡¢¤½¤ì¤¾¤ì $FROM ¤È $TO ¤Ë¥Ý¥¤¥ó
¥È¤µ¤ì¤ëÊÑ¿ô¤ËÊݸ¤¹¤ë¡£$FROM ¤ËÊݸ¤µ¤ì¤ëʸ»ú¤Î°ÌÃ֤ϸ«¤Ä¤±¤¿ÈÏ°Ï
@@ -2235,6 +2250,7 @@ mtext_prop_range (MText *mt, MSymbol key, int pos,
$CONTROL_BITS must be 0 or logical OR of @c enum @c
MTextPropertyControl. */
+
/***ja
@brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÀ¸À®¤¹¤ë.
@@ -2257,6 +2273,7 @@ mtext_property (MSymbol key, void *val, int control_bits)
The mtext_property_mtext () function returns the M-text to which
text property $PROP is attached. If $PROP is currently detached,
NULL is returned. */
+
/***ja
@brief ¤¢¤ë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò»ý¤Ä M-text ¤òÊÖ¤¹.
@@ -2275,6 +2292,7 @@ mtext_property_mtext (MTextProperty *prop)
The mtext_property_key () function returns the key (symbol) of
text property $PROP. */
+
/***ja
@brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î¥¡¼¤òÊÖ¤¹.
@@ -2292,6 +2310,7 @@ mtext_property_key (MTextProperty *prop)
The mtext_property_value () function returns the value of text
property $PROP. */
+
/***ja
@brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÊÖ¤¹.
@@ -2311,6 +2330,7 @@ mtext_property_value (MTextProperty *prop)
text property $PROP. The start position is a character position
of an M-text where $PROP begins. If $PROP is detached, it returns
-1. */
+
/***ja
@brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î³«»Ï°ÌÃÖ¤òÊÖ¤¹.
@@ -2331,6 +2351,7 @@ mtext_property_start (MTextProperty *prop)
text property $PROP. The end position is a character position of
an M-text where $PROP ends. If $PROP is detached, it returns
-1. */
+
/***ja
@brief ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î½ªÎ»°ÌÃÖ¤òÊÖ¤¹.
@@ -2358,6 +2379,7 @@ mtext_property_end (MTextProperty *prop)
If an error is detected, mtext_get_property () returns @c NULL and
assigns an error code to the external variable #merror_code. */
+
/***ja
@brief °ìÈÖ¾å¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÆÀ¤ë.
@@ -2405,6 +2427,7 @@ mtext_get_property (MText *mt, int pos, MSymbol key)
$POS does not have a property whose key is $KEY, the return value
is 0. If an error is detected, mtext_get_properties () returns -1
and assigns an error code to the external variable #merror_code. */
+
/***ja
@brief Ê£¿ô¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÆÀ¤ë.
@@ -2468,6 +2491,7 @@ mtext_get_properties (MText *mt, int pos, MSymbol key,
If the operation was successful, mtext_attach_property () returns
0. Otherwise it returns -1 and assigns an error code to the
external variable #merror_code. */
+
/***ja
@brief M-text¤Ë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÉղ乤ë.
@@ -2480,6 +2504,7 @@ mtext_get_properties (MText *mt, int pos, MSymbol key,
¤ì¤Ð -1 ¤òÊÖ¤·¤Æ³°ÉôÊÑ¿ô#merror_code ¤Ë¥¨¥é¡¼¥³¡¼¥É¤òÀßÄꤹ¤ë¡£ */
+int
mtext_attach_property (MText *mt, int from, int to, MTextProperty *prop)
{
MTextPlist *plist;
@@ -2517,8 +2542,9 @@ mtext_attach_property (MText *mt, int from, int to, MTextProperty *prop)
@return
This function always returns 0. */
+
/***ja
- @brief M-text ¤«¤é¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òʬΥ¤¹¤ë¡£
+ @brief M-text ¤«¤é¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òʬΥ¤¹¤ë.
´Ø¿ô mtext_detach_property () ¤Ï¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£ $PROP ¤òʬΥ¤¹¤ë¡£
@@ -2543,18 +2569,21 @@ mtext_detach_property (MTextProperty *prop)
/***en
@brief Push a text property onto an M-text.
- The mtext_push_property () function attaches text property $PROP on
- M-text $MT by the "push" manner.
+ The mtext_push_property () function pushes text property $PROP to
+ the characters between $FROM (inclusive) and $TO (exclusive) in
+ M-text $MT.
@return
If the operation was successful, mtext_push_property () returns
0. Otherwise it returns -1 and assigns an error code to the
external variable #merror_code. */
+
/***ja
@brief M-text ¤Ë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥×¥Ã¥·¥å¤¹¤ë.
- ´Ø¿ô mtext_push_property () ¤Ï¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£ $PROP ¤òM-text
- $MT ¤Ë¥×¥Ã¥·¥å¤·¤ÆÉղ乤롣
+ ´Ø¿ô mtext_push_property () ¤Ï¡¢¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£ $PROP ¤ò¡¢
+ M-text $MT Ãæ¤Î $FROM ¡Ê´Þ¤Þ¤ì¤ë¡Ë¤«¤é $TO ¡Ê´Þ¤Þ¤ì¤Ê¤¤¡Ë¤ÎÈϰϤÎ
+ ʸ»ú¤Ë¥×¥Ã¥·¥å¤¹¤ë¡£
@return
½èÍý¤ËÀ®¸ù¤¹¤ì¤Ð¡¢mtext_push_property () ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±
@@ -2657,17 +2686,20 @@ mtext_push_property (MText *mt, int from, int to, MTextProperty *prop)
property whose key is #Mtext_prop_serializer and value is a
pointer to an appropriate serializer function.
- @seealso Mtext_prop_serializer (), MTextPropSerializeFunc
+ @seealso
+ mtext_serialize (), #MTextPropSerializeFunc
*/
+
/***ja
@brief ¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤ò»ØÄꤹ¤ë¥·¥ó¥Ü¥ë.
- ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¤¿¤á¤Ë¡¢¥æ¡¼¥¶¤Ï¥Æ¥¥¹¥È¥×¥í¥Ñ
+ ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ
¥Æ¥£ÍѤΥ·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤òÍ¿¤¨¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¶ñÂÎŪ¤Ë¤Ï¡¢
#Mtext_prop_serializer ¤ò¥¡¼¤È¤·¡¢Å¬Àڤʥ·¥ê¥¢¥é¥¤¥º´Ø¿ô¤Ø¤Î¥Ý¥¤
- ¥ó¥¿¤òÃͤȤ¹¤ë¥·¥ó¥Ü¥ë¤ò»ØÄꤹ¤ë¡£
+ ¥ó¥¿¤òÃͤȤ¹¤ë¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¡£
- @seealso Mtext_prop_serializer (), MTextPropSerializeFunc
+ @seealso
+ mtext_serialize (), #MTextPropSerializeFunc
*/
MSymbol Mtext_prop_serializer;
@@ -2679,17 +2711,20 @@ MSymbol Mtext_prop_serializer;
property whose key is #Mtext_prop_deserializer and value is a
pointer to an appropriate deserializer function.
- @seealso Mtext_prop_serializer (), MTextPropSerializeFunc
+ @seealso
+ mtext_deserialize (), #MTextPropSerializeFunc
*/
+
/***ja
@brief ¥Ç¥·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤ò»ØÄꤹ¤ë¥·¥ó¥Ü¥ë.
- ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥Ç¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¤¿¤á¤Ë¡¢¥æ¡¼¥¶¤Ï¥Æ¥¥¹¥È¥×¥í
+ ¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥Ç¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤Î¥Æ¥¥¹¥È¥×¥í
¥Ñ¥Æ¥£ÍѤΥǥ·¥ê¥¢¥é¥¤¥¶´Ø¿ô¤òÍ¿¤¨¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¶ñÂÎŪ¤Ë¤Ï¡¢
#Mtext_prop_deserializer ¤ò¥¡¼¤È¤·¡¢Å¬Àڤʥǥ·¥ê¥¢¥é¥¤¥º´Ø¿ô¤Ø¤Î
- ¥Ý¥¤¥ó¥¿¤òÃͤȤ¹¤ë¥·¥ó¥Ü¥ë¤ò»ØÄꤹ¤ë¡£
+ ¥Ý¥¤¥ó¥¿¤òÃͤȤ¹¤ë¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¡£
- @seealso Mtext_prop_serializer (), MTextPropSerializeFunc
+ @seealso
+ mtext_deserialize (), #MTextPropSerializeFunc
*/
MSymbol Mtext_prop_deserializer;
@@ -2697,14 +2732,15 @@ MSymbol Mtext_prop_deserializer;
@brief Serialize text properties in an M-text.
The mtext_serialize () function serializes the text between $FROM
- and $TO in M-text $MT. The serialized result is an M-text in the
+ and $TO in M-text $MT. The serialized result is an M-text in a
form of XML. $PROPERTY_LIST limits the text properties to be
- serialized. If a symbol
- @li appears as the value of an element in $PROPERTY_LIST (the key must be @c Mt ), and
- @li has the symbol property #Mtext_prop_serializer,
-
- a text property having that symbol as its key is turned into the
- "property" element in the resulting XML representation.
+ serialized. Only those text properties whose key
+
+ @li appears as the value of an element in $PROPERTY_LIST, and
+ @li has the symbol property #Mtext_prop_serializer
+
+ are serialized as a "property" element in the resulting XML
+ representation.
The DTD of the generated XML is as follows:
@@ -2730,19 +2766,21 @@ MSymbol Mtext_prop_deserializer;
error code to the external variable #merror_code.
@seealso
- mtext_deserialize (), Mtext_prop_serializer */
+ mtext_deserialize (), #Mtext_prop_serializer */
+
/***ja
@brief M-text Ãæ¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥·¥ê¥¢¥é¥¤¥º¤¹¤ë.
´Ø¿ô mtext_serialize () ¤Ï M-text $MT ¤Î $FROM ¤«¤é $TO ¤Þ¤Ç¤Î¥Æ¥
- ¥¹¥È¤ò¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¡£¥·¥ê¥¢¥é¥¤¥º¤·¤¿·ë²Ì XML ·Á¼°¤Î M-text ¤Ç
+ ¥¹¥È¤ò¥·¥ê¥¢¥é¥¤¥º¤¹¤ë¡£¥·¥ê¥¢¥é¥¤¥º¤·¤¿·ë²Ì¤Ï XML ·Á¼°¤Î M-text ¤Ç
¤¢¤ë¡£ $PROPERTY_LIST ¤Ï¥·¥ê¥¢¥é¥¤¥º¤µ¤ì¤ë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¸ÂÄê
- ¤¹¤ë¡£¥·¥ó¥Ü¥ë¤¬
- @li $PROPERTY_LIST (¥¡¼¤Ï @c Mt) ¤ÎÍ×ÁǤÎÃͤȤ·¤Æ¸½¤ï¤ì¡¢
- @li ¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£ #Mtext_prop_serializer ¤ò»ý¤Ä¤Ê¤é¤Ð¡¢
+ ¤¹¤ë¡£ÂоݤȤʤë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¡¢¤½¤Î¥¡¼¤¬
+
+ @li $PROPERTY_LIST ¤ÎÍ×ÁǤÎÃͤȤ·¤Æ¸½¤ï¤ì¡¢¤«¤Ä
+ @li ¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£ #Mtext_prop_serializer ¤ò»ý¤Ä
- ¤³¤Î¥·¥ó¥Ü¥ë¤ò¥¡¼¤È¤¹¤ë¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¡¢À¸À®¤µ¤ì¤ë XML ɽ¸½
- Ãæ¤Ç "property" Í×ÁǤËÊÑ´¹¤µ¤ì¤ë¡£
+ ¤â¤Î¤Î¤ß¤Ç¤¢¤ë¡£¤³¤Î¾ò·ï¤òËþ¤¿¤¹¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¡¢À¸À®¤µ¤ì¤ë
+ XML ɽ¸½Ãæ¤Ç "property" Í×ÁǤ˥·¥ê¥¢¥é¥¤¥º¤µ¤ì¤ë¡£
À¸À®¤µ¤ì¤ë XML ¤Î DTD ¤Ï°Ê²¼¤ÎÄ̤ê:
@@ -2768,7 +2806,7 @@ MSymbol Mtext_prop_deserializer;
¤òÀßÄꤹ¤ë¡£
@seealso
- mtext_deserialize (), Mtext_prop_serializer */
+ mtext_deserialize (), #Mtext_prop_serializer */
MText *
mtext_serialize (MText *mt, int from, int to, MPlist *property_list)
@@ -2881,7 +2919,8 @@ mtext_serialize (MText *mt, int from, int to, MPlist *property_list)
code to the external variable #merror_code.
@seealso
- mtext_serialize (), Mtext_prop_deserializer */
+ mtext_serialize (), #Mtext_prop_deserializer */
+
/***ja
@brief M-text Ãæ¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤ò¥Ç¥·¥ê¥¢¥é¥¤¥º¤¹¤ë.
@@ -2910,7 +2949,7 @@ mtext_serialize (MText *mt, int from, int to, MPlist *property_list)
¥³¡¼¥É¤òÀßÄꤹ¤ë¡£
@seealso
- mtext_serialize (), Mtext_prop_deserializer */
+ mtext_serialize (), #Mtext_prop_deserializer */
MText *
mtext_deserialize (MText *mt)