aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/LoxClass.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/craftinginterpreters/lox/LoxClass.java')
-rw-r--r--src/com/craftinginterpreters/lox/LoxClass.java51
1 files changed, 0 insertions, 51 deletions
diff --git a/src/com/craftinginterpreters/lox/LoxClass.java b/src/com/craftinginterpreters/lox/LoxClass.java
deleted file mode 100644
index 5d1c136..0000000
--- a/src/com/craftinginterpreters/lox/LoxClass.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.craftinginterpreters.lox;
-
-import java.util.List;
-import java.util.Map;
-
-class LoxClass implements LoxCallable {
- final String name;
- final LoxClass superclass;
- private final Map<String, LoxFunction> methods;
-
- LoxClass(String name, LoxClass superclass, Map<String, LoxFunction> methods) {
- this.superclass = superclass;
- this.name = name;
- this.methods = methods;
- }
-
- LoxFunction findMethod(String name) {
- if (methods.containsKey(name)) {
- return methods.get(name);
- }
-
- if (superclass != null) {
- return superclass.findMethod(name);
- }
-
- return null;
- }
-
- @Override
- public String toString() {
- return name;
- }
-
- @Override
- public Object call(Interpreter interpreter, List<Object> arguments) {
- LoxInstance instance = new LoxInstance(this);
- LoxFunction initializer = findMethod("init");
- if (initializer != null) {
- initializer.bind(instance).call(interpreter, arguments);
- }
- return instance;
- }
-
-
- @Override
- public int arity() {
- LoxFunction initializer = findMethod("init");
- if (initializer == null) return 0;
- return initializer.arity();
- }
-}