* }}} */ * metatable operations {{{ */
(typ string)
| 316 | /* metatable operations {{{ */ |
| 317 | |
| 318 | func (ls *LState) NewTypeMetatable(typ string) *LTable { |
| 319 | regtable := ls.Get(RegistryIndex) |
| 320 | mt := ls.GetField(regtable, typ) |
| 321 | if tb, ok := mt.(*LTable); ok { |
| 322 | return tb |
| 323 | } |
| 324 | mtnew := ls.NewTable() |
| 325 | ls.SetField(regtable, typ, mtnew) |
| 326 | return mtnew |
| 327 | } |
| 328 | |
| 329 | func (ls *LState) GetMetaField(obj LValue, event string) LValue { |
| 330 | return ls.metaOp1(obj, event) |