[前へ] [目次へ] [次へ]

Array (ネイティブクラス)


このクラスは配列を扱うクラスです。
このクラスはサブタイプとして配列の要素型を取ります。

配列の要素として割り当てられたオブジェクトはネイティブ管理オブジェクトになります。
これらのオブジェクトは配列オブジェクトの消滅時に連動して消滅し、寿命の変更はできません。

●継承

   このクラスは継承をしていません。

●インターフェイスとインターフェイスメソッド

   このクラスはインターフェイスの実装宣言をしていません。

●クラスメソッド

   このクラスはクラスメソッドを持っていません。

●クラスメンバメソッド

名前概要
public取得メソッドconst #operator[]指定した要素番号の参照を取得します
public取得メソッドconst #operator{}指定した要素番号の参照を取得します
public設定メソッド #operator=[]複数の要素を一斉代入します
public取得メソッドconst Get指定した要素番号の参照を取得します
public取得メソッドconst GetTry指定した要素番号の参照を取得します
public設定メソッド Set要素を代入します
public操作メソッド AllocRef参照のみを確保します
public操作メソッド Alloc要素を確保します
public操作メソッド Reserve要素数を変更せずにメモリを確保します
public操作メソッド Move要素を移動します
public操作メソッド Pushひとつの要素を末尾に追加します
public操作メソッド PushAllocひとつの要素を末尾に追加します
public操作メソッド PushList配列を末尾に追加します
public操作メソッド PushEx複数の要素を末尾に追加します
public操作メソッド PushRefひとつの参照を末尾に追加します
public操作メソッド Pop末尾の要素をひとつ削除します
public操作メソッド UnShiftひとつの要素を先頭に追加します
public操作メソッド UnShiftAllocひとつの要素を先頭に追加します
public操作メソッド UnShiftRefひとつの参照を先頭に追加します
public操作メソッド Shift先頭の要素をひとつ削除します
public操作メソッド Reverse配列の並びを逆にします
public操作メソッド Insertひとつの要素を指定位置に挿入します
public操作メソッド InsertAllocひとつの要素を指定位置に挿入します
public操作メソッド InsertRefひとつの参照を指定位置に挿入します
public操作メソッド Erase指定した要素を削除します
public操作メソッド Exchange指定した二つの要素を交換します
public操作メソッド AllClear配列を完全にクリアします
public操作メソッド AllUnLock要素を全て削除します
public取得メソッドconst GetCount要素数を取得します
public取得メソッドconst GetFirst先頭の要素を取得します
public取得メソッドconst GetLast末尾の要素を取得します
public取得メソッドconst GetAtByLast指定した要素番号の参照を取得します
public操作メソッド Randomize要素をランダムに再配置します
public操作メソッド Sort要素を整列します
public操作メソッド AllocObject指定した要素番号にオブジェクトを割り当てます
public操作メソッド FreeObject指定した要素番号のオブジェクトだけを解放します
public操作メソッド SetObject指定した要素番号に既存のオブジェクトを割り当てます
public比較・判定メソッドconst ObjectIndexOf指定した参照の要素番号を調べます
public比較・判定メソッドconst IndexOf指定した値と一致する要素番号を調べます
public比較・判定メソッドconst IsValidIndex指定した要素番号が有効か判定します

●クラス共有変数

   このクラスはクラス共有変数を持っていません。

●インスタンス変数

   このクラスはインスタンス変数を持っていません。


●C++レベル追加情報

クラスID: FGES_CLASSID_ARRAY
クラス名: FGESArray



Array::#operator[]

public SubType?@ #operator[]( IInteger v)depend

   この配列の v 番の要素の参照を返します。
   このメソッドは指定した要素番号が無効な場合、例外が発生します。

   このメソッドは最初に v から INativeInteger による取得を試みます。
   これに失敗した場合、 v.Get を呼び出します。

戻り値:指定した要素番号の参照を返します。

IInteger v :取得する要素番号(0起算)

