Xcos: exclude the type field introduced by d74e94
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / ScilabBoolean.java
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
4  *  Copyright (C) 2010-2010 - DIGITEO - ClĂ©ment DAVID
5  * 
6  *  This file must be used under the terms of the CeCILL.
7  *  This source file is licensed as described in the file COPYING, which
8  *  you should have received as part of this distribution.  The terms
9  *  are also available at
10  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  * 
12  */
13
14 package org.scilab.modules.types;
15
16 import java.util.Arrays;
17
18 /**
19  * This class provides a representation on the Scilab boolean 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  * boolean [][]a={{true,false,true}, {true,true,true}};<br />
27  * ScilabBoolean aMatrix = new ScilabBoolean(a);
28  * </code>
29  * @see org.scilab.modules.javasci.Scilab
30  */
31 public class ScilabBoolean implements ScilabType {
32
33         private static final long serialVersionUID = 6511497080095473901L;
34         private static final ScilabTypeEnum type = ScilabTypeEnum.sci_boolean;
35
36         /* the boolean data */
37         private boolean[][] data;
38
39         /**
40          * Create an empty object
41          */
42         public ScilabBoolean() {
43                 data = null;
44         }
45         
46         /**
47          * Create an object from an array of array of boolean
48          *
49          * @param data the array of boolean
50          */
51         public ScilabBoolean(boolean[][] data) {
52                 this.data = data;
53         }
54         
55         /**
56          * Create a scalar boolean from a boolean
57          *
58          * @param value the boolean
59          */
60         public ScilabBoolean(boolean value) {
61                 this.data = new boolean[1][1];
62                 this.data[0][0] = value;
63         }
64
65         /**
66          * Change the value with the provided data
67          *
68          * @param data array of boolean
69          */
70         public void setData(boolean[][] data) {
71                 this.data = data;
72         }
73
74         /**
75          * Return the data
76          *
77          * @return the array of array of boolean
78          */
79         public boolean[][] getData() {
80                 return data;
81         }
82
83     /** 
84      * Return the type of Scilab 
85      * @return the type of Scilab
86      * @since 5.4.0
87      */
88     @Override
89         public ScilabTypeEnum getType() {
90         return type;
91     }
92
93         /**
94          * Return the height (number of element) of the stored data
95          *
96          * @return the height
97          */
98         @Override
99         public int getHeight() {
100                 if (data == null) {
101                         return 0;
102                 }
103                 return data.length;
104         }
105
106         /**
107          * Return the width (number of element) of the stored data
108          *
109          * @return the width
110          */
111         @Override
112         public int getWidth() {
113                 if (data == null) {
114                         return 0;
115                 }
116                 return data[0].length;
117         }
118
119         /**
120          * If it is empty / uninitialized
121          *
122          * @return true if empty
123          */
124         @Override
125         public boolean isEmpty() {
126                 return (data == null);
127         }
128         
129
130         /**
131          * @see org.scilab.modules.types.ScilabType#equals(Object)
132          */
133         @Override
134         public boolean equals(Object obj) {
135                 if (obj instanceof ScilabBoolean) {
136                         return Arrays.deepEquals(this.getData(), ((ScilabBoolean)obj).getData());
137                 } else {
138                         return false;
139                 }
140         }
141
142         /**
143          * Display the representation in the Scilab language of the type<br />
144          * Note that the representation can be copied/pasted straight into Scilab 
145      *
146          * @return the pretty print
147          */
148         @Override
149         public String toString() {
150                 StringBuilder result = new StringBuilder();
151                 
152                 if (isEmpty()) {
153                         result.append("[]");
154                         return result.toString();
155                 }
156
157                 result.append("[");
158                 for (int i = 0; i < getHeight(); ++i) {
159                         for (int j = 0; j < getWidth(); ++j) {
160                                 if (getData()[i][j]) {
161                                         result.append("%t");
162                                 } else {
163                                         result.append("%f");
164                                 }
165                                 if (j != getWidth() - 1) {
166                                         result.append(", ");
167                                 }
168                         }
169                         if (i != getHeight() - 1) {
170                                 result.append(" ; ");
171                         }
172                 }
173                 result.append("]");
174                 return result.toString();
175         }
176 }