public BlittableJsonDocumentBuilder(JsonOperationContext context, UsageMode mode, string debugTag, IJsonParser reader, JsonParserState state) { _reader = reader; _debugTag = debugTag; _stream = context.GetStream(); _context = context; _mode = mode; _state = state; }
public BlittableJsonReaderObject(byte *mem, int size, JsonOperationContext context, UnmanagedWriteBuffer buffer = default(UnmanagedWriteBuffer)) : base(context) { if (size == 0) { ThrowOnZeroSize(size); } _isRoot = true; _buffer = buffer; _mem = mem; // get beginning of memory pointer _size = size; // get document size NoCache = NoCache; byte offset; var propOffsetStart = _size - 2; var propsOffset = ReadVariableSizeIntInReverse(_mem, propOffsetStart, out offset); // init document level properties SetupPropertiesAccess(mem, propsOffset); // get pointer to property names array on document level // init root level object properties var objStartOffset = ReadVariableSizeIntInReverse(_mem, propOffsetStart - offset, out offset); // get offset of beginning of data of the main object byte propCountOffset; _propCount = ReadVariableSizeInt(objStartOffset, out propCountOffset); // get main object properties count _objStart = objStartOffset + mem; _metadataPtr = objStartOffset + mem + propCountOffset; // get pointer to current objects property tags metadata collection var currentType = (BlittableJsonToken)(*(mem + size - sizeof(byte))); // get current type byte flags // analyze main object type and it's offset and propertyIds flags _currentOffsetSize = ProcessTokenOffsetFlags(currentType); _currentPropertyIdSize = ProcessTokenPropertyFlags(currentType); }