add WriteEmptyInt() and RefillInt()
This commit is contained in:
parent
f887bff6bd
commit
e5ed771fcd
@ -48,18 +48,39 @@ type Writer struct {
|
|||||||
sizePos int64
|
sizePos int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Writer) WriteEmptyInt(n int) (pos int64, err error) {
|
||||||
|
if pos, err = self.Seek(0, 1); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err = WriteInt(self, 0, n); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *Writer) RefillInt(pos int64, val int, n int) (err error) {
|
||||||
|
var curPos int64
|
||||||
|
if curPos, err = self.Seek(0, 1); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, err = self.Seek(pos, 0); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err = WriteInt(self, val, n); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, err = self.Seek(curPos, 0); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Writer) Close() (err error) {
|
func (self *Writer) Close() (err error) {
|
||||||
var curPos int64
|
var curPos int64
|
||||||
if curPos, err = self.Seek(0, 1); err != nil {
|
if curPos, err = self.Seek(0, 1); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _, err = self.Seek(self.sizePos, 0); err != nil {
|
if err = self.RefillInt(self.sizePos, int(curPos - self.sizePos), 4); err != nil {
|
||||||
return
|
|
||||||
}
|
|
||||||
if err = WriteInt(self, int(curPos - self.sizePos), 4); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if _, err = self.Seek(curPos, 0); err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if false {
|
if false {
|
||||||
@ -71,10 +92,7 @@ func (self *Writer) Close() (err error) {
|
|||||||
func WriteAtomHeader(w io.WriteSeeker, cc4 string) (res *Writer, err error) {
|
func WriteAtomHeader(w io.WriteSeeker, cc4 string) (res *Writer, err error) {
|
||||||
self := &Writer{WriteSeeker: w}
|
self := &Writer{WriteSeeker: w}
|
||||||
|
|
||||||
if self.sizePos, err = w.Seek(0, 1); err != nil {
|
if self.sizePos, err = self.WriteEmptyInt(4); err != nil {
|
||||||
return
|
|
||||||
}
|
|
||||||
if err = WriteDummy(self, 4); err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = WriteString(self, cc4, 4); err != nil {
|
if err = WriteString(self, cc4, 4); err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user