Make all ExternalValueBase functions const

This commit is contained in:
Shea Levy 2014-12-02 10:02:03 -05:00
parent 320659b0cd
commit 608110804c
4 changed files with 15 additions and 15 deletions

View file

@ -1616,20 +1616,20 @@ size_t valueSize(Value & v)
} }
string ExternalValueBase::coerceToString(const Pos & pos, PathSet & context, bool copyMore, bool copyToStore) string ExternalValueBase::coerceToString(const Pos & pos, PathSet & context, bool copyMore, bool copyToStore) const
{ {
throw TypeError(format("cannot coerce %1% to a string, at %2%") % throw TypeError(format("cannot coerce %1% to a string, at %2%") %
showType() % pos); showType() % pos);
} }
bool ExternalValueBase::operator==(const ExternalValueBase & b) bool ExternalValueBase::operator==(const ExternalValueBase & b) const
{ {
return false; return false;
} }
std::ostream & operator << (std::ostream & str, ExternalValueBase & v) { std::ostream & operator << (std::ostream & str, const ExternalValueBase & v) {
return v.print(str); return v.print(str);
} }

View file

@ -91,7 +91,7 @@ void printValueAsJSON(EvalState & state, bool strict,
void ExternalValueBase::printValueAsJSON(EvalState & state, bool strict, void ExternalValueBase::printValueAsJSON(EvalState & state, bool strict,
std::ostream & str, PathSet & context) std::ostream & str, PathSet & context) const
{ {
throw TypeError(format("cannot convert %1% to JSON") % showType()); throw TypeError(format("cannot convert %1% to JSON") % showType());
} }

View file

@ -155,7 +155,7 @@ static void printValueAsXML(EvalState & state, bool strict, bool location,
void ExternalValueBase::printValueAsXML(EvalState & state, bool strict, void ExternalValueBase::printValueAsXML(EvalState & state, bool strict,
bool location, XMLWriter & doc, PathSet & context, PathSet & drvsSeen) bool location, XMLWriter & doc, PathSet & context, PathSet & drvsSeen) const
{ {
doc.writeEmptyElement("unevaluated"); doc.writeEmptyElement("unevaluated");
} }

View file

@ -42,45 +42,45 @@ typedef long NixInt;
*/ */
class ExternalValueBase class ExternalValueBase
{ {
friend std::ostream & operator << (std::ostream & str, ExternalValueBase & v); friend std::ostream & operator << (std::ostream & str, const ExternalValueBase & v);
protected: protected:
/* Print out the value */ /* Print out the value */
virtual std::ostream & print(std::ostream & str) = 0; virtual std::ostream & print(std::ostream & str) const = 0;
public: public:
/* Return a simple string describing the type */ /* Return a simple string describing the type */
virtual string showType() = 0; virtual string showType() const = 0;
/* Return a string to be used in builtins.typeOf */ /* Return a string to be used in builtins.typeOf */
virtual string typeOf() = 0; virtual string typeOf() const = 0;
/* How much space does this value take up */ /* How much space does this value take up */
virtual size_t valueSize(std::set<const void *> & seen) = 0; virtual size_t valueSize(std::set<const void *> & seen) const = 0;
/* Coerce the value to a string. Defaults to uncoercable, i.e. throws an /* Coerce the value to a string. Defaults to uncoercable, i.e. throws an
* error * error
*/ */
virtual string coerceToString(const Pos & pos, PathSet & context, bool copyMore, bool copyToStore); virtual string coerceToString(const Pos & pos, PathSet & context, bool copyMore, bool copyToStore) const;
/* Compare to another value of the same type. Defaults to uncomparable, /* Compare to another value of the same type. Defaults to uncomparable,
* i.e. always false. * i.e. always false.
*/ */
virtual bool operator==(const ExternalValueBase & b); virtual bool operator==(const ExternalValueBase & b) const;
/* Print the value as JSON. Defaults to unconvertable, i.e. throws an error */ /* Print the value as JSON. Defaults to unconvertable, i.e. throws an error */
virtual void printValueAsJSON(EvalState & state, bool strict, virtual void printValueAsJSON(EvalState & state, bool strict,
std::ostream & str, PathSet & context); std::ostream & str, PathSet & context) const;
/* Print the value as XML. Defaults to unevaluated */ /* Print the value as XML. Defaults to unevaluated */
virtual void printValueAsXML(EvalState & state, bool strict, bool location, virtual void printValueAsXML(EvalState & state, bool strict, bool location,
XMLWriter & doc, PathSet & context, PathSet & drvsSeen); XMLWriter & doc, PathSet & context, PathSet & drvsSeen) const;
virtual ~ExternalValueBase() virtual ~ExternalValueBase()
{ {
}; };
}; };
std::ostream & operator << (std::ostream & str, ExternalValueBase & v); std::ostream & operator << (std::ostream & str, const ExternalValueBase & v);
struct Value struct Value