From 9c5a3f4746afd5513d3e8c3b233bc29fee0c1735 Mon Sep 17 00:00:00 2001 From: Igor Canadi Date: Fri, 1 Aug 2014 08:55:37 -0700 Subject: [PATCH] FeatureSet DebugString Summary: This will help debugging Test Plan: ran, observed output Reviewers: yinwang Reviewed By: yinwang Differential Revision: https://reviews.facebook.net/D20937 --- include/rocksdb/utilities/spatial_db.h | 3 ++ utilities/spatialdb/spatial_db.cc | 47 +++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/include/rocksdb/utilities/spatial_db.h b/include/rocksdb/utilities/spatial_db.h index ac900959e1..cba93cd5fa 100644 --- a/include/rocksdb/utilities/spatial_db.h +++ b/include/rocksdb/utilities/spatial_db.h @@ -120,11 +120,14 @@ class FeatureSet { iterator end() const { return map_.end(); } void Clear(); + size_t Size() const { return map_.size(); } void Serialize(std::string* output) const; // REQUIRED: empty FeatureSet bool Deserialize(const Slice& input); + std::string DebugString() const; + private: map map_; }; diff --git a/utilities/spatialdb/spatial_db.cc b/utilities/spatialdb/spatial_db.cc index 2a3588224a..2ea2a60923 100644 --- a/utilities/spatialdb/spatial_db.cc +++ b/utilities/spatialdb/spatial_db.cc @@ -5,6 +5,10 @@ #ifndef ROCKSDB_LITE +#include "rocksdb/utilities/spatial_db.h" + +#define __STDC_FORMAT_MACROS +#include #include #include #include @@ -13,7 +17,6 @@ #include "rocksdb/cache.h" #include "rocksdb/db.h" #include "rocksdb/utilities/stackable_db.h" -#include "rocksdb/utilities/spatial_db.h" #include "util/coding.h" #include "utilities/spatialdb/utils.h" @@ -197,6 +200,48 @@ bool FeatureSet::Deserialize(const Slice& input) { return true; } +std::string FeatureSet::DebugString() const { + std::string out = "{"; + bool comma = false; + for (const auto& iter : map_) { + if (comma) { + out.append(", "); + } else { + comma = true; + } + out.append("\"" + iter.first + "\": "); + switch (iter.second.type()) { + case Variant::kNull: + out.append("null"); + case Variant::kBool: + if (iter.second.get_bool()) { + out.append("true"); + } else { + out.append("false"); + } + break; + case Variant::kInt: { + char buf[32]; + snprintf(buf, sizeof(buf), "%" PRIu64, iter.second.get_int()); + out.append(buf); + break; + } + case Variant::kDouble: { + char buf[32]; + snprintf(buf, sizeof(buf), "%lf", iter.second.get_double()); + out.append(buf); + break; + } + case Variant::kString: + out.append("\"" + iter.second.get_string() + "\""); + break; + default: + assert(false); + } + } + return out + "}"; +} + class SpatialIndexCursor : public Cursor { public: SpatialIndexCursor(Iterator* spatial_iterator, Iterator* data_iterator,