87
88
public serialize(): ArrayBuffer {
90
>
+ 4 // beforeVersionId
91
>
+ 4 // afterVersionId
92
>
+ 1 // beforeEOL
93
>
+ 1 // afterEOL
94
>
+ SingleModelEditStackData._writeSelectionsSize(this.beforeCursorState)
95
>
+ SingleModelEditStackData._writeSelectionsSize(this.afterCursorState)
96
>
+ 4 // change count
97
>
);
98
>
for (const change of this.changes) {
99
>
necessarySize += change.writeSize();
100
>
}
101
>
102
>
const b = new Uint8Array(necessarySize);
103
>
let offset = 0;
104
>
buffer.writeUInt32BE(b, this.beforeVersionId, offset); offset += 4;
105
>
buffer.writeUInt32BE(b, this.afterVersionId, offset); offset += 4;
106
>
buffer.writeUInt8(b, this.beforeEOL, offset); offset += 1;
107
>
buffer.writeUInt8(b, this.afterEOL, offset); offset += 1;
108
>
offset = SingleModelEditStackData._writeSelections(b, this.beforeCursorState, offset);
109
>
offset = SingleModelEditStackData._writeSelections(b, this.afterCursorState, offset);
110
>
buffer.writeUInt32BE(b, this.changes.length, offset); offset += 4;
111
>
for (const change of this.changes) {
112
>
offset = change.write(b, offset);
113
>
}
114
>
return b.buffer;
115
>
}
116
117
public static deserialize(source: ArrayBuffer): SingleModelEditStackData {