import java.util.*;
/**
* SgfOrder クラスは、SGF形式の手順データツリーから、実戦手順のみ抽出してString配列で返します。
* @author Jiro Suzuki
*/
public class SgfOrder{
private String[] order;
/**
* SGF形式の手順が空のインスタンスを生成します。
*/
SgfOrder(){
}
/**
* SGF形式の手順データツリーから、実戦の手順のみ抽出してString配列で返す。
* @param sgfVectorTree SGF形式の手順データツリー(参考図含む)
* @return SGF形式による実戦手順データ(参考図は含まない)。String配列
*/
public String[] includeOrder(Vector sgfVectorTree){
//実戦手順作成
Vector wkTree=sgfVectorTree;
int repeatMax=wkTree.size();
int ix=0;
Vector<String> orderArray=new Vector<String>();
while(ix<repeatMax){
//実戦手順は配列に追加
if(wkTree.get(ix) instanceof String){
orderArray.add((String)wkTree.get(ix));
ix++;
//参考図にぶら下がるデータは配列に追加しない。
//参考図以降はVector形式になっているので、それを頼りに判別している。
}else if(wkTree.get(ix) instanceof Vector){
wkTree=(Vector)wkTree.get(ix);
repeatMax=wkTree.size();
ix=0;
}
}
order=new String[orderArray.size()];
for(int i=0;i<orderArray.size();i++){
order[i]=(String)orderArray.get(i);
}
return order;
}
}