先頭へ


Array::#operator{}

public SubType?@ #operator{}( IInteger v)depend

   この配列の v 番の要素の参照を返します。
   このメソッドは指定した要素番号が無効な場合、空参照を返します。

   このメソッドは最初に v から INativeInteger による取得を試みます。
   これに失敗した場合、 v.Get を呼び出します。

戻り値:指定した要素番号の参照を返します。

IInteger v :取得する要素番号(0起算)

先頭へ


Array::#operator=[]

public SelfType<SubType>@ #operator=[](...)

   この配列に引数として渡した要素を一括して代入します。
   この配列が既に持っていた要素は全て削除され、引数だけで構成された配列になります。
   
   要素の代入は #operator= で行われます。
   要素型は #operator= を定義していなければいけません。
   
戻り値: this を返します。

可変長引数:代入する要素リスト。要素型の #operator= で処理できる型でなければいけません。

先頭へ


Array::Get

public SubType?@ Get( IInteger index)depend

   この配列の index 番の要素の参照を返します。
   このメソッドは指定した要素番号が無効な場合、例外が発生します。
   
   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   このメソッドは #operator[] と同じ動作です。

戻り値:指定した要素番号の参照を返します。

IInteger index :取得する要素番号(0起算)

先頭へ


Array::GetTry

public SubType?@ GetTry( IInteger index)depend

   この配列の index 番の要素の参照を返します。
   このメソッドは指定した要素番号が無効な場合、空参照を返します。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   このメソッドは #operator{} と同じ動作です。

戻り値:指定した要素番号の参照を返します。

IInteger index :取得する要素番号(0起算)

先頭へ


Array::Set

public Bool Set( IInteger index, SubType obj)

   この配列の index 番の要素に obj を代入します。
   このメソッドは指定した要素番号が無効な場合、偽を返し何も行いません。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   要素の代入は #operator= で行われます。
   要素型は #operator= を定義していなければいけません。
   
戻り値:代入に成功すると真を返します。

IInteger index :設定する要素番号(0起算)
SubType obj :設定する値

先頭へ


Array::AllocRef

public SelfType<SubType>@ AllocRef( IInteger count)

   この配列の要素数を count まで増やします。
   増やした要素にはオブジェクトは割り当てられず、空参照として追加されます。
   count がこの配列の要素数より少ない場合、何も起こりません。

   このメソッドは最初に count から INativeInteger による取得を試みます。
   これに失敗した場合、 count.Get を呼び出します。

   このメソッドはメモリの確保に失敗した場合、例外が発生します。

戻り値: this を返します。

IInteger count :確保する要素数

先頭へ


Array::Alloc

public SelfType<SubType>@ Alloc( IInteger count,
                      INativeClass? mainclass=NULL, INativeTypeObject? subtype=NULL)


   この配列の要素数を count まで増やします。
   増やした要素には mainclass および subtype によって示される型のオブジェクトが作成されて割り当てられます。
   mainclass が空参照の場合は要素型が指定されたものとして扱います。
   指定された型が実体化できない型の場合、例外が発生します。
   count がこの配列の要素数より少ない場合、何も起こりません。

   このメソッドは最初に count から INativeInteger による取得を試みます。
   これに失敗した場合、 count.Get を呼び出します。

   このメソッドはメモリの確保に失敗した場合、例外が発生します。
   
戻り値: this を返します。

IInteger count :確保する要素数
INativeClass? mainclass=NULL :作成するオブジェクトのクラス。
            空参照を指定した場合は mainclass および subtype は要素型が指定されたものとして扱います。
INativeTypeObject? subtype=NULL :作成するオブジェクトのサブタイプ。
            作成するオブジェクトのクラスがサブタイプに対応しない場合は空参照でなければいけません。

先頭へ


Array::Reserve

