JavaTM 2
Platform
Std. Ed. v1.4.0

javax.imageio.stream
クラス ImageOutputStreamImpl

java.lang.Object
  |
  +--javax.imageio.stream.ImageInputStreamImpl
        |
        +--javax.imageio.stream.ImageOutputStreamImpl
すべての実装インタフェース:
DataInput, DataOutput, ImageInputStream, ImageOutputStream
直系の既知のサブクラス:
FileCacheImageOutputStream, FileImageOutputStream, MemoryCacheImageOutputStream

public abstract class ImageOutputStreamImpl
extends ImageInputStreamImpl
implements ImageOutputStream

ImageOutputStream インタフェースを実装する抽象クラスです。このクラスの目的は、サブクラスで実装する必要のあるメソッドの数を減らすことです。


フィールドの概要
 
クラス javax.imageio.stream.ImageInputStreamImpl から継承したフィールド
bitOffset, byteOrder, flushedPos, streamPos
 
コンストラクタの概要
ImageOutputStreamImpl()
          ImageOutputStreamImpl を構築します。
 
メソッドの概要
protected  void flushBits()
          ビットオフセットがゼロでない場合、現在のバイトの残りのビットを強制的に 0 にして、ストリーム位置を 1 だけ増加します。
 void write(byte[] b)
          バイトのシーケンスをストリームの現在位置に書き込みます。
abstract  void write(byte[] b, int off, int len)
          バイトのシーケンスをストリームの現在位置に書き込みます。
abstract  void write(int b)
          ストリームの現在の位置に 1 バイト書き込みます。
 void writeBit(int bit)
          引数の最下位ビットで指定された 1 ビットを、ストリームの現在のバイト位置の現在のビットオフセットに書き込みます。
 void writeBits(long bits, int numBits)
          bits 引数の下位 numBits ビットのビットシーケンスを左から右に、ストリームの現在のバイト位置の現在のビットオフセットに書き込みます。
 void writeBoolean(boolean v)
          ストリームに boolean 値を書き込みます。
 void writeByte(int v)
          v の下位 8 ビットをストリームに書き込みます。
 void writeBytes(String s)
          文字列を出力ストリームに書き込みます。
 void writeChar(int v)
          このメソッドは writeShort と同義です。
 void writeChars(char[] c, int off, int len)
          char のシーケンスをストリームの現在位置に書き込みます。
 void writeChars(String s)
          文字列を出力ストリームに書き込みます。
 void writeDouble(double v)
          4 バイトで構成される double 値を出力ストリームに書き込みます。
 void writeDoubles(double[] d, int off, int len)
          double のシーケンスをストリームの現在位置に書き込みます。
 void writeFloat(float v)
          4 バイトで構成される float 値を出力ストリームに書き込みます。
 void writeFloats(float[] f, int off, int len)
          float のシーケンスをストリームの現在位置に書き込みます。
 void writeInt(int v)
          v の 32 ビットをストリームに書き込みます。
 void writeInts(int[] i, int off, int len)
          int のシーケンスをストリームの現在位置に書き込みます。
 void writeLong(long v)
          v の 64 ビットをストリームに書き込みます。
 void writeLongs(long[] l, int off, int len)
          long のシーケンスをストリームの現在位置に書き込みます。
 void writeShort(int v)
          v の下位 16 ビットをストリームに書き込みます。
 void writeShorts(short[] s, int off, int len)
          short のシーケンスをストリームの現在位置に書き込みます。
 void writeUTF(String s)
          長さ情報の 2 バイトを、ネットワークバイト順で出力ストリームに書き込みます。
 
クラス javax.imageio.stream.ImageInputStreamImpl から継承したメソッド
checkClosed, close, finalize, flush, flushBefore, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, isCached, isCachedFile, isCachedMemory, length, mark, read, read, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes
 
クラス java.lang.Object から継承したメソッド
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース javax.imageio.stream.ImageOutputStream から継承したメソッド
flushBefore
 
インタフェース javax.imageio.stream.ImageInputStream から継承したメソッド
close, flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, isCached, isCachedFile, isCachedMemory, length, mark, read, read, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes
 

コンストラクタの詳細

ImageOutputStreamImpl

public ImageOutputStreamImpl()
ImageOutputStreamImpl を構築します。

メソッドの詳細

write

public abstract void write(int b)
                    throws IOException
インタフェース ImageOutputStream の記述:
ストリームの現在の位置に 1 バイト書き込みます。b の上位 24 ビットは無視されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。実装側は、ImageOutputStreamImplflushBits メソッドを使用してこれを保証できます。

定義:
インタフェース ImageOutputStream 内の write
パラメータ:
b - 下位 8 ビットが書き込まれる int
例外:
IOException - 入出力エラーが発生した場合

