バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWXDRistream (Unix のみ)

RWvistream RWvios
RWXDRistream
RWios

形式

#include <rw/xdrstrea.h>

XDR xdr;
xdrstdio_create(&xdr, stdin, XDR_DECODE);
RWXDRistream rw_xdr(&xdr);

説明

このクラスは、XDR ルーチンにもとづいた、可搬性のある入力ストリームです。このクラスは外部データを表現する XDR ライブラリルーチンの一部をカプセル化したものです。XDR ルーチンを使用すると、機械に依存しない方法で任意のデータ構造体を記述することができます。リモート・プロシージャ・コール (RPC) のデータは XDR ルーチンを使用して転送されます。

このクラスでは、XDR 構造体を機械表現に復号化できるだけでなく、標準のデータ型やそのデータ型のベクトルをすべて復号化することができます。

XDR ストリームを作成するには、最初に適切な作成用ルーチンを呼び出します。XDR ストリームは現在、標準入出力 FILE ストリーム、TCP/IP 接続、UNIX ファイル、メモリーなどからのデータの符号化および復号化に使用できます。これらの作成ルーチンにはストリームの属性を指定する引数を指定することができます。XDR ストリームを作成すると、RWXDRistream オブジェクトに対するコンストラクタの引数として使用することができます。

メンバー関数の bad()clear()eof()fail()good()rdstate() を使用して、RWXDRistream にストリームの状態を問い合わせることができます。

持続性

なし

ここに示す例は、FILE ストリームから XDR 構造体を復号化する "読み取り" プログラムです。「RWXDRostream」の例はこれとは逆で、XDR 構造体を file ストリームに符号化する "書き込み" プログラムです。

XDR ルーチンをサポートするライブラリはリンクされていなければなりません。このライブラリの名前は標準ではありません。

#include <rw/xdrstrea.h>
#include <rw/rstream.h>
#include <stdio.h>

main(){
 XDR xdr;
 FILE* fp = fopen("test","r+");
 xdrstdio_create(&xdr, fp, XDR_DECODE);

 RWXDRistream rw_xdr(&xdr);
 int data;
 for(int i=0; i<10; ++i) {
   rw_xdr >> data;      // 整数データを復号化する
   if(data == i)
     cout << data << endl;
   else
     cout << "Bad input value" << endl;
 }
 fclose(fp);
}

公開コンストラクタ

RWXDRistream(XDR* xp);

XDR 構造体 xp から RWXDRistream を初期化します。

RWXDristream(streambuf*);

streambuf へのポインタを持つ RWXDRistream を初期化します。streambuf はすでに割り当てられていなければなりません。

RWXDRistream(istream&);

入力ストリームを持つ RWXDRistream を初期化します。

公開デストラクタ

~virtual RWXDRistream();

すでに割り当てられたリソースを解除します。

公開メンバー関数

virtual int
get();

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の文字を取り出し、それを返します。操作が失敗すると failbit を設定して EOF を返します。このメンバーは、対応する文字記号ではなく、ASCII 数値コードを保存するだけです。

virtual RWvistream&
get(char& c);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の文字を取り出し、それを c に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(wchar_t& wc);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次のワイド文字を取り出し、それを wc に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(unsigned char& c);

クラス RWvistream から再定義した関数。次の符号なし文字を取り出し、それを c に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(char* v, size_t N);

クラス RWvistream から再定義した関数。N 文字ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(unsigned char* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから符号なし N 文字ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(double* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の double ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(float* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の float ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(int* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の int ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(unsigned int* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の unsigned int ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(long* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の long ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(unsigned long* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の unsigned long ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(short* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の short ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(unsigned short* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の unsigned short ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
get(wchar_t* v, size_t N);

クラス RWvistream から再定義した関数。XDR 入力ストリームから N 個の ワイド文字ベクトルを取り出し、それを v に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
getString(char* s, size_t maxlen);

クラス RWvistream から再定義した関数。RWXDRistream::putstring で XDR 出力ストリームに格納した XDR 入力ストリームから文字列を復元し、その文字を s から始まる配列に格納します。この関数は、文字列の最後、または maxlen-1 文字の後 (どちらか速い方) で読み取りを停止します。maxlen-1 文字が読み取られ、maxlen 番目の文字が文字列終了文字ではない場合、そのストリームの failbit が設定されます。どちらの場合も、文字列はヌル文字で終了します。

virtual RWvistream&
operator>>(char& c );

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の文字を取り出し、それを c に格納します。操作が失敗すると failbit を設定します。このメンバーは、ストリームから転送された記号文字の値を保存しようと試みます。

virtual RWvistream&
operator>>(double& d);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の double を取り出し、それを d に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(float& f);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の float を取り出し、それを f に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(int&  i);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の int を取り出し、それを i に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(long& l);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の long を取り出し、それを l に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(short& s);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の short を取り出し、それを s に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(wchar_t& wc);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の wchar_t を取り出し、それを wc に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(unsigned char& c);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の unsigned char を取り出し、それを c に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(unsigned int& i);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の unsigned int を取り出し、それを i に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(unsigned long& l);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の unsigned long を取り出し、それを l に格納します。操作が失敗すると failbit を設定します。

virtual RWvistream&
operator>>(unsigned short& s);

クラス RWvistream から再定義した関数。XDR 入力ストリームから次の unsigned short 整数を取り出し、それを s に格納します。操作が失敗すると failbit を設定します。