public SelfType<SubType>@ Reserve( IInteger count)

   この配列の要素数を変更せずに count 分の要素管理用メモリを準備します。
   このクラスは必要な場合、自動的にメモリを確保するため
   通常はこのメソッドを明示的に呼び出す必要はありません。
   このメソッドはパフォーマンスを最適化するためだけに存在します。

   このメソッドは最初に count から INativeInteger による取得を試みます。
   これに失敗した場合、 count.Get を呼び出します。

   このメソッドはメモリの確保に失敗した場合、例外が発生します。
   
戻り値: this を返します。

IInteger count :確保する要素数

先頭へ


Array::Move

public SelfType<SubType>@ Move( IInteger target, IInteger dst, IInteger count=1)

   この配列の target 番から count 個の要素を dst 番に移動します。
   このメソッドは要素を並べ替えるだけで、オブジェクトの生成、消滅、編集などの動作は一切ありません。

   このメソッドは最初に各引数から INativeInteger による取得を試みます。
   これに失敗した場合、 IInteger@@Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。

戻り値: this を返します。

IInteger target :移動元の要素番号(0起算)
IInteger dst :移動先の要素番号(0起算)
IInteger count=1 :移動する要素数

先頭へ


Array::Push

public SubType@ Push()

   この配列の末尾に要素を追加します。
   追加された要素には要素型のオブジェクトが作成されて割り当てられます。
   要素型が実体化できない型の場合、例外が発生します。

戻り値:追加した要素の参照を返します。

先頭へ


Array::PushAlloc

public SubType@ PushAlloc( INativeClass mainclass, INativeTypeObject? subtype=NULL)

   この配列の末尾に要素を追加します。
   追加された要素には mainclass および subtype によって示される型のオブジェクトが作成されて割り当てられます。
   指定された型のオブジェクトを作成できなかった場合や、
   作成したオブジェクトが要素型の参照に参照代入できない場合例外が発生します。

戻り値:追加した要素の参照を返します。

INativeClass mainclass :作成するオブジェクトのクラス。
INativeTypeObject? subtype=NULL :作成するオブジェクトのサブタイプ。
            作成するオブジェクトのクラスがサブタイプに対応しない場合は空参照でなければいけません。

先頭へ


Array::PushList

public SelfType<SubType>@ PushList( SelfType<SubType> list)

   この配列の末尾に配列を追加します。
   追加された要素には要素型のオブジェクトが作成されて割り当てられ、引数の要素が順次代入されます。
   要素型が実体化できない型の場合、例外が発生します。

戻り値: this を返します。

SelfType<SubType> list :代入する配列オブジェクト

先頭へ


Array::PushEx

public SelfType<SubType>@ PushEx( SubType val1,...)

   この配列の末尾に引数分の要素を追加します。
   追加された要素には要素型のオブジェクトが作成されて割り当てられ、引数が順次代入されます。
   要素型が実体化できない型の場合、例外が発生します。

   要素の代入は #operator= で行われます。
   要素型は #operator= を定義していなければいけません。
   
戻り値: this を返します。

SubType val1 :代入する要素オブジェクト
可変長引数:2個目以降の代入するオブジェクト

先頭へ


Array::PushRef

public SelfType<SubType>@ PushRef()

   この配列の末尾に要素を追加します。
   追加された要素にはオブジェクトは割り当てられず、空参照として追加されます。

戻り値: this を返します。

先頭へ


Array::Pop

public SelfType<SubType>@ Pop()

   この配列の末尾の要素を削除します。
   削除した要素にオブジェクトが割り当てられている場合、同時に消滅します。
   配列に要素がない場合、例外が発生します。

戻り値: this を返します。

先頭へ


Array::UnShift

public SubType@ UnShift()

   この配列の先頭に要素を追加します。
   追加された要素には要素型のオブジェクトが作成されて割り当てられます。
   要素型が実体化できない型の場合、例外が発生します。

戻り値:追加した要素の参照を返します。

先頭へ


Array::UnShiftAlloc