write

public void write(byte[] b)
           throws IOException
インタフェース ImageOutputStream の記述:
バイトのシーケンスをストリームの現在位置に書き込みます。b.length が 0 の場合、何も書き込みません。バイト b[0] を最初に書き込み、次にバイト b[1] を書き込む、という具合になります。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の write
パラメータ:
b - 書き込まれる byte 配列
例外:
IOException - 入出力エラーが発生した場合

write

public abstract void write(byte[] b,
                           int off,
                           int len)
                    throws IOException
インタフェース ImageOutputStream の記述:
バイトのシーケンスをストリームの現在位置に書き込みます。len が 0 の場合、何も書き込みません。バイト b[off] を最初に書き込み、次にバイト bo[off + 1] を書き込む、という具合になります。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。実装側は、ImageOutputStreamImplflushBits メソッドを使用してこれを保証できます。

定義:
インタフェース ImageOutputStream 内の write
パラメータ:
b - 書き込まれる byte 配列
off - データの開始オフセット
len - 書き込み byte
例外:
IOException - 入出力エラーが発生した場合

writeBoolean

public void writeBoolean(boolean v)
                  throws IOException
インタフェース ImageOutputStream の記述:
ストリームに boolean 値を書き込みます。v が true の場合は、値 (byte)1 が書き込まれ、v が false の場合は、値 (byte)0 が書き込まれます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeBoolean
パラメータ:
v - 書き込まれる boolean
例外:
IOException - 入出力エラーが発生した場合

writeByte

public void writeByte(int v)
               throws IOException
インタフェース ImageOutputStream の記述:
v の下位 8 ビットをストリームに書き込みます。v の上位 24 ビットは無視されます。これは writeByte が、整数引数の write と全く同じであることを意味します。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeByte
パラメータ:
v - 書き込まれるバイト値を含む int
例外:
IOException - 入出力エラーが発生した場合

writeShort

public void writeShort(int v)
                throws IOException
インタフェース ImageOutputStream の記述:
v の下位 16 ビットをストリームに書き込みます。v の上位 16 ビットは無視されます。ストリームでネットワークバイト順が使用される場合、書き込まれるバイトの順序は次のとおりです。
 (byte)((v >> 8) & 0xff)
 (byte)(v & 0xff)
 
それ以外の場合、次のように書き込まれます。
 (byte)(v & 0xff)
 (byte)((v >> 8) & 0xff)
 

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeShort
パラメータ:
v - 書き込まれる short 値を含む int
例外:
IOException - 入出力エラーが発生した場合

writeChar

public void writeChar(int v)
               throws IOException
インタフェース ImageOutputStream の記述:
このメソッドは writeShort と同義です。

定義:
インタフェース ImageOutputStream 内の writeChar
パラメータ:
v - 書き込まれる char (符号なし short) 値を含む int
例外:
IOException - 入出力エラーが発生した場合
関連項目:
ImageOutputStream.writeShort(int)

writeInt

public void writeInt(int v)
              throws IOException
インタフェース ImageOutputStream の記述:
v の 32 ビットをストリームに書き込みます。ストリームでネットワークバイト順が使用される場合、書き込まれるバイトの順序は次のとおりです。
 (byte)((v >> 24) & 0xff)
 (byte)((v >> 16) & 0xff)
 (byte)((v >> 8) & 0xff)
 (byte)(v & 0xff)
 
それ以外の場合、次のように書き込まれます。
 (byte)(v & 0xff)
 (byte)((v >> 8) & 0xff)
 (byte)((v >> 16) & 0xff)
 (byte)((v >> 24) & 0xff)
 

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeInt
パラメータ:
v - 書き込まれる値を含む int
例外:
IOException - 入出力エラーが発生した場合

writeLong

public void writeLong(long v)
               throws IOException
インタフェース ImageOutputStream の記述:
v の 64 ビットをストリームに書き込みます。ストリームでネットワークバイト順が使用される場合、書き込まれるバイトの順序は次のとおりです。
 (byte)((v >> 56) & 0xff)
 (byte)((v >> 48) & 0xff)
 (byte)((v >> 40) & 0xff)
 (byte)((v >> 32) & 0xff)
 (byte)((v >> 24) & 0xff)
 (byte)((v >> 16) & 0xff)
 (byte)((v >> 8) & 0xff)
 (byte)(v & 0xff)
 
