本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > n

nl_tools_16(3X)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

nl_tools_16: ADVANCE(), byte_status(), BYTE_STATUS(), CHARADV(), CHARAT(), c_colwidth(), C_COLWIDTH(), firstof2(), FIRSTof2(), secof2(), SECof2(), WCHAR(), WCHARADV() ― 16 ビット文字処理用ツール (10.30 で廃止)

構文

#include <nl_ctype.h>

int firstof2(int c);

int secof2(int c);

int byte_status(int c, int laststatus);

int c_colwidth(int c);

int FIRSTof2(int c);

int SECof2(int c);

int BYTE_STATUS(int c, int laststatus);

int C_COLWIDTH(int c);

int CHARAT(const char *p);

int ADVANCE(const char *p);

int CHARADV(const char *p);

int WCHAR(wchar_t wc, char *p);

int WCHARADV(wchar_t wc, char *p);

void PCHAR(int c, char *p);

void PCHARADV(int c, char *p);

特記事項

上記のインタフェースのうち、大文字で始まるものはマクロで実現されています。それ以外のインタフェースは関数です。

これらのマクロと関数は一般にはもう使用されていません。警告を参照してください。

説明

以下のマクロと関数はロードされている NLS 環境に基づいて処理を行います setlocale(3C) を参照)。

FIRSTof2() 

1 バイトの引き数をとり、ロードされている NLS 環境に照らして、2 バイト文字の 1 バイト目になり得るかどうか判定します。なり得るときは 0 以外の値を、なり得ないときは 0 を返します。

SECof2() 

1 バイトの引き数をとり、ロードされている NLS 環境に照らして、2 バイト文字の 2 バイト目になり得るかどうか判定します。なり得るときは 0 以外の値を、なり得ないときは 0 を返します。

BYTE_STATUS() 

c で与えた現在注目しているバイト値と、直前に呼び出した BYTE_STATUS() の返した直前のバイト値のステータス laststatus に基づき、以下の値のどれかを返します。 これらは <nl_ctype.h> で定義されたステータス値です。

ONEBYTE 

シングルバイト文字

SECOF2 

2 バイト文字の 2 バイト目

FIRSTOF2 

2 バイト文字の 2 バイト目

2 バイト文字を正しく確認するためには、1 バイト目、2 バイト目の両方を確認する必要があります。 laststatus の値が FIRSTOF2 であっても、 SECof2(c) が偽を返せば BYTE_STATUS(c, laststatus)ONEBYTE を返します。

C_COLWIDTH() 

1 バイト文字か 2 バイト文字の 1 バイト目を引き数にとり、その文字がターミナル画面で占める文字数を返します。

マクロ BYTE_STATUS(), C_COLWIDTH(), FIRSTof2(), SEC0of2() に与える引き数 c が-1 (EOF) 未満であるか 255 より大きい場合、これらのマクロの戻り値は定義されていません。

CHARAT() 

1 バイト文字か 2 バイト文字の 1 バイト目を指すポインター p を引き数にとります。 どちらの場合も CHARAT() はポインター p の指す文字に対応した wchar_t 型の値を返します。

ADVANCE() 

引き数に与えたポインターの指す文字の大きさ (1 バイトか 2 バイトです) だけポインターを進めます。

CHARADV() 

関数 CHARAT()ADVANCE() を 1 つのマクロで実現したものです。 1 バイト文字か 2 バイト文字の 2 バイト目を指すポインター p を引き数にとります。 どちらの場合も CHARADV() はポインター p の指す文字に対応した wchar_t 型の値を返し、その文字の次にポインター p を進めます。

WCHAR() 

wchar_t 型の値 wc を対応する 1 バイト文字、または 2 バイト文字に変換し、 p で指定する場所に書き込みます。 WCHAR()wchar_t 型の値 wc を返します。

WCHARADV() 

関数 WCHAR()ADVANCE() を 1 つのマクロで実現したものです。 wchar_t 型の値 wc を対応する 1 バイト文字、または 2 バイト文字に変換し、 p で指定する場所に書き込みます。その後で p をその文字の次に進めます。 WCHARADV()wchar_t 型の値 wc を返します。

firstof2() 

secof2() 

byte_status() 

c_colwidth() 

先に説明した同等のマクロをサブルーチンで実現したものです。 これらの関数は C 言語以外の言語からも呼び出せます。

多言語化対応

Locale

LC_CTYPE カテゴリがシングル/マルチバイト文字の解釈を決定します。

警告

このマニュアル項目で説明する HP 独自の関数とマクロは、 一般にはもう使用されていません。 それらは、他のベンダーのシステムに移植性がなく、将来の HP-UX リリースで提供されません。

移植性を最大限に保持するために、マルチバイト文字の処理にはマニュアル項目 multibyte(3C) で説明するルーチンを使ってください。

WCHAR()WCHARADV() に与える 1 番目の引き数には、このマニュアル項目で説明した他のマクロは使えません。 たとえば、

*t++ = *f++ 

  • WCHARADV(CHARADV (f),t) で実現することはできません。

代わりにこのようにしてください。

  • int c; ... c = CHARADV (f), WCHARADV (c,t)

式や文の一部以外に用いられると、 WCHAR()WCHARADV()lint(1) による警告 "null effect" を発生させる可能性があります。 これは両方のマクロの機能には影響を与えません。

WCHAR()WCHARADV() が「文字を置き換える」マクロではないことに注意してください。 2 バイト文字の 1 バイト目にシングルバイト文字をオーバーライトすると 2 バイト文字の 2 バイト目が取り残されてしまいますが、 WCHAR()WCHARADV() はこのような事態を特に考慮していません。

CHARAT(), ADVANCE(), CHARADV() は引き数のポインターの指す場所の次のバイト値の、 SECof2 などによる検査は行いません。

著者

nl_tools_16() は HP で開発されました。

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.