M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BasicInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BasicInlineConverterGenerator.cs +6 -6
@@ 57,7 57,7 @@ public class BasicInlineConverterGenerator : IInlineConverterGenerator
throw new Exception("TypeSyntax or TypeSymbol has to be non null.");
}
- textWriter.WriteLine($"{Constants.HelperClass}.ParseBasic{type}(typeConverter, stringEnumerator);");
+ textWriter.WriteLine($"{Constants.HelperClass}.ParseBasic{type}(typeConverter, ref stringEnumerator);");
return null;
}
@@ 67,23 67,23 @@ public class BasicInlineConverterGenerator : IInlineConverterGenerator
foreach (var type in HandleTypes)
{
textWriter.WriteMultiline($@"
-public static Result<{type}?> ParseBasic{type}(IStringConverter typeConverter, PacketStringEnumerator stringEnumerator)
+public static Result<{type}?> ParseBasic{type}(IStringConverter typeConverter, ref PacketStringEnumerator stringEnumerator)
{{
- var tokenResult = stringEnumerator.GetNextToken();
+ var tokenResult = stringEnumerator.GetNextToken(out var packetToken);
if (!tokenResult.IsSuccess)
{{
return Result<{type}?>.FromError(tokenResult);
}}
- var token = tokenResult.Entity.Token;
- if (token == ""-"")
+ var token = packetToken.Token;
+ if (token[0] == '-' && token.Length == 1)
{{
return Result<{type}?>.FromSuccess(null);
}}
if (!{type}.TryParse(token, out var val))
{{
- return new CouldNotConvertError(typeConverter, token, ""Could not convert as {type} in inline converter"");
+ return new CouldNotConvertError(typeConverter, token.ToString(), ""Could not convert as {type} in inline converter"");
}}
return val;
M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BoolInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BoolInlineConverterGenerator.cs +6 -6
@@ 44,7 44,7 @@ public class BoolInlineConverterGenerator : IInlineConverterGenerator
/// <inheritdoc />
public IError? CallDeserialize(IndentedTextWriter textWriter, TypeSyntax? typeSyntax, ITypeSymbol? typeSymbol)
{
- textWriter.WriteLine($"{Constants.HelperClass}.ParseBool(stringEnumerator);");
+ textWriter.WriteLine($"{Constants.HelperClass}.ParseBool(ref stringEnumerator);");
return null;
}
@@ 52,21 52,21 @@ public class BoolInlineConverterGenerator : IInlineConverterGenerator
public void GenerateHelperMethods(IndentedTextWriter textWriter)
{
textWriter.WriteLine(@"
-public static Result<bool?> ParseBool(PacketStringEnumerator stringEnumerator)
+public static Result<bool?> ParseBool(ref PacketStringEnumerator stringEnumerator)
{{
- var tokenResult = stringEnumerator.GetNextToken();
+ var tokenResult = stringEnumerator.GetNextToken(out var packetToken);
if (!tokenResult.IsSuccess)
{{
return Result<bool?>.FromError(tokenResult);
}}
- var token = tokenResult.Entity.Token;
- if (token == ""-"")
+ var token = packetToken.Token;
+ if (token[0] == '-')
{{
return Result<bool?>.FromSuccess(null);
}}
- return token == ""1"" ? true : false;
+ return token[0] == '1' ? true : false;
}}
");
}
M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/EnumInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/EnumInlineConverterGenerator.cs +6 -6
@@ 66,7 66,7 @@ public class EnumInlineConverterGenerator : IInlineConverterGenerator
textWriter.WriteLine
(
- $"{Constants.HelperClass}.ParseEnum{typeSymbol?.ToString().TrimEnd('?').Replace('.', '_')}(typeConverter, stringEnumerator);"
+ $"{Constants.HelperClass}.ParseEnum{typeSymbol?.ToString().TrimEnd('?').Replace('.', '_')}(typeConverter, ref stringEnumerator);"
);
return null;
}
@@ 80,23 80,23 @@ public class EnumInlineConverterGenerator : IInlineConverterGenerator
textWriter.WriteMultiline
(
$@"
-public static Result<{type}?> ParseEnum{type.ToString().Replace('.', '_')}(IStringConverter typeConverter, PacketStringEnumerator stringEnumerator)
+public static Result<{type}?> ParseEnum{type.ToString().Replace('.', '_')}(IStringConverter typeConverter, ref PacketStringEnumerator stringEnumerator)
{{
- var tokenResult = stringEnumerator.GetNextToken();
+ var tokenResult = stringEnumerator.GetNextToken(out var packetToken);
if (!tokenResult.IsSuccess)
{{
return Result<{type}?>.FromError(tokenResult);
}}
- var token = tokenResult.Entity.Token;
- if (token == ""-"")
+ var token = packetToken.Token;
+ if (token[0] == '-')
{{
return Result<{type}?>.FromSuccess(null);
}}
if (!{underlyingType}.TryParse(token, out var val))
{{
- return new CouldNotConvertError(typeConverter, token, ""Could not convert as {type} in inline converter"");
+ return new CouldNotConvertError(typeConverter, token.ToString(), ""Could not convert as {type} in inline converter"");
}}
return ({type}?)val;
M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/FallbackInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/FallbackInlineConverterGenerator.cs +1 -1
@@ 48,7 48,7 @@ public class FallbackInlineConverterGenerator : IInlineConverterGenerator
{
textWriter.WriteLine
(
- $"_stringSerializer.Deserialize<{(typeSyntax?.ToString() ?? typeSymbol!.ToString()).TrimEnd('?')}?>(stringEnumerator);"
+ $"_stringSerializer.Deserialize<{(typeSyntax?.ToString() ?? typeSymbol!.ToString()).TrimEnd('?')}?>(ref stringEnumerator);"
);
return null;
}
M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/ListInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/ListInlineConverterGenerator.cs +1 -1
@@ 129,7 129,7 @@ public static Result<IReadOnlyList<{type.GetActualType()}>> {GetMethodName(type)
// or the packet has more fields.
while (stringEnumerator.IsOnLastToken() == false)
{{
- stringEnumerator.GetNextToken();
+ stringEnumerator.GetNextToken(out _);
}}
stringEnumerator.PopLevel();
M Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/StringInlineConverterGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/StringInlineConverterGenerator.cs +4 -4
@@ 30,7 30,7 @@ public class StringInlineConverterGenerator : IInlineConverterGenerator
/// <inheritdoc />
public IError? CallDeserialize(IndentedTextWriter textWriter, TypeSyntax? typeSyntax, ITypeSymbol? typeSymbol)
{
- textWriter.WriteLine($"{Constants.HelperClass}.ParseString(stringEnumerator);");
+ textWriter.WriteLine($"{Constants.HelperClass}.ParseString(ref stringEnumerator);");
return null;
}
@@ 40,15 40,15 @@ public class StringInlineConverterGenerator : IInlineConverterGenerator
textWriter.WriteLine
(
@"
-public static Result<string?> ParseString(PacketStringEnumerator stringEnumerator)
+public static Result<string?> ParseString(ref PacketStringEnumerator stringEnumerator)
{{
- var tokenResult = stringEnumerator.GetNextToken();
+ var tokenResult = stringEnumerator.GetNextToken(out var packetToken);
if (!tokenResult.IsSuccess)
{{
return Result<string?>.FromError(tokenResult);
}}
- return tokenResult.Entity.Token;
+ return packetToken.Token.ToString();
}}
"
);