それ以外の場合、次のように書き込まれます。
 (byte)(v & 0xff)
 (byte)((v >> 8) & 0xff)
 (byte)((v >> 16) & 0xff)
 (byte)((v >> 24) & 0xff)
 (byte)((v >> 32) & 0xff)
 (byte)((v >> 40) & 0xff)
 (byte)((v >> 48) & 0xff)
 (byte)((v >> 56) & 0xff)
 

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeLong
パラメータ:
v - 書き込まれる値を含む long
例外:
IOException - 入出力エラーが発生した場合

writeFloat

public void writeFloat(float v)
                throws IOException
インタフェース ImageOutputStream の記述:
4 バイトで構成される float 値を出力ストリームに書き込みます。これは、最初にこの float 値を Float.floatToIntBits メソッドと同じ方法で int に変換し、その後 int 値を writeInt メソッドと同じ方法で書き込むようにして行われます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeFloat
パラメータ:
v - 書き込まれる値を含む float
例外:
IOException - 入出力エラーが発生した場合

writeDouble

public void writeDouble(double v)
                 throws IOException
インタフェース ImageOutputStream の記述:
4 バイトで構成される double 値を出力ストリームに書き込みます。これは、最初にこの double 値を Double.doubleToLongBits メソッドと同じ方法で long に変換し、次に long 値を writeLong メソッドと同じ方法で書き込むようにして行われます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeDouble
パラメータ:
v - 書き込まれる値を含む double
例外:
IOException - 入出力エラーが発生した場合

writeBytes

public void writeBytes(String s)
                throws IOException
インタフェース ImageOutputStream の記述:
文字列を出力ストリームに書き込みます。文字列 s の各文字が順番に取り出され、1 バイトが出力ストリームに書き込まれます。snull の場合は、NullPointerException がスローされます。

s.length がゼロの場合、書き込まれるバイトはありません。そうでない場合は、まず文字 s[0]、次に s[1] という具合に順次書き込まれ、最後に文字 s[s.length-1] が書き込まれます。各文字については、writeByte メソッドとまったく同じ方法で、1 バイト、つまり下位バイトが書き込まれます。文字列内の各文字の上位 8 ビットは無視されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeBytes
パラメータ:
s - 書き込まれる値を含む String
例外:
IOException - 入出力エラーが発生した場合

writeChars

public void writeChars(String s)
                throws IOException
インタフェース ImageOutputStream の記述:
文字列を出力ストリームに書き込みます。文字列 s の各文字が、順番に取り出され、現在のバイト順の設定に従った順序で、2 バイトが出力ストリームに書き込まれます。ネットワークバイト順が使用されると高位バイトが最初に書き込まれ、そうでない場合は逆になります。snull の場合、NullPointerException がスローされます。

s.length がゼロの場合、バイトは書き込まれません。ゼロでない場合、文字 s[0] が最初に書き込まれ、次に s[1]、という具合に続き、最後に文字 s[s.length-1] が書き込まれます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeChars
パラメータ:
s - 書き込まれる値を含む String
例外:
IOException - 入出力エラーが発生した場合

writeUTF

public void writeUTF(String s)
              throws IOException
インタフェース ImageOutputStream の記述:
長さ情報の 2 バイトを、ネットワークバイト順で出力ストリームに書き込みます。その後ろには、文字列 s 内の各文字の Java の修正 UTF 表現が続きます。snull の場合、NullPointerException がスローされます。文字列 s 内の各文字は、文字の値に基づいて、1、2、または 3 バイトのグループに変換されます。

文字 c\u0001\u007f の範囲にある場合、次のような 1 バイトで表現されます。

 (byte)c
 

文字 c\u0000 の場合や、\u0080\u07ff の範囲にある場合には、次の順序で書き込まれる 2 バイトにより表されます。


 (byte)(0xc0 | (0x1f & (c >> 6)))
 (byte)(0x80 | (0x3f & c))
 

文字 c\u0800uffff の範囲にある場合、次の順序で書き込まれる 3 バイトにより表されます。


 (byte)(0xe0 | (0x0f & (c >> 12)))
 (byte)(0x80 | (0x3f & (c >> 6)))
 (byte)(0x80 | (0x3f & c))
 

まず、s のすべての文字を表すのに必要な総バイト数が計算されます。この数値が 65535 を超える場合は、UTFDataFormatException がスローされます。そうでない場合は、この長さが writeShort メソッドとまったく同じ方法で出力ストリームに書き込まれます。次に、文字列 s 内の各文字の 1、2、または 3 バイト表現が書き込まれます。

現在のバイト順の設定は無視されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeUTF
パラメータ:
s - 書き込まれる値の String
例外:
IOException - 入出力エラーが発生した場合

writeShorts

public void writeShorts(short[] s,
                        int off,
                        int len)
                 throws IOException
