// automatically generated by the FlatBuffers compiler, do not modify
import { InnerStruct, InnerStructT } from '../../my-game/example/inner-struct.js';
export class OuterStruct {
    constructor() {
        this.bb = null;
        this.bb_pos = 0;
    }
    __init(i, bb) {
        this.bb_pos = i;
        this.bb = bb;
        return this;
    }
    a() {
        return !!this.bb.readInt8(this.bb_pos);
    }
    b() {
        return this.bb.readFloat64(this.bb_pos + 8);
    }
    cUnderscore(obj) {
        return (obj || new InnerStruct()).__init(this.bb_pos + 16, this.bb);
    }
    d(index, obj) {
        return (obj || new InnerStruct()).__init(this.bb_pos + 48 + index * 32, this.bb);
    }
    e(obj) {
        return (obj || new InnerStruct()).__init(this.bb_pos + 144, this.bb);
    }
    f(index) {
        return this.bb.readFloat64(this.bb_pos + 176 + index * 8);
    }
    static getFullyQualifiedName() {
        return 'MyGame.Example.OuterStruct';
    }
    static sizeOf() {
        return 208;
    }
    static createOuterStruct(builder, a, b, c_underscore_a, c_underscore_b, c_underscore_c, c_underscore_d_underscore, d, e_a, e_b, e_c, e_d_underscore, f) {
        builder.prep(8, 208);
        for (let i = 3; i >= 0; --i) {
            builder.writeFloat64((f?.[i] ?? 0));
        }
        builder.prep(8, 32);
        builder.writeInt64(BigInt(e_d_underscore ?? 0));
        builder.pad(2);
        builder.writeInt8(e_c);
        for (let i = 12; i >= 0; --i) {
            builder.writeInt8((e_b?.[i] ?? 0));
        }
        builder.writeFloat64(e_a);
        for (let i = 2; i >= 0; --i) {
            const item = d?.[i];
            if (item instanceof InnerStructT) {
                item.pack(builder);
                continue;
            }
            InnerStruct.createInnerStruct(builder, item?.a, item?.b, item?.c, item?.dUnderscore);
        }
        builder.prep(8, 32);
        builder.writeInt64(BigInt(c_underscore_d_underscore ?? 0));
        builder.pad(2);
        builder.writeInt8(c_underscore_c);
        for (let i = 12; i >= 0; --i) {
            builder.writeInt8((c_underscore_b?.[i] ?? 0));
        }
        builder.writeFloat64(c_underscore_a);
        builder.writeFloat64(b);
        builder.pad(7);
        builder.writeInt8(Number(Boolean(a)));
        return builder.offset();
    }
    unpack() {
        return new OuterStructT(this.a(), this.b(), (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null), this.bb.createObjList(this.d.bind(this), 3), (this.e() !== null ? this.e().unpack() : null), this.bb.createScalarList(this.f.bind(this), 4));
    }
    unpackTo(_o) {
        _o.a = this.a();
        _o.b = this.b();
        _o.cUnderscore = (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null);
        _o.d = this.bb.createObjList(this.d.bind(this), 3);
        _o.e = (this.e() !== null ? this.e().unpack() : null);
        _o.f = this.bb.createScalarList(this.f.bind(this), 4);
    }
}
export class OuterStructT {
    constructor(a = false, b = 0.0, cUnderscore = null, d = [], e = null, f = []) {
        this.a = a;
        this.b = b;
        this.cUnderscore = cUnderscore;
        this.d = d;
        this.e = e;
        this.f = f;
    }
    pack(builder) {
        return OuterStruct.createOuterStruct(builder, this.a, this.b, (this.cUnderscore?.a ?? 0), (this.cUnderscore?.b ?? []), (this.cUnderscore?.c ?? 0), (this.cUnderscore?.dUnderscore ?? BigInt(0)), this.d, (this.e?.a ?? 0), (this.e?.b ?? []), (this.e?.c ?? 0), (this.e?.dUnderscore ?? BigInt(0)), this.f);
    }
}
