projects
/
m17n
/
m17n-lib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[m17n/m17n-lib.git]
/
src
/
mtext.c
diff --git
a/src/mtext.c
b/src/mtext.c
index
0439829
..
8efe58e
100644
(file)
--- a/
src/mtext.c
+++ b/
src/mtext.c
@@
-1,5
+1,5
@@
/* mtext.c -- M-text module.
/* mtext.c -- M-text module.
- Copyright (C) 2003, 2004, 2005
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
@@
-17,7
+17,7
@@
You should have received a copy of the GNU Lesser General Public
License along with the m17n library; if not, write to the Free
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
02111-1307, USA. */
/***en
@@
-971,6
+971,7
@@
mtext__init ()
M17N_OBJECT_ADD_ARRAY (mtext_table, "M-text");
M_charbag = msymbol_as_managing_key (" charbag");
mtext_table.count = 0;
M17N_OBJECT_ADD_ARRAY (mtext_table, "M-text");
M_charbag = msymbol_as_managing_key (" charbag");
mtext_table.count = 0;
+ Mlanguage = msymbol ("language");
return 0;
}
return 0;
}
@@
-1585,6
+1586,12
@@
const int MTEXT_FORMAT_UTF_32 = MTEXT_FORMAT_UTF_32LE;
/*** @{ */
/*=*/
/*** @{ */
/*=*/
+/***en The symbol whose name is "language". */
+/***ja "language" ¤È¤¤¤¦Ì¾Á°¤ò»ý¤Ä¥·¥ó¥Ü¥ë. */
+MSymbol Mlanguage;
+
+/*=*/
+
/***en
@brief Allocate a new M-text.
/***en
@brief Allocate a new M-text.
@@
-1664,7
+1671,7
@@
mtext ()
short ñ°Ì¤Ç¤¢¤ë¡£
$FORMAT ¤¬ #MTEXT_FORMAT_UTF_32LE ¤« #MTEXT_FORMAT_UTF_32BE ¤Ê¤é¤Ð¡¢
short ñ°Ì¤Ç¤¢¤ë¡£
$FORMAT ¤¬ #MTEXT_FORMAT_UTF_32LE ¤« #MTEXT_FORMAT_UTF_32BE ¤Ê¤é¤Ð¡¢
- $DATA ¤ÎÆâÍƤÏ@c unsigned ·¿¤Ç¤¢¤ê¡¢$NITEMS ¤Ï unsigned ñ°Ì¤Ç¤¢¤ë¡£
+ $DATA ¤ÎÆâÍÆ¤Ï @c unsigned ·¿¤Ç¤¢¤ê¡¢$NITEMS ¤Ï unsigned ñ°Ì¤Ç¤¢¤ë¡£
³ä¤êÅö¤Æ¤é¤ì¤¿ M-text ¤Îʸ»úÎó¤ÏÊѹ¹¤Ç¤¤Ê¤¤¡£$DATA ¤ÎÆâÍƤÏ
M-text ¤¬Í¸ú¤Ê´Ö¤ÏÊѹ¹¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
³ä¤êÅö¤Æ¤é¤ì¤¿ M-text ¤Îʸ»úÎó¤ÏÊѹ¹¤Ç¤¤Ê¤¤¡£$DATA ¤ÎÆâÍƤÏ
M-text ¤¬Í¸ú¤Ê´Ö¤ÏÊѹ¹¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
@@
-2016,7
+2023,7
@@
mtext_cat_char (MText *mt, int c)
nunits = CHAR_UNITS (c, mt->format);
if ((mt->nbytes + nunits + 1) * unit_bytes > mt->allocated)
{
nunits = CHAR_UNITS (c, mt->format);
if ((mt->nbytes + nunits + 1) * unit_bytes > mt->allocated)
{
- mt->allocated = (mt->nbytes + nunits + 1) * unit_bytes;
+ mt->allocated = (mt->nbytes + nunits * 16 + 1) * unit_bytes;
MTABLE_REALLOC (mt->data, mt->allocated, MERROR_MTEXT);
}
MTABLE_REALLOC (mt->data, mt->allocated, MERROR_MTEXT);
}
@@
-2263,7
+2270,8
@@
mtext_ncpy (MText *mt1, MText *mt2, int n)
(exclusive) while inheriting all the text properties of $MT. $MT
itself is not modified.
(exclusive) while inheriting all the text properties of $MT. $MT
itself is not modified.
- @return If the operation was successful, mtext_duplicate ()
+ @return
+ If the operation was successful, mtext_duplicate ()
returns a pointer to the created M-text. If an error is detected,
it returns NULL and assigns an error code to the external variable
#merror_code. */
returns a pointer to the created M-text. If an error is detected,
it returns NULL and assigns an error code to the external variable
#merror_code. */
@@
-2368,9
+2376,9
@@
mtext_copy (MText *mt1, int pos, MText *mt2, int from, int to)
/***ja
@brief »ØÄêÈϰϤÎʸ»ú¤òÇ˲õŪ¤Ë¼è¤ê½ü¤¯.
/***ja
@brief »ØÄêÈϰϤÎʸ»ú¤òÇ˲õŪ¤Ë¼è¤ê½ü¤¯.
- ´Ø¿ô mtext_del () ¤Ï¡¢M-text $MT ¤Î $FROM ¡Ê$FROM ¼«ÂΤâ´Þ¤à¡Ë¤«¤é $TO
- ¡Ê$TO ¼«ÂΤϴޤޤʤ¤¡Ë¤Þ¤Ç¤Îʸ»ú¤òÇ˲õŪ¤Ë¼è¤ê½ü¤¯¡£·ë²ÌŪ¤Ë $MT ¤ÏŤµ¤¬ ($TO @c
- - $FROM) ¤À¤±½Ì¤à¤³¤È¤Ë¤Ê¤ë¡£
+ ´Ø¿ô mtext_del () ¤Ï¡¢M-text $MT ¤Î $FROM ¡Ê$FROM ¼«ÂΤâ´Þ¤à¡Ë¤«¤é
+ $TO ¡Ê$TO ¼«ÂΤϴޤޤʤ¤¡Ë¤Þ¤Ç¤Îʸ»ú¤òÇ˲õŪ¤Ë¼è¤ê½ü¤¯¡£·ë²ÌŪ¤Ë
+ $MT ¤ÏŤµ¤¬ ($TO @c - $FROM) ¤À¤±½Ì¤à¤³¤È¤Ë¤Ê¤ë¡£
@return
½èÍý¤¬À®¸ù¤¹¤ì¤Ð mtext_del () ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð -1
@return
½èÍý¤¬À®¸ù¤¹¤ì¤Ð mtext_del () ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð -1
@@
-2474,7
+2482,8
@@
mtext_ins (MText *mt1, int pos, MText *mt2)
On insertion, all the text properties of the sub-text of $MT2 are
inherited.
On insertion, all the text properties of the sub-text of $MT2 are
inherited.
- @return If the operation was successful, mtext_insert () returns
+ @return
+ If the operation was successful, mtext_insert () returns
0. Otherwise, it returns -1 and assigns an error code to the
external variable #merror_code. */
0. Otherwise, it returns -1 and assigns an error code to the
external variable #merror_code. */
@@
-2626,7
+2635,8
@@
mtext_ins_char (MText *mt, int pos, int c, int n)
of M-text $MT2 between $FROM2 (inclusive) and $TO2 (exclusive).
The new sub-text inherits text properties of the old sub-text.
of M-text $MT2 between $FROM2 (inclusive) and $TO2 (exclusive).
The new sub-text inherits text properties of the old sub-text.
- @return If the operation was successful, mtext_replace () returns
+ @return
+ If the operation was successful, mtext_replace () returns
0. Otherwise, it returns -1 and assigns an error code to the
external variable #merror_code. */
0. Otherwise, it returns -1 and assigns an error code to the
external variable #merror_code. */
@@
-2639,7
+2649,8
@@
mtext_ins_char (MText *mt, int pos, int c, int n)
¤´¹¤¨¤ë¡£¿·¤·¤¯ÁÞÆþ¤µ¤ì¤¿Éôʬ¤Ï¡¢ÃÖ¤´¹¤¨¤ëÁ°¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£
¤¹¤Ù¤Æ¤ò·Ñ¾µ¤¹¤ë¡£
¤´¹¤¨¤ë¡£¿·¤·¤¯ÁÞÆþ¤µ¤ì¤¿Éôʬ¤Ï¡¢ÃÖ¤´¹¤¨¤ëÁ°¤Î¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£
¤¹¤Ù¤Æ¤ò·Ñ¾µ¤¹¤ë¡£
- @return ½èÍý¤¬À®¸ù¤¹¤ì¤Ð¡¢ mtext_replace () ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê
+ @return
+ ½èÍý¤¬À®¸ù¤¹¤ì¤Ð¡¢ mtext_replace () ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê
¤±¤ì¤Ð -1 ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô #merror_code ¤Ë¥¨¥é¡¼¥³¡¼¥É¤òÀßÄꤹ¤ë¡£ */
/***
¤±¤ì¤Ð -1 ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô #merror_code ¤Ë¥¨¥é¡¼¥³¡¼¥É¤òÀßÄꤹ¤ë¡£ */
/***
@@
-3434,7
+3445,8
@@
mtext_case_compare (MText *mt1, int from1, int to1,
*/
/***
*/
/***
- @seealso mtext_titlecase (), mtext_uppercase ()
+ @seealso
+ mtext_titlecase (), mtext_uppercase ()
*/
int
*/
int
@@
-3475,7
+3487,8
@@
mtext_lowercase (MText *mt)
*/
/***
*/
/***
- @seealso mtext_lowercase (), mtext_uppercase ()
+ @seealso
+ mtext_lowercase (), mtext_uppercase ()
*/
int
*/
int
@@
-3545,7
+3558,8
@@
mtext_titlecase (MText *mt)
*/
/***
*/
/***
- @seealso mtext_lowercase (), mtext_titlecase ()
+ @seealso
+ mtext_lowercase (), mtext_titlecase ()
*/
int
*/
int
@@
-3568,8
+3582,9
@@
mtext_uppercase (MText *mt)
@brief Dump an M-text.
The mdebug_dump_mtext () function prints the M-text $MT in a human
@brief Dump an M-text.
The mdebug_dump_mtext () function prints the M-text $MT in a human
- readable way to the stderr. $INDENT specifies how many columns to
- indent the lines but the first one. If $FULLP is zero, this
+ readable way to the stderr or to what specified by the environment
+ variable MDEBUG_OUTPUT_FILE. $INDENT specifies how many columns
+ to indent the lines but the first one. If $FULLP is zero, this
function prints only a character code sequence. Otherwise, it
prints the internal byte sequence and text properties as well.
function prints only a character code sequence. Otherwise, it
prints the internal byte sequence and text properties as well.
@@
-3578,10
+3593,11
@@
mtext_uppercase (MText *mt)
/***ja
@brief M-text ¤ò¥À¥ó¥×¤¹¤ë.
/***ja
@brief M-text ¤ò¥À¥ó¥×¤¹¤ë.
- ´Ø¿ô mdebug_dump_mtext () ¤Ï M-text $MT ¤ò stderr
- ¤Ë¿Í´Ö¤Ë²ÄÆɤʷÁ¤Ç°õºþ¤¹¤ë¡£ $INDENT ¤Ï£²¹ÔÌܰʹߤΥ¤¥ó¥Ç¥ó¥È¤ò»ØÄꤹ¤ë¡£
- $FULLP ¤¬ 0 ¤Ê¤é¤Ð¡¢Ê¸»ú¥³¡¼¥ÉÎó¤À¤±¤ò°õºþ¤¹¤ë¡£
- ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢ÆâÉô¥Ð¥¤¥ÈÎó¤È¥Æ¥¥¹¥È¥×¥í¥Ñ¥Æ¥£¤â°õºþ¤¹¤ë¡£
+ ´Ø¿ô mdebug_dump_mtext () ¤Ï M-text $MT ¤òɸ½à¥¨¥é¡¼½ÐÎϤ⤷¤¯¤Ï´Ä
+ ¶ÊÑ¿ô MDEBUG_DUMP_FONT ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¿Í´Ö¤Ë²ÄÆɤʷÁ¤Ç°õºþ
+ ¤¹¤ë¡£ $INDENT ¤Ï£²¹ÔÌܰʹߤΥ¤¥ó¥Ç¥ó¥È¤ò»ØÄꤹ¤ë¡£$FULLP ¤¬ 0 ¤Ê¤é
+ ¤Ð¡¢Ê¸»ú¥³¡¼¥ÉÎó¤À¤±¤ò°õºþ¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢ÆâÉô¥Ð¥¤¥ÈÎó¤È¥Æ¥
+ ¥¹¥È¥×¥í¥Ñ¥Æ¥£¤â°õºþ¤¹¤ë¡£
@return
¤³¤Î´Ø¿ô¤Ï $MT ¤òÊÖ¤¹¡£ */
@return
¤³¤Î´Ø¿ô¤Ï $MT ¤òÊÖ¤¹¡£ */
@@
-3589,40
+3605,44
@@
mtext_uppercase (MText *mt)
MText *
mdebug_dump_mtext (MText *mt, int indent, int fullp)
{
MText *
mdebug_dump_mtext (MText *mt, int indent, int fullp)
{
- char *prefix = (char *) alloca (indent + 1);
int i;
int i;
- unsigned char *p;
-
- memset (prefix, 32, indent);
- prefix[indent] = 0;
- fprintf (stderr,
- "(mtext (size %d %d %d) (cache %d %d)",
- mt->nchars, mt->nbytes, mt->allocated,
- mt->cache_char_pos, mt->cache_byte_pos);
if (! fullp)
{
if (! fullp)
{
- fprintf (stderr, " \"");
+ fprintf (mdebug__output, "\"");
for (i = 0; i < mt->nchars; i++)
{
int c = mtext_ref_char (mt, i);
if (c == '"' || c == '\\')
for (i = 0; i < mt->nchars; i++)
{
int c = mtext_ref_char (mt, i);
if (c == '"' || c == '\\')
- fprintf (stderr, "\\%c", c);
- else if (c >= ' ' && c < 127)
- fprintf (stderr, "%c", c);
+ fprintf (mdebug__output, "\\%c", c);
+ else if ((c >= ' ' && c < 127) || c == '\n')
+ fprintf (mdebug__output, "%c", c);
else
else
- fprintf (stderr, "\\x%02X", c);
+ fprintf (mdebug__output, "\\x%02X", c);
}
}
- fprintf (stderr, "\"");
+ fprintf (mdebug__output, "\"");
+ return mt;
}
}
- else if (mt->nchars > 0)
+
+ fprintf (mdebug__output,
+ "(mtext (size %d %d %d) (cache %d %d)",
+ mt->nchars, mt->nbytes, mt->allocated,
+ mt->cache_char_pos, mt->cache_byte_pos);
+
+ if (mt->nchars > 0)
{
{
- fprintf (stderr, "\n%s (bytes \"", prefix);
+ char *prefix = (char *) alloca (indent + 1);
+ unsigned char *p;
+
+ memset (prefix, 32, indent);
+ prefix[indent] = 0;
+
+ fprintf (mdebug__output, "\n%s (bytes \"", prefix);
for (i = 0; i < mt->nbytes; i++)
for (i = 0; i < mt->nbytes; i++)
- fprintf (stderr, "\\x%02x", mt->data[i]);
- fprintf (stderr, "\")\n");
- fprintf (stderr, "%s (chars \"", prefix);
+ fprintf (mdebug__output, "\\x%02x", mt->data[i]);
+ fprintf (mdebug__output, "\")\n");
+ fprintf (mdebug__output, "%s (chars \"", prefix);
p = mt->data;
for (i = 0; i < mt->nchars; i++)
{
p = mt->data;
for (i = 0; i < mt->nchars; i++)
{
@@
-3630,21
+3650,21
@@
mdebug_dump_mtext (MText *mt, int indent, int fullp)
int c = STRING_CHAR_AND_BYTES (p, len);
if (c == '"' || c == '\\')
int c = STRING_CHAR_AND_BYTES (p, len);
if (c == '"' || c == '\\')
- fprintf (stderr, "\\%c", c);
+ fprintf (mdebug__output, "\\%c", c);
else if (c >= ' ' && c < 127)
else if (c >= ' ' && c < 127)
- fputc (c, stderr);
+ fputc (c, mdebug__output);
else
else
- fprintf (stderr, "\\x%X", c);
+ fprintf (mdebug__output, "\\x%X", c);
p += len;
}
p += len;
}
- fprintf (stderr, "\")");
+ fprintf (mdebug__output, "\")");
if (mt->plist)
{
if (mt->plist)
{
- fprintf (stderr, "\n%s ", prefix);
+ fprintf (mdebug__output, "\n%s ", prefix);
dump_textplist (mt->plist, indent + 1);
}
}
dump_textplist (mt->plist, indent + 1);
}
}
- fprintf (stderr, ")");
+ fprintf (mdebug__output, ")");
return mt;
}
return mt;
}