// memsize.cxx #include "dataset_util/memsize.h" using std::string; using std::vector; using std::map; //********************************************************************** // String. size_t memsize_string(string arg) { struct internal { size_t len, res, ref; bool selfish; }; return sizeof(internal*) + sizeof(internal) + arg.capacity(); } //********************************************************************** // Vector of strings. size_t memsize_vector_string(vector arg) { size_t mem = memsize_vector(arg); for ( vector::const_iterator istr=arg.begin(); istr!=arg.end(); ++istr ) { mem += memsize_string(*istr) - sizeof(*istr); } return mem; } //********************************************************************** // Map of string-string. size_t memsize_map_string(map arg) { size_t mem = memsize_map(arg); for ( map::const_iterator ient=arg.begin(); ient!=arg.end(); ++ient ) { const string& str1 = ient->first; const string& str2 = ient->second; mem += memsize_string(str1) - sizeof(str1); mem += memsize_string(str2) - sizeof(str2); } return mem; } //**********************************************************************