/* textprop.c -- text property module.
- Copyright (C) 2003, 2004
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
You should have received a copy of the GNU Lesser General Public
License along with the m17n library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
02111-1307, USA. */
/***en
memset (prefix, 32, indent);
prefix[indent] = 0;
- fprintf (stderr, "(interval %d-%d (%d)", interval->start, interval->end,
- interval->nprops);
+ fprintf (mdebug__output, "(interval %d-%d (%d)",
+ interval->start, interval->end, interval->nprops);
for (i = 0; i < interval->nprops; i++)
- fprintf (stderr, "\n%s (%d %d/%d %d-%d 0x%x)",
+ fprintf (mdebug__output, "\n%s (%d %d/%d %d-%d 0x%x)",
prefix, i,
interval->stack[i]->control.ref_count,
interval->stack[i]->attach_count,
interval->stack[i]->start, interval->stack[i]->end,
(unsigned) interval->stack[i]->val);
- fprintf (stderr, ")");
+ fprintf (mdebug__output, ")");
}
void
memset (prefix, 32, indent);
prefix[indent] = 0;
- fprintf (stderr, "(properties");
+ fprintf (mdebug__output, "(properties");
if (! plist)
- fprintf (stderr, ")\n");
+ fprintf (mdebug__output, ")\n");
else
{
- fprintf (stderr, "\n");
+ fprintf (mdebug__output, "\n");
while (plist)
{
MInterval *interval = plist->head;
- fprintf (stderr, "%s (%s", prefix, msymbol_name (plist->key));
+ fprintf (mdebug__output, "%s (%s", prefix, msymbol_name (plist->key));
while (interval)
{
- fprintf (stderr, " (%d %d", interval->start, interval->end);
+ fprintf (mdebug__output, " (%d %d",
+ interval->start, interval->end);
if (interval->nprops > 0)
{
int i;
for (i = 0; i < interval->nprops; i++)
- fprintf (stderr, " 0x%x", (int) interval->stack[i]->val);
+ fprintf (mdebug__output, " 0x%x",
+ (int) interval->stack[i]->val);
}
- fprintf (stderr, ")");
+ fprintf (mdebug__output, ")");
interval = interval->next;
}
- fprintf (stderr, ")\n");
+ fprintf (mdebug__output, ")\n");
xassert (check_plist (plist, 0) == 0);
plist = plist->next;
}
for (plist = mt->plist; plist; plist = plist->next)
{
MInterval *head = find_interval (plist, pos2);
- MInterval *tail = mt->plist->tail;
+ MInterval *tail = plist->tail;
MTextProperty *prop;
int i;
int n;
M_CHECK_RANGE (mt, from, to, NULL, NULL);
+ if (mt->format != MTEXT_FORMAT_US_ASCII
+ && mt->format != MTEXT_FORMAT_UTF_8)
+ mtext__adjust_format (mt, MTEXT_FORMAT_UTF_8);
+ if (MTEXT_DATA (mt)[mtext_nbytes (mt)] != 0)
+ MTEXT_DATA (mt)[mtext_nbytes (mt)] = 0;
doc = xmlParseMemory (XML_TEMPLATE, strlen (XML_TEMPLATE) + 1);
node = xmlDocGetRootElement (doc);
{
MSymbol key = MPLIST_VAL (pl);
- func = (MTextPropSerializeFunc) msymbol_get (key, Mtext_prop_serializer);
+ func = ((MTextPropSerializeFunc)
+ msymbol_get_func (key, Mtext_prop_serializer));
if (func)
extract_text_properties (mt, from, to, key, plist);
}
MPlist *serialized_plist;
xmlNodePtr child;
- func = (MTextPropSerializeFunc) msymbol_get (prop->key,
- Mtext_prop_serializer);
+ func = ((MTextPropSerializeFunc)
+ msymbol_get_func (prop->key, Mtext_prop_serializer));
serialized_plist = (func) (prop->val);
if (! serialized_plist)
continue;
mtext_reset (work);
- mplist__serialize (work, serialized_plist);
+ mplist__serialize (work, serialized_plist, 0);
child = xmlNewChild (node, NULL, (xmlChar *) "property", NULL);
xmlSetProp (child, (xmlChar *) "key",
(xmlChar *) MSYMBOL_NAME (prop->key));
@brief Deserialize text properties in an M-text.
The mtext_deserialize () function deserializes M-text $MT. $MT
- must be an XML having the followng DTD.
+ must be an XML having the following DTD.
@verbatim
<!DOCTYPE mtext [
key = msymbol ((char *) key_str);
func = ((MTextPropDeserializeFunc)
- msymbol_get (key, Mtext_prop_deserializer));
+ msymbol_get_func (key, Mtext_prop_deserializer));
if (! func)
continue;
plist = mplist__from_string (val_str, strlen ((char *) val_str));