Xcos: exclude the type field introduced by d74e94
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / ScilabList.java
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
4  * 
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  * 
11  */
12
13 package org.scilab.modules.types;
14
15 import java.util.ArrayList;
16 import java.util.Collection;
17
18 /**
19  * This class provides a representation on the Scilab List datatype<br>
20  * <br>
21  * This class is {@link java.io.Serializable} and any modification could 
22  * impact load and store of data (Xcos files, Javasci saved data, etc...).<br>
23  * <br>
24  * Example:<br />
25  * <code>
26  * ScilabList data = new ScilabList();<br />
27  * data.add(new ScilabString("hello"));<br />
28  * data.add(new ScilabDouble(2));<br />
29  * </code>
30  * @see org.scilab.modules.javasci.Scilab
31  */
32 public class ScilabList extends ArrayList<ScilabType> implements ScilabType {
33         
34         private static final long serialVersionUID = 6884293176289980909L;
35         private static final ScilabTypeEnum type = ScilabTypeEnum.sci_list;
36
37         /**
38          * Construct an empty Scilab list.
39          */
40         public ScilabList() {
41                 super();
42         }
43
44         /**
45          * Construct a list containing the elements of the specified collection, in
46          * the order that they are returned by the specified collection's iterator.
47          * 
48          * @param c
49          *                      the collection whose elements are to be placed into this list.
50          */
51         public ScilabList(Collection< ? extends ScilabType> c) {
52                 super(c);
53         }
54         
55         /**
56          * @return 1 when there is data on the list, 0 otherwise.
57          * @see org.scilab.modules.types.ScilabType#getHeight()
58          */
59         @Override
60         public int getHeight() {
61                 if (isEmpty()) {
62                         return 0;
63                 }
64                 return 1;
65         }
66
67     /** 
68      * Return the type of Scilab 
69      * @return the type of Scilab
70      * @since 5.4.0
71      */
72     @Override
73         public ScilabTypeEnum getType() {
74         return type;
75     }
76
77         /**
78          * @return 1 when there is data on the list, 0 otherwise.
79          * @see org.scilab.modules.types.ScilabType#getWidth()
80          */
81         @Override
82         public int getWidth() {
83                 if (isEmpty()) {
84                         return 0;
85                 }
86                 return size();
87         }
88
89         /**
90          * Display the representation in the Scilab language of the type<br />
91          * Note that the representation can be copied/pasted straight into Scilab 
92      *
93          * @return the pretty-printed data 
94          * @see java.util.AbstractCollection#toString()
95          */
96         @Override
97         public String toString() {
98
99                 StringBuffer result = new StringBuffer();
100                 if (isEmpty()) {
101                         result.append("list()");
102                         return result.toString();
103                 }
104
105                 result.append("list(");
106                 for (int i = 0; i < size(); i++) {
107                         result.append(get(i));
108                         if (i != size() - 1) {
109                                 result.append(", ");
110                         }
111                 }
112                 result.append(")");
113
114                 return result.toString();
115         }
116 }