1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 08:31:16 +02:00

* Avoid expensive conversions from char arrays to STL strings.

This commit is contained in:
Eelco Dolstra 2011-12-16 21:29:46 +00:00
parent e0bd307802
commit 8d3dfa2c17
3 changed files with 26 additions and 14 deletions

View file

@ -149,12 +149,17 @@ void writeLongLong(unsigned long long n, Sink & sink)
}
void writeString(const unsigned char * buf, size_t len, Sink & sink)
{
writeInt(len, sink);
sink(buf, len);
writePadding(len, sink);
}
void writeString(const string & s, Sink & sink)
{
size_t len = s.length();
writeInt(len, sink);
sink((const unsigned char *) s.c_str(), len);
writePadding(len, sink);
writeString((const unsigned char *) s.c_str(), s.size(), sink);
}
@ -208,6 +213,16 @@ unsigned long long readLongLong(Source & source)
}
size_t readString(unsigned char * buf, size_t max, Source & source)
{
size_t len = readInt(source);
if (len > max) throw Error("string is too long");
source(buf, len);
readPadding(len, source);
return len;
}
string readString(Source & source)
{
size_t len = readInt(source);