M Packets/NosSmooth.PacketSerializer/Converters/Basic/BasicTypeConverter.cs => Packets/NosSmooth.PacketSerializer/Converters/Basic/BasicTypeConverter.cs +12 -2
@@ 19,7 19,7 @@ public abstract class BasicTypeConverter<TBasicType> : BaseStringConverter<TBasi
/// <inheritdoc />
public override Result Serialize(TBasicType? obj, PacketStringBuilder builder)
{
- builder.Append(obj?.ToString() ?? "-");
+ builder.Append(obj?.ToString() ?? GetNullSymbol());
return Result.FromSuccess();
}
@@ 32,7 32,8 @@ public abstract class BasicTypeConverter<TBasicType> : BaseStringConverter<TBasi
return Result<TBasicType?>.FromError(nextTokenResult);
}
- if (packetToken.Token[0] == '-' && packetToken.Token.Length == 1)
+ var nullSymbol = GetNullSymbol();
+ if (packetToken.Token.Length == nullSymbol.Length && packetToken.Token.StartsWith(nullSymbol))
{
return Result<TBasicType?>.FromSuccess(default);
}
@@ 46,4 47,13 @@ public abstract class BasicTypeConverter<TBasicType> : BaseStringConverter<TBasi
/// <param name="value">The value to deserialize.</param>
/// <returns>The deserialized value or an error.</returns>
protected abstract Result<TBasicType?> Deserialize(ReadOnlySpan<char> value);
+
+ /// <summary>
+ /// Gets the symbol that represents null.
+ /// </summary>
+ /// <returns>The null symbol.</returns>
+ protected virtual string GetNullSymbol()
+ {
+ return "-1";
+ }
}=
\ No newline at end of file
M Packets/NosSmooth.PacketSerializer/Converters/Basic/StringTypeConverter.cs => Packets/NosSmooth.PacketSerializer/Converters/Basic/StringTypeConverter.cs +6 -0
@@ 19,4 19,10 @@ public class StringTypeConverter : BasicTypeConverter<string>
{
return value.ToString();
}
+
+ /// <inheritdoc />
+ protected override string GetNullSymbol()
+ {
+ return "-";
+ }
}=
\ No newline at end of file
M Packets/NosSmooth.PacketSerializer/Converters/Special/Converters/NullableStringConverter.cs => Packets/NosSmooth.PacketSerializer/Converters/Special/Converters/NullableStringConverter.cs +12 -1
@@ 35,7 35,7 @@ public class NullableStringConverter<T> : BaseStringConverter<Nullable<T>>
{
if (obj is null)
{
- builder.Append('-');
+ builder.Append("-1");
return Result.FromSuccess();
}
@@ 45,6 45,17 @@ public class NullableStringConverter<T> : BaseStringConverter<Nullable<T>>
/// <inheritdoc />
public override Result<T?> Deserialize(ref PacketStringEnumerator stringEnumerator)
{
+ var nextToken = stringEnumerator.GetNextToken(out var packetToken, false);
+ if (!nextToken.IsSuccess)
+ {
+ return Result<T?>.FromError(nextToken);
+ }
+
+ if (packetToken.Token.Length == 2 && packetToken.Token.StartsWith("-1"))
+ {
+ return Result<T?>.FromSuccess(null);
+ }
+
var result = _stringSerializer.Deserialize<T>(ref stringEnumerator);
if (!result.IsSuccess)
{
M Packets/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BasicInlineConverterGenerator.cs => Packets/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BasicInlineConverterGenerator.cs +2 -2
@@ 35,7 35,7 @@ public class BasicInlineConverterGenerator : IInlineConverterGenerator
{
textWriter.WriteLine($"if ({variableName} is null)");
textWriter.WriteLine("{");
- textWriter.WriteLine("builder.Append('-');");
+ textWriter.WriteLine("builder.Append(\"-1\");");
textWriter.WriteLine("}");
textWriter.WriteLine("else");
}
@@ 76,7 76,7 @@ public static Result<{type}?> ParseBasic{type}(IStringConverter typeConverter, r
}}
var token = packetToken.Token;
- if (token[0] == '-' && token.Length == 1)
+ if (token.Length == 2 && token.StartsWith(""-1""))
{{
return Result<{type}?>.FromSuccess(null);
}}
M Packets/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BoolInlineConverterGenerator.cs => Packets/NosSmooth.PacketSerializersGenerator/InlineConverterGenerators/BoolInlineConverterGenerator.cs +2 -2
@@ 28,7 28,7 @@ public class BoolInlineConverterGenerator : IInlineConverterGenerator
textWriter.WriteLine($"if ({variableName} is null)");
textWriter.WriteLine("{");
textWriter.Indent++;
- textWriter.WriteLine("builder.Append('-');");
+ textWriter.WriteLine("builder.Append(\"-1\");");
textWriter.Indent--;
textWriter.WriteLine("}");
textWriter.WriteLine("else");
@@ 61,7 61,7 @@ public static Result<bool?> ParseBool(ref PacketStringEnumerator stringEnumerato
}}
var token = packetToken.Token;
- if (token[0] == '-')
+ if (token.Length == 2 && token.StartsWith(""-1""))
{{
return Result<bool?>.FromSuccess(null);
}}