name.go 947 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package name
  2. import "fmt"
  3. type Name struct {
  4. ModuleName string
  5. ItemName string
  6. }
  7. func MakeName(mod string, item string) Name {
  8. return Name {
  9. ModuleName: mod,
  10. ItemName: item,
  11. }
  12. }
  13. func (n Name) String() string {
  14. if n.ModuleName == "" {
  15. return n.ItemName
  16. } else {
  17. return fmt.Sprintf("%s::%s", n.ModuleName, n.ItemName)
  18. }
  19. }
  20. type TypeName struct {
  21. Name
  22. }
  23. func MakeTypeName(mod string, item string) TypeName {
  24. return TypeName { Name: MakeName(mod, item) }
  25. }
  26. func (n TypeName) String() string {
  27. return n.Name.String()
  28. }
  29. type FunctionName struct {
  30. Name
  31. Tag string
  32. }
  33. func (n FunctionName) String() string {
  34. if n.Tag != "" {
  35. return fmt.Sprintf("%s#%s", n.Name.String(), n.Tag)
  36. } else {
  37. return n.Name.String()
  38. }
  39. }
  40. func FunctionNameTagFromSource(index uint) string {
  41. return fmt.Sprintf("src-%d", index)
  42. }
  43. func FunctionNameTagGenerated(prefix string, id string) string {
  44. return fmt.Sprintf("gen-%s-%s", prefix, id)
  45. }