Add comparison options on Java Scilab datatypes (.equals(obj))
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / scilabTypes / 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.scilabTypes;
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.scilabTypes.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 matrix
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 }