* @version 1.0
*/
-inline int hashCharArray(Array<char> * array) {
+inline unsigned int hashCharArray(Array<char> *array) {
uint len = array->length();
- int hash=0;
- for(uint i=0; i <len; i++) {
+ unsigned int hash = 0;
+ for (uint i = 0; i < len; i++) {
hash = 31 * hash + array->get(i);
}
return hash;
private:
Array<char> *array;
IoTString() {}
- int hashvalue;
+ unsigned int hashvalue;
/**
* Builds an IoTString object around the char array. This
* constructor makes a copy, so the caller is free to modify the char array.
*/
public:
- IoTString(Array<char> *_array) :
- array(new Array<char>(_array)),
+ IoTString(Array<char> *_array) :
+ array(new Array<char>(_array)),
hashvalue(hashCharArray(array)) {
}
IoTString(const char *_array) {
int32_t len = strlen(_array);
array = new Array<char>(len);
- strcpy(array->internalArray(), _array);
- hashvalue=hashCharArray(array);
+ memcpy(array->internalArray(), _array, len);
+ hashvalue = hashCharArray(array);
}
- IoTString(IoTString *string) :
- array(new Array<char>(string->array)),
+ IoTString(IoTString *string) :
+ array(new Array<char>(string->array)),
hashvalue(hashCharArray(array)) {
}
delete array;
}
+ char get(uint i) {return array->get(i);}
+
/**
* Internal method to grab a reference to our char array. Caller
* must not modify it.
return result == 0;
}
- int hashValue() { return hashvalue;}
+ unsigned int hashValue() { return hashvalue;}
int length() { return array->length(); }
friend IoTString *IoTString_shallow(Array<char> *_array);
};
-IoTString *IoTString_shallow(Array<char> *_array) {
+inline IoTString *IoTString_shallow(Array<char> *_array) {
IoTString *str = new IoTString();
str->array = _array;
return str;
}
-inline int hashString(IoTString *a) {
+inline unsigned int hashString(IoTString *a) {
return a->hashValue();
}