public SubType@ UnShiftAlloc( INativeClass mainclass, INativeTypeObject? subtype=NULL)

   この配列の先頭に要素を追加します。
   追加された要素には mainclass および subtype によって示される型のオブジェクトが作成されて割り当てられます。
   指定された型のオブジェクトを作成できなかった場合や、
   作成したオブジェクトが要素型の参照に参照代入できない場合例外が発生します。

戻り値:追加した要素の参照を返します。

INativeClass mainclass :作成するオブジェクトのクラス。
INativeTypeObject? subtype=NULL :作成するオブジェクトのサブタイプ。
            作成するオブジェクトのクラスがサブタイプに対応しない場合は空参照でなければいけません。

先頭へ


Array::UnShiftRef

public SelfType<SubType>@ UnShiftRef()

   この配列の先頭に要素を追加します。
   追加された要素にはオブジェクトは割り当てられず、空参照として追加されます。

戻り値: this を返します。

先頭へ


Array::Shift

public SelfType<SubType>@ Shift()

   この配列の先頭の要素を削除します。
   削除した要素にオブジェクトが割り当てられている場合、同時に消滅します。
   配列に要素がない場合、例外が発生します。

戻り値: this を返します。

先頭へ


Array::Reverse

public SelfType<SubType>@ Reverse()

   この配列の要素の並びを逆順にします。
   このメソッドは要素を並べ替えるだけで、オブジェクトの生成、消滅、編集などの動作は一切ありません。

戻り値: this を返します。

先頭へ


Array::Insert

public SubType@ Insert( IInteger index)

   この配列の index 番に要素を挿入します。
   追加された要素は指定した要素番号になります。
   追加された要素には要素型のオブジェクトが作成されて割り当てられます。
   要素型が実体化できない型の場合、例外が発生します。
   
   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定する要素番号は追加後に有効な番号でなければいけません。

戻り値:追加した要素の参照を返します。

IInteger index :挿入する要素番号(0起算)

先頭へ


Array::InsertAlloc

public SubType@ InsertAlloc( IInteger index, INativeClass mainclass, INativeTypeObject? subtype=NULL)

   この配列の index 番に要素を挿入します。
   追加された要素は指定した要素番号になります。
   追加された要素には mainclass および subtype によって示される型のオブジェクトが作成されて割り当てられます。
   指定された型のオブジェクトを作成できなかった場合や、
   作成したオブジェクトが要素型の参照に参照代入できない場合例外が発生します。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定する要素番号は追加後に有効な番号でなければいけません。

戻り値:追加した要素の参照を返します。

IInteger index :挿入する要素番号(0起算)
INativeClass mainclass :作成するオブジェクトのクラス。
INativeTypeObject? subtype=NULL :作成するオブジェクトのサブタイプ。
            作成するオブジェクトのクラスがサブタイプに対応しない場合は空参照でなければいけません。

先頭へ


Array::InsertRef

public SelfType<SubType>@ InsertRef( IInteger index)

   この配列の index 番に要素を挿入します。
   追加された要素は指定した要素番号になります。
   追加された要素にはオブジェクトは割り当てられず、空参照として追加されます。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定する要素番号は追加後に有効な番号でなければいけません。

戻り値: this を返します。

IInteger index :挿入する要素番号(0起算)

先頭へ


Array::Erase

public SelfType<SubType>@ Erase( IInteger target, IInteger count=1)

   この配列の target 番から count 個の要素を削除します。
   削除した要素にオブジェクトが割り当てられている場合、同時に消滅します。
   削除した要素より後ろに要素がある場合、削除した数分番号が詰められます。

   このメソッドは最初に各引数から INativeInteger による取得を試みます。
   これに失敗した場合、 IInteger@@Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。

戻り値: this を返します。

IInteger target :削除する要素番号(0起算)
IInteger count=1 :削除する要素数

先頭へ


Array::Exchange

