インタフェース > コア インタフェース > MemStream |
gMax 1.0 で最初に導入された MemStream コア インタフェースを 3ds Max 5 以降、MAXScript で利用できるようになりました。
MemStream は、ファイル全体をメモリに読み込むことで、高速のストリーム解析を可能にします。
memStreamMgr インタフェースおよび memStream インタフェースには、ストリームを解析するためのさまざまなメソッドが用意されています。
<Interface>MemStreamMgr.openFile <filename>fname favor_type:<enum> code_page:<integer> favor_type enums: {#FAVOR_ACP|#FAVOR_UTF8} favor_type default value: #FAVOR_ACP code_page default value: 0
memStream インタフェースを返します。指定したファイルの内容は、処理される入力ストリームです。
ファイルを開けない場合は、undefined 値が返されます。
3ds Max 2013 以降で使用可能なオプションのキーワード引数 favor_type: および code_page: で、ストリームのエンコーディングをコントロールできます。
ACP は ANSI Code Page (ANSI コード ページ)の略です。
UTF8 は UCS Transformation Format - 8 bit (UCS 変換形式 - 8 ビット)の略で、UCS は Universal Character Set (ユニバーサル文字セット)の略です。
memStream インタフェースは入力ストリームを解析するためのメソッドを提供します。このインタフェースは memStreamMgr.openString() メソッドおよび memStreamMgr.openFile() メソッドから返されます。
memStream の作成元のファイル名が返されます。インタフェースが memStreamMgr.openString() から作成された場合は "" を返します。
現在のストリーム カーソル位置以降の、先行する空白文字(スペース、タブ、改行)をスキップします。この呼び出しの後では、ストリーム カーソル位置は非空白文字またはストリームの終端になります。
ストリームから 1 文字を読み込み、それを文字列として返します。
ストリームから 1 文字を読み込み、それを文字列として返します。ストリーム カーソル位置は増分されません。
現在のストリーム カーソル位置から改行までのすべての文字を読み込み、それを文字列として返します。
指定ストリームからトークンを読み込んで、文字列として返します。トークンとは、空白文字またはストリームの先頭や終端で囲まれる一連の文字のことです。最初の空白と、1 行の「//」形式のコメントは自動的にスキップされます。
返される文字列の最大長は 5120 文字です。これより長いトークンが読み込まれた場合、返される文字列にはそのトークンの最初の 5120 文字が含まれます。ストリーム カーソル位置は、次の文字になります。
ストリーム カーソル位置を増分しない点を除けば、<memStream>.readToken と同じです。
ストリーム カーソル位置を前回の readToken 操作の直前の状態にリセットします。
トークンのブロック(「open」トークンから「close」トークンまで)を読み込み、ネストされた「open」トークン/「close」トークンのペアは自動的にスキップして、内容を文字列として返します。この文字列には、開始「open」トークンと終了「close」トークンが含まれます。入力ストリーム内の次のトークンは、開始「open」トークンでなければなりません。そうでない場合は、「undefined」が返されます。
この呼び出しの後、ストリーム カーソル位置は次のトークンの先頭になるか、または「close」トークンの後に続くトークンがない場合にはストリームの終端になります。「open」トークンと「close」トークンでは、大文字と小文字は区別されません。
入力ストリーム内の次のトークンが「open」トークンでない場合は、「undefined」値が返され、ストリーム カーソル位置は変わりません。
入力トークン内の次のトークンが「open」トークンではなく、「close」トークンが検出されない場合は、「open」トークンからストリームの終端(-1)までの文字列が返されます。
ブロックの最大長は 5120 文字です。ブロックが検出されず、この長さよりも長い場合は、「undefined」値が返されます。ただし、ストリーム カーソル位置はブロックの終端になります。
トークンのブロックを返さない点を除いては、readBlock と同じです(この方がわずかに高速)。
<void><Interface:MemStream>.seek <integer>offset <enum>origin origin enums: {#seek_set|#seek_cur|#seek_end}
文字のストリーム カーソル位置を、指定された基点から「offset」数だけ移動します。
#seek_set-- start of file #seek_cur-- current file position #seek_end-- end of file (works with negative offset values)
現在のストリーム カーソル位置が入力ストリームの終端以降の場合は true を返し、それ以外の場合は false を返します。