* Java mapping of Scilab data has now a new method called getType() which
[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  * Example:<br />
22  * <code>
23  * boolean [][]a={{true,false,true}, {true,true,true}};<br />
24  * ScilabBoolean aMatrix = new ScilabBoolean(a);
25  * </code>
26  * @see org.scilab.modules.javasci.Scilab
27  */
28 public class ScilabBoolean implements ScilabType {
29
30         private static final long serialVersionUID = 6511497080095473901L;
31
32         /* the boolean data */
33         private boolean[][] data;
34
35         private ScilabTypeEnum type = ScilabTypeEnum.sci_boolean;
36
37         /**
38          * Create an empty object
39          */
40         public ScilabBoolean() {
41                 data = null;
42         }
43         
44         /**
45          * Create an object from an array of array of boolean
46          *
47          * @param data the array of boolean
48          */
49         public ScilabBoolean(boolean[][] data) {
50                 this.data = data;
51         }
52         
53         /**
54          * Create a scalar boolean from a boolean
55          *
56          * @param value the boolean
57          */
58         public ScilabBoolean(boolean value) {
59                 this.data = new boolean[1][1];
60                 this.data[0][0] = value;
61         }
62
63         /**
64          * Change the value with the provided data
65          *
66          * @param data array of boolean
67          */
68         public void setData(boolean[][] data) {
69                 this.data = data;
70         }
71
72         /**
73          * Return the data
74          *
75          * @return the array of array of boolean
76          */
77         public boolean[][] getData() {
78                 return data;
79         }
80
81     /** 
82      * Return the type of Scilab 
83      * @return the type of Scilab
84      * @since 5.4.0
85      */
86     public ScilabTypeEnum getType() {
87         return type;
88     }
89
90         /**
91          * Return the height (number of element) of the stored data
92          *
93          * @return the height
94          */
95         public int getHeight() {
96                 if (data == null) {
97                         return 0;
98                 }
99                 return data.length;
100         }
101
102         /**
103          * Return the width (number of element) of the stored data
104          *
105          * @return the width
106          */
107         public int getWidth() {
108                 if (data == null) {
109                         return 0;
110                 }
111                 return data[0].length;
112         }
113
114         /**
115          * If it is empty / uninitialized
116          *
117          * @return true if empty
118          */
119         public boolean isEmpty() {
120                 return (data == null);
121         }
122         
123
124         /**
125          * @see org.scilab.modules.types.ScilabType#equals(Object)
126          */
127         public boolean equals(Object obj) {
128                 if (obj instanceof ScilabBoolean) {
129                         return Arrays.deepEquals(this.getData(), ((ScilabBoolean)obj).getData());
130                 } else {
131                         return false;
132                 }
133         }
134
135         /**
136          * Display the representation in the Scilab language of the type<br />
137          * Note that the representation can be copied/pasted straight into Scilab 
138      *
139          * @return the pretty print
140          */
141         public String toString() {
142                 StringBuilder result = new StringBuilder();
143                 
144                 if (isEmpty()) {
145                         result.append("[]");
146                         return result.toString();
147                 }
148
149                 result.append("[");
150                 for (int i = 0; i < getHeight(); ++i) {
151                         for (int j = 0; j < getWidth(); ++j) {
152                                 if (getData()[i][j]) {
153                                         result.append("%t");
154                                 } else {
155                                         result.append("%f");
156                                 }
157                                 if (j != getWidth() - 1) {
158                                         result.append(", ");
159                                 }
160                         }
161                         if (i != getHeight() - 1) {
162                                 result.append(" ; ");
163                         }
164                 }
165                 result.append("]");
166                 return result.toString();
167         }
168 }