Fix some minor bugs, Update of the comments, 100 % test coverage, tests update and...
[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 wrapping on the Scilab boolean datatype
20  */
21 public class ScilabBoolean implements ScilabType {
22
23         /* the boolean data */
24         private boolean[][] data;
25
26         /**
27          * Create an empty object
28          */
29         public ScilabBoolean() {
30                 data = null;
31         }
32         
33         /**
34          * Create an object from an array of array of boolean
35          *
36          * @param data the array of boolean
37          */
38         public ScilabBoolean(boolean[][] data) {
39                 this.data = data;
40         }
41         
42         /**
43          * Create a scalar boolean from a boolean
44          *
45          * @param value the boolean
46          */
47         public ScilabBoolean(boolean value) {
48                 this.data = new boolean[1][1];
49                 this.data[0][0] = value;
50         }
51
52         /**
53          * Change the value with the provided data
54          *
55          * @param data array of boolean
56          */
57         public void setData(boolean[][] data) {
58                 this.data = data;
59         }
60
61         /**
62          * Return the data
63          *
64          * @return the array of array of boolean
65          */
66         public boolean[][] getData() {
67                 return data;
68         }
69
70         /**
71          * Return the height (number of element) of the stored data
72          *
73          * @return the height
74          */
75         public int getHeight() {
76                 if (data == null) {
77                         return 0;
78                 }
79                 return data.length;
80         }
81
82         /**
83          * Return the width (number of element) of the stored data
84          *
85          * @return the width
86          */
87         public int getWidth() {
88                 if (data == null) {
89                         return 0;
90                 }
91                 return data[0].length;
92         }
93
94         /**
95          * If it is empty / uninitialized
96          *
97          * @return true if empty
98          */
99         public boolean isEmpty() {
100                 return (data == null);
101         }
102         
103
104         /**
105          * @see org.scilab.modules.types.ScilabType#equals(Object)
106          */
107         public boolean equals(Object obj) {
108                 if (obj instanceof ScilabBoolean) {
109                         return Arrays.deepEquals(this.getData(), ((ScilabBoolean)obj).getData());
110                 } else {
111                         return false;
112                 }
113         }
114
115         /**
116          * Display the representation in the Scilab language of the type
117          *
118          * @return the pretty print
119          */
120         public String toString() {
121                 StringBuilder result = new StringBuilder();
122                 
123                 if (isEmpty()) {
124                         result.append("[]");
125                         return result.toString();
126                 }
127
128                 result.append("[");
129                 for (int i = 0; i < getHeight(); ++i) {
130                         for (int j = 0; j < getWidth(); ++j) {
131                                 if (getData()[i][j]) {
132                                         result.append("%t");
133                                 } else {
134                                         result.append("%f");
135                                 }
136                                 if (j != getWidth() - 1) {
137                                         result.append(", ");
138                                 }
139                         }
140                         if (i != getHeight() - 1) {
141                                 result.append(" ; ");
142                         }
143                 }
144                 result.append("]");
145                 return result.toString();
146         }
147 }