DefineOutputStreamMethod

DefineOutputStreamMethod["name",{"fname1"function1,"fname2"function2, }]

指定された名前のカスタム出力ストリームメソッドを定義し,出力ストリームを開いたりこれに書き込んだりするためにWolfram言語がストリーム関数を呼び出すことを許す.

詳細

  • 出力ストリームメソッドは,バイトの新たな目標,バイトストリームをフィルターする方法,あるいは両者の組合せを与えることができる.
  • 出力ストリームメソッド関数には次のようなものがある.
  • "NameTestFunction"ある名前のストリームを開くことができるかどうか
    "ConstructorFunction"このメソッドを使ってストリームが開かれるときに呼ばれる
    "CloseFunction"ストリームを閉じ,リソースを解放する
    "WriteFunction"ストリームにバイトを書き込む
    "FlushFunction"メモリでバッファされたバイトがストリームに書き込まれることを保証する
    "ErrorTextFunction"エラーがあったかどうかを示す
    "ClearErrorFunction"エラーの表示をクリアする
    "StreamPositionFunction"書き込んだバイト数
    "OptionChangesFunction" Options[stream]が返すオプションを修正する
  • "ConstructorFunction"のみがDefineOutputStreamMethodに与えられなければならない.関数が提供されない場合には,他の関数はデフォルトの動作を行う.
  • ストリームメソッドで開かれたそれぞれのOutputStreamは,現行状態を持つ.ここにストリームメソッドは,基になるストリームリソースへのハンドル,現在のストリームの位置,最新のエラーメッセージ,ストリームメソッド関数で必要なその他の情報等の情報を保存することができる.初期状態の式は,"ConstructorFunction"によって返される.その他の関数は,現行状態をパラメータとして取り,新しい状態値を返す.
  • 新しい状態値を返す関数が与えられない場合には,デフォルトの定義は与えられた状態を修正せずに返す.
  • 出力ストリームを開いたり閉じたりするための関数
  • 名前パラメータ戻り値
    "NameTestFunction"{streamname}True|False
    "ConstructorFunction"{streamname,isAppend,caller,opts}{success,state}
    "CloseFunction"{state}無視
  • "NameTestFunction"は,ストリームがMethod->Automaticを使って開かれたときに必要であり,Wolfram言語は streamname に基づいて使用するストリームメソッドを選ぶ必要がある.ストリームメソッドは,その"NameTestFunction"Trueを返す場合に使われる."NameTestFunction" が提供されない場合には,デフォルトの動作としてFalseが返される.
  • ストリームが書くために開かれた場合には,"ConstructorFunction"が呼び出される.これは,streamname によって示されたストリームを開く.streamname は,ファイル名,URL,あるいはその他のストリームメソッドに適したリソースID等である.isAppend 引数は,加えるためにストリームが開かれた場合にはTrueになり,新しいリソースを書くために開かれた場合にはFalseになる.caller 引数は,メッセージを発するための記号である.OpenWrite等の呼出し関数は,successTrueのときには,そのOutputStreamの作成を完了する.state は,ストリームメソッドの状態の初期値として使われる.
  • "CloseFunction"Close[st]が呼ばれたときにストリーム st のために使われる."ConstructorFunction"に割り当てられたリソースは,ここで割当てを解除されなければならない.デフォルトの定義では何も行わない.
  • ストリームを書くための関数
  • 名前パラメータ戻り値
    "WriteFunction"{state,{byte...}}{byteCount,newstate}
    "FlushFunction"{state}{ignored,newstate}
  • "WriteFunction"はストリームを書くための基本的な関数である.byteCount の結果はストリームに正常に書き込まれたバイト数である.デフォルトの定義は byteCount 0を返す.
  • "FlushFunction"は,ストリームに書き込む過程をサポートするたあめに使われる.これは,"WriteFunction"に渡された任意のバイトが,メモリバッファからストリームに移動されることを保証する.この関数の結果は無視される.この関数の形式は次の通りである.
  • "FlushFunction"->Function[state,body;{result,newstate}]
  • "FlushFunction"が提供されていない場合には,次の定義が使われる.
  • "FlushFunction"->Function[state,{Null,state}]
  • 関数操作のエラー
  • 名前パラメータ戻り値
    "ErrorTextFunction"{state,nbytes}{result,newstate}
    "ClearErrorFunction"{state}{ignored,newstate}
  • "ErrorTextFunction"はストリームに書き込む過程で使われる.これは,エラー条件があるとエラーメッセージStringを返し,エラーがない場合はNullを返す.Wolfram言語は,ほかの関数が失敗を示した場合にこの関数を呼び出す.例えば,"WriteFunction"が要求したよりも少ないバイト数を書いた場合がそうである.デフォルト定義は,Nullresult を返す.
  • "ClearErrorFunction""ErrorTextFunction"がエラー文字列を返した場合に呼ばれ,エラー状態をクリアするために呼ばれる.この後では,"ErrorTextFunction"はストリームからの読取りにおいて別のエラーが出るまでNullが返す.この関数の結果は無視される."ErrorTextFunction"を提供するストリームメソッドは,"ClearErrorFunction"の定義も提供することが望ましい.
  • "StreamPositionFunction"StreamPositionをサポートするために使われる.結果の位置は"WriteFunction"でストリームに書き込まれたバイト数を示す整数である.デフォルト定義は-1を返す.
  • "OptionChangesFunction"は,Options[st,Method]が返すリストからストリーム st のオプションを編集するのに使われる.例えば,ストリームメソッドがパスワードやその他の極秘のセキュリティデータを含むオプションを取ることがある.デフォルトでは,Optionsはその設定を返す.この関数は,そのオプションフィールドを削除する方法を提供する.
  • 次は,オプションを変更する関数である.
  • 名前パラメータ戻り値
    "OptionChangesFunction"{state,options}{newoptions,newstate}

例題

  (1)

ストリームオプションとして取り出し,バイトのリストに書き込むストリームメソッドを定義する:

このメソッドを使って新しいストリームを開く:

ストリームを使う:

バイトのリストを取り出す:

Wolfram Research (2012), DefineOutputStreamMethod, Wolfram言語関数, https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

テキスト

Wolfram Research (2012), DefineOutputStreamMethod, Wolfram言語関数, https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

CMS

Wolfram Language. 2012. "DefineOutputStreamMethod." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

APA

Wolfram Language. (2012). DefineOutputStreamMethod. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html

BibTeX

@misc{reference.wolfram_2024_defineoutputstreammethod, author="Wolfram Research", title="{DefineOutputStreamMethod}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html}", note=[Accessed: 18-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_defineoutputstreammethod, organization={Wolfram Research}, title={DefineOutputStreamMethod}, year={2012}, url={https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html}, note=[Accessed: 18-November-2024 ]}