OSDN Git Service

b13c7e9cb2b7d36aae281551d5608f3122fde7a0
[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  *
13  * <p>JSON最上位構造であるための必要条件。
14  *
15  * <p>子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
16  *
17  * @param <E> 反復子の要素型
18  */
19 public interface JsComposition<E> extends JsValue, Iterable<E> {
20
21     /**
22      * 要素数を返す。
23      *
24      * <p>OBJECT型の場合は直下のPAIR総数。</p>
25      *
26      * <p>ARRAY型の場合は直下の子要素総数。</p>
27      *
28      * @return 要素数
29      */
30     public abstract int size();
31
32     /**
33      * 子要素が空か否か判定する。
34      *
35      * @return 要素がなければtrue
36      */
37     public abstract boolean isEmpty();
38
39     /**
40      * 子要素を空にする。
41      */
42     public abstract void clear();
43
44     /**
45      * このValueおよび子孫に変更があったか判定する。
46      *
47      * <p>Value生成直後はfalseでなければならない。
48      *
49      * <p>ロードしたデータに対し
50      * 再セーブの必要があるかどうかの判定などを目的とする。
51      *
52      * <p>変更が可能なValueはOBJECT型かARRAY型のみ。
53      *
54      * @return 変更があればtrue
55      */
56     public abstract boolean hasChanged();
57
58     /**
59      * このValueおよび子孫に変更がなかったことにする。
60      */
61     public abstract void setUnchanged();
62
63 }