OSDN Git Service

パッケージ移動
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / bin / parser / ParseStage.java
1 /*
2  * parse-processing stage
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.bin.parser;
9
10 import java.util.concurrent.atomic.AtomicInteger;
11
12 /**
13  * パース処理の進行ステージ種別を表す。
14  * <p>ループ構造の識別に用いられる。
15  * <p>enum型と異なり、実行時での要素の追加が可能。
16  */
17 public class ParseStage {
18
19     private static final AtomicInteger LAST_NO = new AtomicInteger(0);
20
21
22     /** 全インスタンスに割り振られたユニークな番号。変更不可。 */
23     private final int no;
24
25
26     /**
27      * コンストラクタ。
28      */
29     public ParseStage(){
30         super();
31         this.no = LAST_NO.getAndIncrement();
32         assert this.no >= 0;
33         return;
34     }
35
36
37     /**
38      * 各インスタンスに割り当てられたユニークな通し番号を返す。
39      * @return 通し番号
40      */
41     public int getNo(){
42         return this.no;
43     }
44
45     /**
46      * {@inheritDoc}
47      * @return {@inheritDoc}
48      */
49     @Override
50     public String toString(){
51         String result = "parse stage#:" + this.no;
52         return result;
53     }
54
55 }