X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;ds=sidebyside;f=ref.h;h=e7d41e1d998a8ae8a28582d30a29590da7351f58;hb=cae5d6103b0efeb5cd34cd67c65df745ef4d598b;hp=496fdeca9732a95771a4ab4518b2a17ca5bbbdcd;hpb=3cfc1643082e60fea72539033b7adb094d236b0a;p=cumulus.git diff --git a/ref.h b/ref.h index 496fdec..e7d41e1 100644 --- a/ref.h +++ b/ref.h @@ -64,12 +64,17 @@ std::string generate_uuid(); * and converted to and from the text representation. */ class ObjectReference { public: + ObjectReference(); ObjectReference(const std::string& segment, int sequence); + ObjectReference(const std::string& segment, const std::string& sequence); + bool is_null() const { return segment.size() == 0; } std::string to_string() const; + static ObjectReference parse(const std::string& s); std::string get_segment() const { return segment; } - void set_segment(const std::string& segment) { this->segment = segment; } + std::string get_sequence() const { return object; } + std::string get_basename() const { return segment + "/" + object; } bool has_checksum() const { return checksum_valid; } std::string get_checksum() const { return checksum; } @@ -84,6 +89,8 @@ public: void set_range(size_t start, size_t length) { range_start = start; range_length = length; range_valid = true; } + bool merge(ObjectReference ref); + private: std::string segment, object, checksum; size_t range_start, range_length;