std::string StringImpl::descData( void const *data ) const { std::string result = "\""; size_t length = getValueLength(data); if ( length > 64 ) { result.append( getValueData(data), 64 ); result += "..."; } else if ( length ) result += getValueData(data); result += "\""; return result; }
int StringImpl::compare( void const *lhsData, void const *rhsData ) const { char const *lhsStringData = getValueData( lhsData ); size_t lhsStringLength = getValueLength( lhsData ); char const *rhsStringData = getValueData( rhsData ); size_t rhsStringLength = getValueLength( rhsData ); size_t minStringLength = std::min( lhsStringLength, rhsStringLength ); int cmp = memcmp( lhsStringData, rhsStringData, minStringLength ); if ( cmp == 0 ) { if ( lhsStringLength < rhsStringLength ) return -1; else if ( lhsStringLength == rhsStringLength ) return 0; else return 1; } else return cmp; }
size_t StringImpl::hash( void const *data ) const { // [pzion 20111014] This hash function is referred to as djb2. // Thanks Manon!! size_t stringLength = getValueLength( data ); uint8_t const *stringData = reinterpret_cast<uint8_t const *>( getValueData( data ) ); size_t result = 5381; while ( stringLength > 0 ) { result = ((result << 5) + result) ^ uint32_t(*stringData); --stringLength; ++stringData; } return result; }
void Matrix::mostrar(void) { printf("["); for(int fila=1;fila<=Matrix::numFilas;fila++) { for(int columna=1;columna<=Matrix::numColumnas;columna++) { printf("%f",getValueData(fila,columna)); if(columna<numColumnas) printf(" "); else if(fila<numFilas) printf(";\n "); else printf("]\n"); } } }
void sendUDPMessageWithValue(char msg[64], uint16_t value) { UdpData msgData = getMsgData(msg); UdpData valData = getValueData(value); UdpData result; result.length = (msgData.length + valData.length); for(int i=0;i<msgData.length;i++) { result.msg[i] = msgData.msg[i]; } for(int j=msgData.length;j<result.length;j++) { result.msg[j] = valData.msg[j-msgData.length]; } sendUDPData(result); }
void StringImpl::encodeJSON( void const *data, JSON::Encoder &encoder ) const { encoder.makeString( getValueData(data), getValueLength(data) ); }
void sendUDPValue(uint16_t value) { UdpData data = getValueData(value); sendUDPData(data); }