Here is a part of code from my BooleanArray class:
class BooleanArray{
protected : int arrayLength;
boolean* arrayPointer;
public : BooleanArray(boolean booleanValue);
~BooleanArray();
void set(int intIndex ,boolean booleanValue);
String toString(int intStart,int intStop);
String toString();
};
BooleanArray::BooleanArray(boolean booleanValue)
{
arrayLength = 1;
arrayPointer = (boolean *)calloc(1,sizeof(boolean));
set(0,booleanValue);
}
BooleanArray::~BooleanArray()
{
if(arrayPointer){
free(arrayPointer);
}
}
void BooleanArray::set(int intIndex, boolean booleanValue)
{
if(arrayPointer && intIndex >= 0 && intIndex < arrayLength){
arrayPointer[intIndex] = booleanValue;
}
}
String BooleanArray::toString(int intStart,int intStop)
{
if(arrayLength == 0 || intStart > intStop){return "{}";}
String OUT = "{";
for(int i = intStart; i <intStop;i++){
if(get(i) == true){OUT = OUT + "true";}else{OUT = OUT + "false";}
if(OUT.length() > 200){int k = intStop - i - 1 ;OUT = OUT + "}[";OUT = OUT + k;OUT = OUT +"_MORE_VALUES]";return OUT;}
if(i != intStop - 1){OUT = OUT +",";}
}
OUT = OUT + "}";
return OUT;
}
String BooleanArray::toStringIO()
{
return toStringIO(0,length());
}
When I run this code:
void setup(){
Serial.begin(9600);
boolean B = true;
BooleanArray array(B);
Serial.println(array.toString());
}
void loop(){}
The arduino prints over the Serial port: {true} , as expected
but when I run this code:
void setup(){
Serial.begin(9600);
BooleanArray array(true);
Serial.println(array.toString());
}
void loop(){}
I get this: {false}
How is this posible since I pass 2 times true to the constructor?
Any ideas for fixing this problem?
Thank you,
Knockstaart