インタフェース ImageOutputStream の記述:
short のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に short s[off]、次に short s[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeShorts
パラメータ:
s - 書き込まれる short 配列
off - データの開始オフセット
len - 書き込む short
例外:
IOException - 入出力エラーが発生した場合

writeChars

public void writeChars(char[] c,
                       int off,
                       int len)
                throws IOException
インタフェース ImageOutputStream の記述:
char のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に char c[off]、次に char c[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeChars
パラメータ:
c - 書き込まれる char 配列
off - データの開始オフセット
len - 書き込む char
例外:
IOException - 入出力エラーが発生した場合

writeInts

public void writeInts(int[] i,
                      int off,
                      int len)
               throws IOException
インタフェース ImageOutputStream の記述:
int のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に int i[off]、次に int i[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeInts
パラメータ:
i - 書き込まれる int 配列
off - データの開始オフセット
len - 書き込む int
例外:
IOException - 入出力エラーが発生した場合

writeLongs

public void writeLongs(long[] l,
                       int off,
                       int len)
                throws IOException
インタフェース ImageOutputStream の記述:
long のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に long l[off]、次に long l[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeLongs
パラメータ:
l - 書き込まれる long 配列
off - データの開始オフセット
len - 書き込む long
例外:
IOException - 入出力エラーが発生した場合

writeFloats

public void writeFloats(float[] f,
                        int off,
                        int len)
                 throws IOException
インタフェース ImageOutputStream の記述:
float のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に float f[off]、次に float f[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeFloats
パラメータ:
f - 書き込まれる float 配列
off - データの開始オフセット
len - 書き込む float
例外:
IOException - 入出力エラーが発生した場合

writeDoubles

public void writeDoubles(double[] d,
                         int off,
                         int len)
                  throws IOException
インタフェース ImageOutputStream の記述:
double のシーケンスをストリームの現在位置に書き込みます。len が 0 の場合は、何も書き込みません。最初に double d[off]、次に double d[off + 1]、という順序で書き込みが行われます。ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

ストリーム内のビットオフセットがゼロでない場合、現在のバイトの残りは 0 でパディングされ、最初に書き込まれます。書き込み後は、ビットオフセットは 0 です。

定義:
インタフェース ImageOutputStream 内の writeDoubles
パラメータ:
d - 書き込まれる double 配列
off - データの開始オフセット
len - 書き込む double
例外:
IOException - 入出力エラーが発生した場合

writeBit

public void writeBit(int bit)
              throws IOException
インタフェース ImageOutputStream の記述:
引数の最下位ビットで指定された 1 ビットを、ストリームの現在のバイト位置の現在のビットオフセットに書き込みます。引数の上位 31 ビットは無視されます。指定されたビットにより、その位置にあった以前のビットは置換されます。ビットオフセットは 1 ずつ増加し、8 を法として減分します。

特定のバイトの任意のビットが、バイトが出力先にフラッシュされる時点で設定されていなかった場合、これらのビットは自動的に 0 に設定されます。

定義:
インタフェース ImageOutputStream 内の writeBit
パラメータ:
bit - その最下位ビットがストリームに書き込まれる int
例外:
IOException - 入出力エラーが発生した場合

writeBits

public void writeBits(long bits,
                      int numBits)
               throws IOException
インタフェース ImageOutputStream の記述:
bits 引数の下位 numBits ビットのビットシーケンスを左から右に、ストリームの現在のバイト位置の現在のビットオフセットに書き込みます。引数の上位 64 - numBits ビットは無視されます。ビットオフセットは numBits だけ増加し、8 を法として減分します。ビットオフセット 0 は常にバイトの最高位ビットを示し、ビットのバイトは検出された順番に書き込まれます。したがってビットの書き込みは、事実上常にネットワークバイト順です。実際のストリームバイト順の設定は無視されます。

ビットデータは、flushBefore が呼び出されるまでメモリに無限に蓄積されます。呼び出された時点で、フラッシュ位置より前のビットデータがすべて書き込まれます。

特定のバイトの任意のビットが、バイトが出力先にフラッシュされる時点で設定されていなかった場合、これらのビットは自動的に 0 に設定されます。

定義:
インタフェース ImageOutputStream 内の writeBits
パラメータ:
bits - ビット位置 numBits - 1 から最下位ビットまでが書き込まれるビットを含む long
numBits - 0 から 64 までの int
例外:
IOException - 入出力エラーが発生した場合

flushBits

protected final void flushBits()
                        throws IOException
ビットオフセットがゼロでない場合、現在のバイトの残りのビットを強制的に 0 にして、ストリーム位置を 1 だけ増加します。サブクラスは、write(int) および write(byte[], int, int) メソッドの先頭でこのメソッドを呼び出す必要があります。

例外:
IOException - 入出力エラーが発生した場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.