* }}} */ * api methods {{{ */
(opts ...Options)
| 1404 | /* api methods {{{ */ |
| 1405 | |
| 1406 | func NewState(opts ...Options) *LState { |
| 1407 | var ls *LState |
| 1408 | if len(opts) == 0 { |
| 1409 | ls = newLState(Options{ |
| 1410 | CallStackSize: CallStackSize, |
| 1411 | RegistrySize: RegistrySize, |
| 1412 | }) |
| 1413 | ls.OpenLibs() |
| 1414 | } else { |
| 1415 | if opts[0].CallStackSize < 1 { |
| 1416 | opts[0].CallStackSize = CallStackSize |
| 1417 | } |
| 1418 | if opts[0].RegistrySize < 128 { |
| 1419 | opts[0].RegistrySize = RegistrySize |
| 1420 | } |
| 1421 | if opts[0].RegistryMaxSize < opts[0].RegistrySize { |
| 1422 | opts[0].RegistryMaxSize = 0 // disable growth if max size is smaller than initial size |
| 1423 | } else { |
| 1424 | // if growth enabled, grow step is set |
| 1425 | if opts[0].RegistryGrowStep < 1 { |
| 1426 | opts[0].RegistryGrowStep = RegistryGrowStep |
| 1427 | } |
| 1428 | } |
| 1429 | ls = newLState(opts[0]) |
| 1430 | if !opts[0].SkipOpenLibs { |
| 1431 | ls.OpenLibs() |
| 1432 | } |
| 1433 | } |
| 1434 | return ls |
| 1435 | } |
| 1436 | |
| 1437 | func (ls *LState) IsClosed() bool { |
| 1438 | return ls.stack == nil |
searching dependent graphs…