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

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


RWXDRostream (Unix のみ)

RWvostream RWvios
RWXDRostream
RWios

形式

#include <rw/xdrstrea.h>

XDR xdr;
xdrstdio_create(&xdr, stdout, XDR_ENCODE) ;
RWXDRostream rw_xdr(&xdr);

説明

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

このクラスでは、あるストリームから出力したり、機械表現から XDR 構造体を符号化できるだけでなく、標準のデータ型やそのデータ型のベクトルをすべて符号化することができます。

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

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

持続性

なし

ここに示す例は、FILE ストリームへ XDR 構造体を符号化する "書き込み" プログラムです。「RWXDRistream」の例はこれとは逆で、XDR 構造体をデータ型の機械表現に復号化する "読み取る" プログラムです。XDR ルーチンをサポートするライブラリがリンクされていなければなりません。そのライブラリの名前は標準ではありません。XDR 形式でファイルにデータを書き込む方法を次の例で示します。データの復元方法については、RWXDRistream の例を参照してください。

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

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

 RWXDRostream rw_xdr(&xdr);
 for(int i=0; i<10; ++i)
 rw_xdr << i;                       // 整数データを符号化する
 fclose(fp);
}

公開コンストラクタ

RWXDRostream(XDR* xp);

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

RWXDRostream(streambuf*);

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

RWXDRostream(ostream&);

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

公開デストラクタ

virtual ~RWXDRostream();

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

公開メンバー関数

virtual RWvostream&
operator<<(const char* s);

クラス RWvostream から再定義した関数。s から始まる文字列を XDR 形式で出力ストリームに格納します。文字列は、ヌル文字で終了するものとみなします。

virtual RWvostream&
operator<<(char c);

クラス RWvostream から再定義した関数。文字 c を XDR 形式で出力ストリームに格納します。c は数ではなく文字として扱います。このメンバーは、ストリームから転送された記号文字の値を保存しようと試みます。

virtual RWvostream&
operator<<(wchar_t wc);

クラス RWvostream から再定義した関数。ワイド文字 wc を XDR 形式で出力ストリームに格納します。wc は数ではなく文字として扱います。

virtual RWvostream&
operator<<(unsigned char c);

クラス RWvostream から再定義した関数。符号なし文字 c を XDR 形式で出力ストリームに格納します。c は数ではなく文字として扱います。

virtual RWvostream&
operator<<(double d);

クラス RWvostream から再定義した関数。double d を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(float f);

クラス RWvostream から再定義した関数。float f を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(int i);

クラス RWvostream から再定義した関数。int i を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned int i);

クラス RWvostream から再定義した関数。unsigned int i を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(long l);

クラス RWvostream から再定義した関数。long l を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned long l);

クラス RWvostream から再定義した関数。unsigned long l を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(short s);

クラス RWvostream から再定義した関数。short s を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
operator<<(unsigned short s);

クラス RWvostream から再定義した関数。unsigned short s を XDR 形式で出力ストリームに格納します。

virtual RWvostream&
put(char c);

クラス RWvostream から再定義した関数。文字 c を XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。このメンバーは、対応する文字記号ではなく、ASCII 数値コードを保存するだけです。

virtual RWvostream&
put(unsigned char c);

クラス RWvostream から再定義した関数。符号なし文字 c を XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(wchar_t wc);

クラス RWvostream から再定義した関数。ワイド文字 wc を XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const char* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 文字ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const wchar_t* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N ワイド文字ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const short* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の short ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const unsigned short* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の unsigned short 整数ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const int* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の int ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const unsigned int* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の unsigned int ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const long* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の long ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const unsigned long* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の unsigned long ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const float* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の float ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

virtual RWvostream&
put(const double* p, size_t N);

クラス RWvostream から再定義した関数。p から始まる N 個の double ベクトルを XDR 形式で出力ストリームに格納します。操作が失敗すると failbit を設定します。

Virtual RWXDRostream&
flush();

ストリームバッファの内容をすぐに出力へ送ります。

Virtual RWXDRostream&
putString(const char*s, size_t N);

RWXDRistream::getString による取り出しのために、文字列を格納します。