binding.go 511 B

12345678910111213141516171819202122232425262728293031
  1. package program
  2. import (
  3. "unsafe"
  4. "kumachan/standalone/ctn"
  5. "kumachan/lang/source"
  6. "kumachan/lang/typsys"
  7. )
  8. type Binding struct {
  9. Name string
  10. Type typsys.CertainType
  11. Location source.Location
  12. Constant bool
  13. }
  14. func (b *Binding) PointerNumber() uintptr {
  15. return uintptr(unsafe.Pointer(b))
  16. }
  17. func BindingCompare(a *Binding, b *Binding) ctn.Ordering {
  18. if a == b {
  19. return ctn.Equal
  20. } else if a.PointerNumber() < b.PointerNumber() {
  21. return ctn.Smaller
  22. } else {
  23. return ctn.Bigger
  24. }
  25. }