Better function attribs in Mark

This commit is contained in:
Ferdinand Majerech 2014-07-22 01:22:56 +02:00
parent 405a61891f
commit 9dd6903e13

View file

@ -27,28 +27,31 @@ class YAMLException : Exception
} }
} }
///Position in a YAML stream, used for error messages. /// Position in a YAML stream, used for error messages.
struct Mark struct Mark
{ {
private: private:
///Line number. /// Line number.
ushort line_; ushort line_;
///Column number. /// Column number.
ushort column_; ushort column_;
public: public:
///Construct a Mark with specified line and column in the file. /// Construct a Mark with specified line and column in the file.
this(const uint line, const uint column) pure @safe nothrow this(const uint line, const uint column) @safe pure nothrow @nogc
{ {
line_ = cast(ushort)min(ushort.max, line); line_ = cast(ushort)min(ushort.max, line);
column_ = cast(ushort)min(ushort.max, column); column_ = cast(ushort)min(ushort.max, column);
} }
///Get a string representation of the mark. /// Get a string representation of the mark.
string toString() const @trusted pure string toString() @safe pure nothrow const
{ {
//Line/column numbers start at zero internally, make them start at 1. /// Line/column numbers start at zero internally, make them start at 1.
string clamped(ushort v){return str(v + 1) ~ (v == ushort.max ? " or higher" : "");} static string clamped(ushort v) @safe pure nothrow
{
return str(v + 1) ~ (v == ushort.max ? " or higher" : "");
}
return "line " ~ clamped(line_) ~ ",column " ~ clamped(column_); return "line " ~ clamped(line_) ~ ",column " ~ clamped(column_);
} }
} }