diff options
author | csharptest <roger@csharptest.net> | 2011-06-10 16:14:51 -0500 |
---|---|---|
committer | rogerk <devnull@localhost> | 2011-06-10 16:14:51 -0500 |
commit | ddb74eb6a45e758f6690f237fdf60b98d76e02fb (patch) | |
tree | 741b5aa7ad6138d404b6a2a69be737a6a171b8e8 /src | |
parent | afe844bc95f8a0b2399315e618b636a6f32191dd (diff) | |
download | protobuf-ddb74eb6a45e758f6690f237fdf60b98d76e02fb.tar.gz protobuf-ddb74eb6a45e758f6690f237fdf60b98d76e02fb.tar.bz2 protobuf-ddb74eb6a45e758f6690f237fdf60b98d76e02fb.zip |
Using List<Char> instead of StringBuilder for building strings from chars
Diffstat (limited to 'src')
-rw-r--r-- | src/ProtocolBuffers/Serialization/JsonTextCursor.cs | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/ProtocolBuffers/Serialization/JsonTextCursor.cs b/src/ProtocolBuffers/Serialization/JsonTextCursor.cs index a2a5b73d..6a8652c8 100644 --- a/src/ProtocolBuffers/Serialization/JsonTextCursor.cs +++ b/src/ProtocolBuffers/Serialization/JsonTextCursor.cs @@ -156,7 +156,7 @@ namespace Google.ProtocolBuffers.Serialization {
SkipWhitespace();
Consume('"');
- StringBuilder sb = new StringBuilder();
+ List<Char> sb = new List<char>(100);
while (_next != '"')
{
if (_next == '\\')
@@ -165,54 +165,53 @@ namespace Google.ProtocolBuffers.Serialization char ch = ReadChar();
switch (ch)
{
- case 'b': sb.Append('\b'); break;
- case 'f': sb.Append('\f'); break;
- case 'n': sb.Append('\n'); break;
- case 'r': sb.Append('\r'); break;
- case 't': sb.Append('\t'); break;
+ case 'b': sb.Add('\b'); break;
+ case 'f': sb.Add('\f'); break;
+ case 'n': sb.Add('\n'); break;
+ case 'r': sb.Add('\r'); break;
+ case 't': sb.Add('\t'); break;
case 'u':
{
string hex = new string(new char[] { ReadChar(), ReadChar(), ReadChar(), ReadChar() });
int result;
Assert(int.TryParse(hex, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out result),
"Expected a 4-character hex specifier.");
- sb.Append((char)result);
+ sb.Add((char)result);
break;
}
default:
- sb.Append(ch); break;
+ sb.Add(ch); break;
}
}
else
{
Assert(_next != '\n' && _next != '\r' && _next != '\f' && _next != -1, '"');
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
}
}
Consume('"');
- return sb.ToString();
+ return new String(sb.ToArray());
}
public string ReadNumber()
{
SkipWhitespace();
-
- StringBuilder sb = new StringBuilder();
+ List<Char> sb = new List<char>(24);
if (_next == '-')
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
while ((_next >= '0' && _next <= '9') || _next == '.')
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
if (_next == 'e' || _next == 'E')
{
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
if (_next == '-' || _next == '+')
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
while (_next >= '0' && _next <= '9')
- sb.Append(ReadChar());
+ sb.Add(ReadChar());
}
- return sb.ToString();
+ return new String(sb.ToArray());
}
public JsType ReadVariant(out object value)
|