aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-06-10 16:14:51 -0500
committerrogerk <devnull@localhost>2011-06-10 16:14:51 -0500
commitddb74eb6a45e758f6690f237fdf60b98d76e02fb (patch)
tree741b5aa7ad6138d404b6a2a69be737a6a171b8e8 /src
parentafe844bc95f8a0b2399315e618b636a6f32191dd (diff)
downloadprotobuf-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.cs35
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)