# Path: luna/w_objects.py
# class W_Object(object):
#     def __init__(self):
#         self.n_val = 0
#         self.s_val = ''
#         self.content = {}
# 
#     def eq(self, w_other):
#         raise NotImplementedError('eq not supported by this class')
# 
#     def neq(self, w_other):
#         raise NotImplementedError('neq not supported by this class')
# 
#     def gt(self, other):
#         raise NotImplementedError('gt not supported by this class')
# 
#     def lt(self, other):
#         raise NotImplementedError('lt not supported by this class')
# 
#     def ge(self, other):
#         raise NotImplementedError('ge not supported by this class')
# 
#     def le(self, other):
#         raise NotImplementedError('le not supported by this class')
# 
#     def is_true(self):
#         return True
# 
#     def to_str(self):
#         raise NotImplementedError('to_str not supported by this class')
# 
#     def clone(self):
#         raise NotImplementedError('clone not supported by this class')
# 
#     def get_val(self, key):
#         raise NotImplementedError('to_str not supported by this class')
# 
#     def hash(self):
#         raise NotImplementedError('hash not supported by this class')
# 
# Path: luna/modules/builtin.py
# def method_assert(args):
# def method_print(args):
# def method_loadfile(args):
# def method_loadstring(args):
# def method_tonumber(args):
# def method_type(args):
# 
# Path: luna/modules/table.py
# def method_concat(args):
# def method_insert(args):
# def method_maxn(args):
# def method_remove(args):
# 
# Path: luna/modules/lmath.py
# def method_floor(args):
# def method_sin(args):
# def method_mod(args):
# 
# Path: luna/modules/string.py
# def handle_args(args):
# def method_find(args):
# def method_match(args):
# def method_gsub(args):


from luna.w_objects import W_Object
from luna.modules.builtin import Builtin
from luna.modules.table import TableModule
from luna.modules.lmath import MathModule
from luna.modules.string import StringModule



class ObjectSpace(object):
    def __init__(self):
        self.globals = {}
        self.modules = {}
        self.registers = [W_Object()] * 10
        self.globals.update(Builtin.methods)
        self.add_module(TableModule)

# Path: luna/w_objects.py
# class W_Object(object):
#     def __init__(self):
#         self.n_val = 0
#         self.s_val = ''
#         self.content = {}
# 
#     def eq(self, w_other):
#         raise NotImplementedError('eq not supported by this class')
# 
#     def neq(self, w_other):
#         raise NotImplementedError('neq not supported by this class')
# 
#     def gt(self, other):
#         raise NotImplementedError('gt not supported by this class')
# 
#     def lt(self, other):
#         raise NotImplementedError('lt not supported by this class')
# 
#     def ge(self, other):
#         raise NotImplementedError('ge not supported by this class')
# 
#     def le(self, other):
#         raise NotImplementedError('le not supported by this class')
# 
#     def is_true(self):
#         return True
# 
#     def to_str(self):
#         raise NotImplementedError('to_str not supported by this class')
# 
#     def clone(self):
#         raise NotImplementedError('clone not supported by this class')
# 
#     def get_val(self, key):
#         raise NotImplementedError('to_str not supported by this class')
# 
#     def hash(self):
#         raise NotImplementedError('hash not supported by this class')
# 
# Path: luna/modules/builtin.py
# def method_assert(args):
# def method_print(args):
# def method_loadfile(args):
# def method_loadstring(args):
# def method_tonumber(args):
# def method_type(args):
# 
# Path: luna/modules/table.py
# def method_concat(args):
# def method_insert(args):
# def method_maxn(args):
# def method_remove(args):
# 
# Path: luna/modules/lmath.py
# def method_floor(args):
# def method_sin(args):
# def method_mod(args):
# 
# Path: luna/modules/string.py
# def handle_args(args):
# def method_find(args):
# def method_match(args):
# def method_gsub(args):


# Path: luna/objspace.py
from luna.w_objects import W_Object
from luna.modules.builtin import Builtin
from luna.modules.table import TableModule
from luna.modules.lmath import MathModule
from luna.modules.string import StringModule




class ObjectSpace(object):
    def __init__(self):
        self.globals = {}
        self.modules = {}
        self.registers = [W_Object()] * 10
        self.globals.update(Builtin.methods)
        self.add_module(TableModule)

        self.add_module(MathModule)