/* * check_util.h * * Copyright 2010-2012 Yahoo! Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Created on: Jan 25, 2010 * Author: sears */ #ifndef CHECK_UTIL_H_ #define CHECK_UTIL_H_ #include #include #include #include #include #include #include bool mycmp(const std::string & k1,const std::string & k2) { //for char* ending with \0 return strcmp(k1.c_str(),k2.c_str()) < 0; //for int32_t //printf("%d\t%d\n",(*((int32_t*)k1)) ,(*((int32_t*)k2))); //return (*((int32_t*)k1)) <= (*((int32_t*)k2)); } //must be given a sorted array void removeduplicates(std::vector *arr) { for(int i=arr->size()-1; i>0; i--) { if(! (mycmp((*arr)[i], (*arr)[i-1]) || mycmp((*arr)[i-1], (*arr)[i]))) arr->erase(arr->begin()+i); } } void scramble(std::vector *arr) { for(unsigned int i = 0; i < arr->size(); i++) { unsigned int other = rand() % arr->size(); if(other != i) { std::string s = (*arr)[i]; (*arr)[i] = (*arr)[other]; (*arr)[other] = s; } } } //must be given a sorted array // XXX probably don't need two copies of this function. void removeduplicates(std::vector &arr) { for(int i=arr.size()-1; i>0; i--) { if(! (mycmp(arr[i], arr[i-1]) || mycmp(arr[i-1], arr[i]))) arr.erase(arr.begin()+i); } } void getnextdata(std::string &data, int avg_len) { int str_len = (rand()%(avg_len*2)) + 3; data = std::string(str_len, rand()%10+48); /* char *rc = (char*)malloc(str_len); for(int i=0; i *arr, int avg_len=50, bool duplicates_allowed=false) { for ( int j=0; jpush_back(str); } } void preprandstr(int count, std::vector &arr, int avg_len=50, bool duplicates_allowed=false) { for ( int j=0; j(tv.tv_sec) + (static_cast(tv.tv_usec) / 1000000.0); } #endif /* CHECK_UTIL_H_ */