// UnmarshalBson bson-decodes into QueryResultList. func (queryResultList *QueryResultList) UnmarshalBson(buf *bytes.Buffer, kind byte) { switch kind { case bson.EOO, bson.Object: // valid case bson.Null: return default: panic(bson.NewBsonError("unexpected kind %v for QueryResultList", kind)) } bson.Next(buf, 4) for kind := bson.NextByte(buf); kind != bson.EOO; kind = bson.NextByte(buf) { switch bson.ReadCString(buf) { case "List": // []mproto.QueryResult if kind != bson.Null { if kind != bson.Array { panic(bson.NewBsonError("unexpected kind %v for queryResultList.List", kind)) } bson.Next(buf, 4) queryResultList.List = make([]mproto.QueryResult, 0, 8) for kind := bson.NextByte(buf); kind != bson.EOO; kind = bson.NextByte(buf) { bson.SkipIndex(buf) var _v1 mproto.QueryResult _v1.UnmarshalBson(buf, kind) queryResultList.List = append(queryResultList.List, _v1) } } default: bson.Skip(buf, kind) } } }
func DecodeResultsBson(buf *bytes.Buffer, kind byte) (results []mproto.QueryResult) { switch kind { case bson.Array: // valid case bson.Null: return nil default: panic(bson.NewBsonError("Unexpected data type %v for Queries", kind)) } bson.Next(buf, 4) results = make([]mproto.QueryResult, 0, 8) kind = bson.NextByte(buf) var result mproto.QueryResult for i := 0; kind != bson.EOO; i++ { bson.ExpectIndex(buf, i) result.UnmarshalBson(buf) results = append(results, result) kind = bson.NextByte(buf) } return results }