OSDN Git Service

初回インポート
[jovsonz/Jovsonz.git] / src / main / java / jp / sourceforge / jovsonz / JsComposition.java
1 /*
2  * composition type value
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 olyutorskii
6  */
7
8 package jp.sourceforge.jovsonz;
9
10 /**
11  * 子要素を持つJSON型の抽象インタフェース。
12  * JSON最上位構造であるための必要条件。
13  * 子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
14  * @param <E> 反復子の要素型
15  */
16 public interface JsComposition<E> extends JsValue, Iterable<E> {
17
18     /**
19      * 要素数を返す。
20      * <p>OBJECT型の場合は直下のPAIR総数。</p>
21      * <p>ARRAY型の場合は直下の子要素総数。</p>
22      * @return 要素数
23      */
24     int size();
25
26     /**
27      * 子要素が空か否か判定する。
28      * @return 要素がなければtrue
29      */
30     boolean isEmpty();
31
32     /**
33      * 子要素を空にする。
34      */
35     void clear();
36
37     /**
38      * このValueおよび子孫に変更があったか判定する。
39      * Value生成直後はfalseでなければならない。
40      * ロードしたデータに対し
41      * 再セーブの必要があるかどうかの判定などを目的とする。
42      * <p>変更が可能なValueはOBJECT型かARRAY型のみ。</p>
43      * @return 変更があればtrue
44      */
45     boolean hasChanged();
46
47     /**
48      * このValueおよび子孫に変更がなかったことにする。
49      */
50     void setUnchanged();
51
52 }