Equality checking
This commit is contained in:
parent
9af373fdab
commit
61b1dadb11
39
media.go
39
media.go
@ -163,16 +163,30 @@ func (self *Volume) export(path string, config ExportConfig, allocator *TempDirA
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Volume) supercedes(other *Volume) bool {
|
func (self *Volume) compare(other *Volume) int {
|
||||||
|
if len(self.Pages) == len(other.Pages) {
|
||||||
|
var different bool
|
||||||
|
for i := range self.Pages {
|
||||||
|
if self.Pages[i].Node.Info.Size() != other.Pages[i].Node.Info.Size() {
|
||||||
|
different = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !different {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(self.Pages) > len(other.Pages) {
|
if len(self.Pages) > len(other.Pages) {
|
||||||
return true
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.AveragePageSize() > other.AveragePageSize() {
|
if self.AveragePageSize() > other.AveragePageSize() {
|
||||||
return true
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
type Book struct {
|
type Book struct {
|
||||||
@ -247,7 +261,7 @@ func (self *Book) Export(path string, config ExportConfig, allocator *TempDirAll
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Book) addVolume(volume *Volume) {
|
func (self *Book) addVolume(newVolume *Volume) {
|
||||||
insert := func(v *Volume) {
|
insert := func(v *Volume) {
|
||||||
self.Volumes[v.Index] = v
|
self.Volumes[v.Index] = v
|
||||||
if v.Index >= self.VolumeCount {
|
if v.Index >= self.VolumeCount {
|
||||||
@ -255,14 +269,17 @@ func (self *Book) addVolume(volume *Volume) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
currVolume, _ := self.Volumes[volume.Index]
|
currVolume, _ := self.Volumes[newVolume.Index]
|
||||||
if currVolume == nil {
|
if currVolume == nil {
|
||||||
insert(volume)
|
insert(newVolume)
|
||||||
} else if volume.supercedes(currVolume) {
|
|
||||||
self.addOrphan(currVolume)
|
|
||||||
insert(volume)
|
|
||||||
} else {
|
} else {
|
||||||
self.addOrphan(volume)
|
switch newVolume.compare(currVolume) {
|
||||||
|
case 1:
|
||||||
|
insert(newVolume)
|
||||||
|
self.addOrphan(currVolume)
|
||||||
|
case -1:
|
||||||
|
self.addOrphan(newVolume)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user