MCPcopy Create free account
hub / github.com/apache/fory / ReadInlineTypedValue

Method ReadInlineTypedValue

csharp/src/Fory/FieldSkipper.cs:85–142  ·  view source on GitHub ↗
(ReadContext context, RefMode refMode)

Source from the content-addressed store, hash-verified

83 }
84
85 private static object? ReadInlineTypedValue(ReadContext context, RefMode refMode)
86 {
87 switch (refMode)
88 {
89 case RefMode.None:
90 return ReadInlineTypedPayload(context);
91 case RefMode.NullOnly:
92 {
93 sbyte flag = context.Reader.ReadInt8();
94 if (flag == (sbyte)RefFlag.Null)
95 {
96 return null;
97 }
98
99 if (flag != (sbyte)RefFlag.NotNullValue)
100 {
101 throw new InvalidDataException($"unexpected nullOnly flag {flag}");
102 }
103
104 return ReadInlineTypedPayload(context);
105 }
106 case RefMode.Tracking:
107 {
108 RefFlag flag = context.RefReader.ReadRefFlag(context.Reader);
109 switch (flag)
110 {
111 case RefFlag.Null:
112 return null;
113 case RefFlag.Ref:
114 {
115 uint refId = context.RefReader.ReadRefId(context.Reader);
116 return context.RefReader.GetRefValue(refId);
117 }
118 case RefFlag.RefValue:
119 {
120 uint reservedRefId = context.RefReader.ReserveRefId();
121 context.SetReservedRefId(reservedRefId);
122 try
123 {
124 object? value = ReadInlineTypedPayload(context);
125 context.StoreRef(value);
126 return value;
127 }
128 finally
129 {
130 context.ClearReservedRefId();
131 }
132 }
133 case RefFlag.NotNullValue:
134 return ReadInlineTypedPayload(context);
135 default:
136 throw new RefException($"invalid ref flag {(sbyte)flag}");
137 }
138 }
139 default:
140 throw new InvalidDataException($"unsupported ref mode {refMode}");
141 }
142 }

Callers

nothing calls this directly

Calls 8

ReadRefIdMethod · 0.80
GetRefValueMethod · 0.80
SetReservedRefIdMethod · 0.80
StoreRefMethod · 0.80
ClearReservedRefIdMethod · 0.80
ReadInt8Method · 0.45
ReadRefFlagMethod · 0.45
ReserveRefIdMethod · 0.45

Tested by

no test coverage detected