elct9620/mruby-go

View on GitHub
symbol.go

Summary

Maintainability
A
0 mins
Test Coverage
A
92%
package mruby

type Symbol = uint32

func (c *State) Intern(str string) Symbol {
    if sym, ok := c.symbolTable[str]; ok {
        return sym
    }

    c.symbolIndex++
    c.symbolTable[str] = Symbol(c.symbolIndex)

    return Symbol(c.symbolIndex)
}

func (c *State) SymbolName(sym Symbol) string {
    for k, v := range c.symbolTable {
        if v == sym {
            return k
        }
    }

    return ""
}