Change Component setFromEscapedString and setSegment to static makeFromEscapedString and makeSegment, and make the class read-only.
diff --git a/ndn-cpp/name.hpp b/ndn-cpp/name.hpp
index 587301c..cd80fac 100644
--- a/ndn-cpp/name.hpp
+++ b/ndn-cpp/name.hpp
@@ -19,12 +19,12 @@
class Name {
public:
/**
- * A Name::Component is holds an immutable name component value.
+ * A Name::Component is holds a read-only name component value.
*/
class Component {
public:
/**
- * Create a new Name::Component with an empty value.
+ * Create a new Name::Component with a null value.
*/
Component()
{
@@ -74,24 +74,23 @@
const Blob& getValue() const { return value_; }
- void setValue(const Blob& value) { value_ = value; }
-
/**
- * Set this component value by decoding the escapedString between beginOffset and endOffset according to the NDN URI Scheme.
- * If the escaped string is "", "." or ".." then return false, which means this component value was not changed, and
+ * Make a component value by decoding the escapedString between beginOffset and endOffset according to the NDN URI Scheme.
+ * If the escaped string is "", "." or ".." then return a Blob with a null pointer, which means this component value was not changed, and
* the component should be skipped in a URI name.
* @param escapedString The escaped string. It does not need to be null-terminated because we only scan to endOffset.
* @param beginOffset The offset in escapedString of the beginning of the portion to decode.
* @param endOffset The offset in escapedString of the end of the portion to decode.
- * @return True for success, false if escapedString is not a valid escaped component.
+ * @return The component value as a Blob, or a Blob with a null pointer if escapedString is not a valid escaped component.
*/
- bool setFromEscapedString(const char *escapedString, unsigned int beginOffset, unsigned int endOffset);
+ static Blob makeFromEscapedString(const char *escapedString, unsigned int beginOffset, unsigned int endOffset);
/**
- * Set this component to the encoded segment number.
+ * Make a component as the encoded segment number.
* @param segment The segment number.
+ * @return The component value as a Blob.
*/
- void setSegment(unsigned long segment);
+ static Blob makeSegment(unsigned long segment);
private:
Blob value_;
@@ -198,8 +197,7 @@
*/
void appendSegment(unsigned long segment)
{
- components_.push_back(Component());
- components_.back().setSegment(segment);
+ components_.push_back(Component(Component::makeSegment(segment)));
}
/**