protected override void Add(ref ArrayBuffer <T> collection, int index, T value) { collection.Add(value); }
public T[,,,] Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver) { if (reader.ReadIsNull()) { return(null); } var buffer = new ArrayBuffer <ArrayBuffer <ArrayBuffer <ArrayBuffer <T> > > >(4); var formatter = formatterResolver.GetFormatterWithVerify <T>(); var guessInnerLength3 = 0; var guessInnerLength2 = 0; var guessInnerLength = 0; var outerCount = 0; reader.ReadIsBeginArrayWithVerify(); while (!reader.ReadIsEndArrayWithSkipValueSeparator(ref outerCount)) { var innerArray = new ArrayBuffer <ArrayBuffer <ArrayBuffer <T> > >(guessInnerLength == 0 ? 4 : guessInnerLength); var innerCount = 0; reader.ReadIsBeginArrayWithVerify(); while (!reader.ReadIsEndArrayWithSkipValueSeparator(ref innerCount)) { var innerArray2 = new ArrayBuffer <ArrayBuffer <T> >(guessInnerLength2 == 0 ? 4 : guessInnerLength2); var innerCount2 = 0; reader.ReadIsBeginArrayWithVerify(); while (!reader.ReadIsEndArrayWithSkipValueSeparator(ref innerCount2)) { var innerArray3 = new ArrayBuffer <T>(guessInnerLength3 == 0 ? 4 : guessInnerLength3); var innerCount3 = 0; reader.ReadIsBeginArrayWithVerify(); while (!reader.ReadIsEndArrayWithSkipValueSeparator(ref innerCount3)) { innerArray3.Add(formatter.Deserialize(ref reader, formatterResolver)); } guessInnerLength3 = innerArray3.Size; innerArray2.Add(innerArray3); } guessInnerLength2 = innerArray2.Size; innerArray.Add(innerArray2); } guessInnerLength = innerArray.Size; buffer.Add(innerArray); } var t = new T[buffer.Size, guessInnerLength, guessInnerLength2, guessInnerLength3]; for (int i = 0; i < buffer.Size; i++) { for (int j = 0; j < guessInnerLength; j++) { for (int k = 0; k < guessInnerLength2; k++) { for (int l = 0; l < guessInnerLength3; l++) { t[i, j, k, l] = buffer.Buffer[i].Buffer[j].Buffer[k].Buffer[l]; } } } } return(t); }