public SelfType<SubType>@ Exchange( IInteger index1, IInteger index2)

   この配列の index1 番と index2 番の要素を交換します。
   このメソッドは要素を並べ替えるだけで、オブジェクトの生成、消滅、編集などの動作は一切ありません。

   このメソッドは最初に各引数から INativeInteger による取得を試みます。
   これに失敗した場合、 IInteger@@Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。

戻り値: this を返します。

IInteger index1 :対象の要素番号(0起算)
IInteger index2 :対象の要素番号(0起算)

先頭へ


Array::AllClear

public SelfType<SubType>@ AllClear()

   この配列の全ての要素を削除し、メモリも解放します。
   配列要素に割り当てられているオブジェクトも全て消滅します。

   このメソッドは要素管理用のメモリも解放します。
   配列をリセットしてすぐに再使用する場合は AllUnLock を使用すべきです。

戻り値: this を返します。

先頭へ


Array::AllUnLock

public SelfType<SubType>@ AllUnLock()

   この配列の全ての要素を削除します。
   配列要素に割り当てられているオブジェクトも全て消滅します。
   
   このメソッドは要素管理用のメモリは解放しません。
   配列をリセットしてすぐに再使用する場合は AllClear より適切です。

戻り値: this を返します。

先頭へ


Array::GetCount

public Integer GetCount()const

   この配列の要素数を返します。

戻り値:この配列の要素数を返します。

先頭へ


Array::GetFirst

public SubType@ GetFirst()depend

   この配列の先頭要素の参照を返します。
   配列に要素がない場合、例外が発生します。

戻り値:配列の先頭要素の参照を返します。

先頭へ


Array::GetLast

public SubType@ GetLast()depend

   この配列の末尾要素の参照を返します。
   配列に要素がない場合、例外が発生します。

戻り値:配列の末尾要素の参照を返します。

先頭へ


Array::GetAtByLast

public SubType@ GetAtByLast( IInteger index)depend

   この配列の (要素数-1-index) 番の要素の参照を返します。
   つまり、末尾を0とし、先頭に向かって数えた要素番号で index を指定します。
   このメソッドは指定した要素番号が無効な場合、例外が発生します。
   
   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

戻り値:指定した要素番号の参照を返します。

IInteger index :取得する要素番号(末尾起算逆順)

先頭へ


Array::Randomize

public SelfType<SubType>@ Randomize()

   この配列をランダムに再配置します。

戻り値: this を返します。

先頭へ


Array::Sort

public SelfType<SubType>@ Sort( INativeClosure? comp_method=NULL)

   この配列を昇順に整列します。
   
   comp_method に有効な参照を与えた場合、要素の比較メソッドとして使用します。
   この時、このメソッドは戻り値型 Integer 、
   引数として要素型(またはそれに暗黙変換できる型)を2つ取る形であり、
   第一引数 < 第二引数の時負値、二つが同じ時0、第一引数 > 第二引数の時正値を返すものでなければいけません。
   大小関係と戻り値の符号関係を逆にすると降順ソートになりますが、
   一貫性のない結果を返すと例外が発生する場合があります。
   
   comp_method が空参照である場合、
   各オブジェクトの #operator< および #operator> を使用してソートします。
   配列内に複数の型のオブジェクトが混在する場合、その全てで一貫性のある結果が得られるようにしてください。
   この時、空参照は常に大きいものとして扱われ、演算子メソッドの呼び出しは行いません。

   このメソッドは比較をFGESレベルで行うため動作速度が遅くなります。
   このためメソッドの実行時間に制限が掛けられており、
   ソートに時間が掛かりすぎると例外が発生するようになっています。
   比較に時間が掛かる場合や要素数が多い場合はこのメソッドの使用を避け、
   ネイティブ配列クラスを使用できないか検討してください。
   
   このメソッドの実行中、さらにこのメソッドを実行することはできません。

戻り値: this を返します。

INativeClosure? comp_method=NULL :比較メソッド

先頭へ


Array::AllocObject

