init commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package symbol
|
||||
|
||||
var intern_map map[string]*Symbol
|
||||
|
||||
type Symbol struct {
|
||||
ns string
|
||||
symbol string
|
||||
}
|
||||
|
||||
func Intern(ns string, symbol string) *Symbol {
|
||||
combined_str := ns + "/" + symbol
|
||||
existingSymbol, ok := intern_map[combined_str]
|
||||
if ok {
|
||||
return existingSymbol
|
||||
} else {
|
||||
newSymbol := new(Symbol)
|
||||
newSymbol.ns = ns
|
||||
newSymbol.symbol = symbol
|
||||
if intern_map == nil {
|
||||
intern_map = make(map[string]*Symbol)
|
||||
}
|
||||
intern_map[combined_str] = newSymbol
|
||||
return newSymbol
|
||||
}
|
||||
}
|
||||
|
||||
func String(this *Symbol) string {
|
||||
if this.ns == "" {
|
||||
return this.symbol
|
||||
}
|
||||
return this.ns + "/" + this.symbol
|
||||
}
|
||||
|
||||
func (this *Symbol) String() string {
|
||||
return String(this)
|
||||
}
|
||||
Reference in New Issue
Block a user