You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.2 KiB

  1. package bptree
  2. var (
  3. protoNodeId = int64(0)
  4. )
  5. func GetProtoNodeId() int64 {
  6. protoNodeId++
  7. return protoNodeId
  8. }
  9. func (self *BpMap) getRoot() *BpNode {
  10. return self.root
  11. }
  12. func (self *BpMap) setRoot(root *BpNode) {
  13. self.root = root
  14. }
  15. func (self *BpTree) getRoot() *BpNode {
  16. return self.root
  17. }
  18. func (self *BpTree) setRoot(root *BpNode) {
  19. self.root = root
  20. }
  21. func (self *BpNode) getNext() *BpNode {
  22. return self.next
  23. }
  24. func (self *BpNode) setNext(next *BpNode) {
  25. self.next = next
  26. }
  27. func (self *BpNode) getPrev() *BpNode {
  28. return self.prev
  29. }
  30. func (self *BpNode) setPrev(prev *BpNode) {
  31. self.prev = prev
  32. }
  33. func (self *BpNode) getNode(x int)(*BpNode) {
  34. return self.pointers[x]
  35. }
  36. func (self *BpNode) maybePersist(shouldPersist bool) error {
  37. if !shouldPersist {
  38. return nil
  39. }
  40. return self.persist()
  41. }
  42. func (self *BpNode) persist() error {
  43. if PersistFn != nil {
  44. return PersistFn(self)
  45. }
  46. return nil
  47. }
  48. func (self *BpNode) destroy() error {
  49. if DestroyFn != nil {
  50. return DestroyFn(self)
  51. }
  52. return nil
  53. }
  54. func persist(a, b *BpNode) error {
  55. if a != nil {
  56. if err := a.persist(); err != nil {
  57. return err
  58. }
  59. }
  60. if b != nil {
  61. if err := b.persist(); err != nil {
  62. return err
  63. }
  64. }
  65. return nil
  66. }