public SubType@ AllocObject( IInteger index,
                      INativeClass mainclass, INativeTypeObject? subtype=NULL)


   この配列の index 番の要素に新しくオブジェクトを作成して割り当てます。
   指定した要素は空参照でなければいけません。
   作成するオブジェクトは mainclass および subtype によって示される型になります。
   指定された型のオブジェクトを作成できなかった場合や、
   作成したオブジェクトが要素型の参照に参照代入できない場合例外が発生します。
   
   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。

戻り値:作成したオブジェクトの参照を返します。

IInteger index :割り当てる要素番号(0起算)
INativeClass mainclass :作成するオブジェクトのクラス。
INativeTypeObject? subtype=NULL :作成するオブジェクトのサブタイプ。
            作成するオブジェクトのクラスがサブタイプに対応しない場合は空参照でなければいけません。

先頭へ


Array::FreeObject

public Bool FreeObject( IInteger index)

   この配列の index 番の要素に割り当てられているオブジェクトを解放します。
   解放されたオブジェクトは直ちに消滅し、指定した要素は空参照になります。
   指定した要素が最初から空参照であった場合何も起こりません。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。
   
戻り値:この呼び出しでオブジェクトが解放された場合真を返します。

IInteger index :解放する要素番号(0起算)

先頭へ


Array::SetObject

public SubType@ SetObject( IInteger index,editable SubType obj)

   この配列の index 番の要素に obj を割り当てます。
   指定した要素は空参照でなければいけません。
   obj はローカル変数か、メモリ管理オブジェクトに直接接続されている必要があり、
   このメソッドは obj のメモリ管理をこの配列オブジェクトの管理に変更します。
   obj が要素型の参照に参照代入できない場合例外が発生します。
   
   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

   指定した要素番号が無効な場合例外が発生します。

戻り値: obj への参照を返します。

IInteger index :割り当てる要素番号(0起算)
editable SubType obj :[移譲]設定するオブジェクト

先頭へ


Array::ObjectIndexOf

public Integer ObjectIndexOf( SubType? obj, IInteger? startindex=NULL)const

   この配列内の startindex 以降にある obj オブジェクトの要素番号を検索します。
   このメソッドは参照比較のみを行い、値の比較はしません。
   obj がこの配列内の要素ではない場合や検索範囲外の要素である場合は-1を返します。
   
   このメソッドは最初に startindex から INativeInteger による取得を試みます。
   これに失敗した場合、 startindex.Get を呼び出します。

戻り値:指定したオブジェクトに対応する要素番号か、見つからなければ-1を返します。

SubType? obj :検索するオブジェクト。
IInteger? startindex=NULL :検索開始する要素番号(0起算)
      空参照を指定した場合は0として扱います。

先頭へ


Array::IndexOf

public Integer IndexOf( SubType obj, IInteger? startindex=NULL)const

   この配列内の startindex 以降にある obj と一致する要素番号を検索します。
   このメソッドはこの配列の要素をホストとして #operator== による比較を行い、
   検索範囲内で一致した最も小さい要素番号を返します。
   検索範囲内に一致する要素が存在しない場合は-1を返します。
   また、検索範囲内に空参照や #operator== を使用できないオブジェクトがある場合例外が発生します。
   
   このメソッドは最初に startindex から INativeInteger による取得を試みます。
   これに失敗した場合、 startindex.Get を呼び出します。

戻り値:指定した値と一致する要素番号か、見つからなければ-1を返します。

SubType obj :検索する値。
IInteger? startindex=NULL :検索開始する要素番号(0起算)
      空参照を指定した場合は0として扱います。

先頭へ


Array::IsValidIndex

public Bool IsValidIndex( IInteger index)const

   index がこの配列の要素番号として有効か判定します。

   このメソッドは最初に index から INativeInteger による取得を試みます。
   これに失敗した場合、 index.Get を呼び出します。

戻り値: index がこの配列の要素番号として有効であれば真を返します。

IInteger index :判定する要素番号。

先頭へ


[前へ] [目次へ] [次へ]

最終更新 2021/03/06