using Google.Protobuf; using Google.Protobuf.Collections; namespace DynamicProtobuf.Runtime; public static class DynamicCodec { public static FieldCodec ForString(string fullName, string fieldName) => ForString(fullName, fieldName, ""); public static FieldCodec ForBytes(string fullName, string fieldName) => ForBytes(fullName, fieldName, ByteString.Empty); public static FieldCodec ForBool(string fullName, string fieldName) => ForBool(fullName, fieldName, false); public static FieldCodec ForInt32(string fullName, string fieldName) => ForInt32(fullName, fieldName, 0); public static FieldCodec ForSInt32(string fullName, string fieldName) => ForSInt32(fullName, fieldName, 0); public static FieldCodec ForFixed32(string fullName, string fieldName) => ForFixed32(fullName, fieldName, 0); public static FieldCodec ForSFixed32(string fullName, string fieldName) => ForSFixed32(fullName, fieldName, 0); public static FieldCodec ForUInt32(string fullName, string fieldName) => ForUInt32(fullName, fieldName, 0); public static FieldCodec ForInt64(string fullName, string fieldName) => ForInt64(fullName, fieldName, 0); public static FieldCodec ForSInt64(string fullName, string fieldName) => ForSInt64(fullName, fieldName, 0); public static FieldCodec ForFixed64(string fullName, string fieldName) => ForFixed64(fullName, fieldName, 0); public static FieldCodec ForSFixed64(string fullName, string fieldName) => ForSFixed64(fullName, fieldName, 0); public static FieldCodec ForUInt64(string fullName, string fieldName) => ForUInt64(fullName, fieldName, 0); public static FieldCodec ForFloat(string fullName, string fieldName) => ForFloat(fullName, fieldName, 0); public static FieldCodec ForDouble(string fullName, string fieldName) => ForDouble(fullName, fieldName, 0); public static FieldCodec ForEnum(string fullName, string fieldName, Func toInt32, Func fromInt32) => ForEnum(fullName, fieldName, toInt32, fromInt32, default); public static FieldCodec ForString(string fullName, string fieldName, string defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForString(tag, defaultValue); } public static FieldCodec ForBytes(string fullName, string fieldName, ByteString defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForBytes(tag, defaultValue); } public static FieldCodec ForBool(string fullName, string fieldName, bool defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForBool(tag, defaultValue); } public static FieldCodec ForInt32(string fullName, string fieldName, int defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForInt32(tag, defaultValue); } public static FieldCodec ForSInt32(string fullName, string fieldName, int defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForSInt32(tag, defaultValue); } public static FieldCodec ForFixed32(string fullName, string fieldName, uint defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForFixed32(tag); } public static FieldCodec ForSFixed32(string fullName, string fieldName, int defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForSFixed32(tag, defaultValue); } public static FieldCodec ForUInt32(string fullName, string fieldName, uint defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForUInt32(tag, defaultValue); } public static FieldCodec ForInt64(string fullName, string fieldName, long defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForInt64(tag, defaultValue); } public static FieldCodec ForSInt64(string fullName, string fieldName, long defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForSInt64(tag, defaultValue); } public static FieldCodec ForFixed64(string fullName, string fieldName, ulong defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForFixed64(tag, defaultValue); } public static FieldCodec ForSFixed64(string fullName, string fieldName, long defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForSFixed64(tag, defaultValue); } public static FieldCodec ForUInt64(string fullName, string fieldName, ulong defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForUInt64(tag, defaultValue); } public static FieldCodec ForFloat(string fullName, string fieldName, float defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForFloat(tag, defaultValue); } public static FieldCodec ForDouble(string fullName, string fieldName, double defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForDouble(tag, defaultValue); } public static FieldCodec ForEnum(string fullName, string fieldName, Func toInt32, Func fromInt32, T defaultValue) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForEnum(tag, toInt32, fromInt32, defaultValue); } public static MapField.Codec ForMap(string fullName, string fieldName, FieldCodec keyCodec, FieldCodec valueCodec) { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return new MapField.Codec(keyCodec, valueCodec, tag); } public static FieldCodec ForMessage(string fullName, string fieldName, MessageParser parser) where T : class, IMessage { uint tag = DynamicFieldRegistry.GetTag(fullName, fieldName); return FieldCodec.ForMessage(tag, parser); } }