Skip to content

Commit 9b8feaf

Browse files
committed
Subloaders moved to the separate directory
1 parent 015a3a7 commit 9b8feaf

File tree

5 files changed

+55
-49
lines changed

5 files changed

+55
-49
lines changed

javoc/class/classLoader.lua

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ local javoc, classLoader = require("umfal")("javoc")
22

33
local debugPrint = javoc.util.debug.print
44
local binaryUtils = javoc.util.binaryUtils
5+
-- TODO: Split file and stream loaders
56
---Loads a class from a file. Path is relative from classpath
67
---@param file string @ Name of the class to load
78
---@param classpath string @ Absolute path to the classes to load
@@ -37,11 +38,10 @@ function classLoader.loadClassFromStream(stream)
3738

3839
debugPrint("Correct 'magic value' is loaded")
3940

40-
-- TODO: Move all the code to the separate loaders
41-
class.version = classLoader.loadVersion(stream)
42-
class.constantPool = javoc.class.constantPoolLoader.load(stream)
43-
class.accessFlags = javoc.class.accessFlagsLoader.load(stream)
44-
class.thisClass, class.superClass = classLoader.loadClassNames(stream, class.constantPool)
41+
class.version = javoc.class.subloaders.version.load(stream)
42+
class.constantPool = javoc.class.subloaders.constantPool.load(stream)
43+
class.accessFlags = javoc.class.subloaders.accessFlags.load(stream)
44+
class.thisClass, class.superClass = javoc.class.subloaders.classNames.load(stream, class.constantPool)
4545

4646
debugPrint("Class " .. class.thisClass.name .. " loaded successfully")
4747

@@ -53,43 +53,4 @@ function classLoader.checkMagicValue(stream)
5353
local magicValue = binaryUtils.readU4(stream)
5454

5555
return (magicValue == 0xCAFEBABE)
56-
end
57-
58-
function classLoader.loadVersion(stream)
59-
debugPrint("Loading versions (major and minor)")
60-
local version = {}
61-
62-
version.minor = binaryUtils.readU2(stream)
63-
version.major = binaryUtils.readU2(stream)
64-
65-
debugPrint("Versions loaded successfully!")
66-
debugPrint("Major - " .. version.major .. "; Minor - " .. version.minor)
67-
return version
68-
end
69-
70-
function classLoader.loadClassNames(stream, constantPool)
71-
debugPrint("Loading this and super class names")
72-
local thisClass = {}
73-
local superClass = {}
74-
75-
thisClass.index = binaryUtils.readU2(stream)
76-
superClass.index = binaryUtils.readU2(stream)
77-
78-
-- Both 'thisClassIndex' and 'superClassIndex' point at
79-
-- the CONSTANT_Class, which points at the CONSTANT_Utf8,
80-
-- which contains the string we want
81-
local thisClassConstantClass = constantPool[thisClass.index]
82-
local superClassConstantClass = constantPool[superClass.index]
83-
84-
local thisClassUTF8 = constantPool[thisClassConstantClass.nameIndex]
85-
local superClassUTF8 = constantPool[superClassConstantClass.nameIndex]
86-
87-
thisClass.name = thisClassUTF8.value
88-
superClass.name = superClassUTF8.value
89-
90-
debugPrint("This class: #" .. thisClass.index .. " (" .. thisClass.name .. ")")
91-
debugPrint("Super class: #" .. superClass.index .. " (" .. superClass.name .. ")")
92-
return thisClass, superClass
93-
end
94-
95-
return classLoader
56+
end

javoc/class/accessFlagsLoader.lua renamed to javoc/class/subloaders/accessFlags.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
local javoc, accessFlagsLoader = require("umfal")("javoc")
1+
local javoc, accessFlags = require("umfal")("javoc")
22

33
local debugPrint = javoc.util.debug.print
44
local binaryUtils = javoc.util.binaryUtils
@@ -7,7 +7,7 @@ local function debugPrintAccessFlag(name, value)
77
debugPrint(name .. " - " .. tostring(value))
88
end
99

10-
function accessFlagsLoader.load(stream)
10+
function accessFlags.load(stream)
1111
debugPrint("Loading access flags")
1212

1313
local accessFlags = {}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
local javoc, clasNames = require("umfal")("javoc")
2+
3+
local debugPrint = javoc.util.debug.print
4+
local binaryUtils = javoc.util.binaryUtils
5+
6+
function clasNames.load(stream, constantPool)
7+
debugPrint("Loading this and super class names")
8+
local thisClass = {}
9+
local superClass = {}
10+
11+
thisClass.index = binaryUtils.readU2(stream)
12+
superClass.index = binaryUtils.readU2(stream)
13+
14+
-- Both 'thisClassIndex' and 'superClassIndex' point at
15+
-- the CONSTANT_Class, which points at the CONSTANT_Utf8,
16+
-- which contains the string we want
17+
local thisClassConstantClass = constantPool[thisClass.index]
18+
local superClassConstantClass = constantPool[superClass.index]
19+
20+
local thisClassUTF8 = constantPool[thisClassConstantClass.nameIndex]
21+
local superClassUTF8 = constantPool[superClassConstantClass.nameIndex]
22+
23+
thisClass.name = thisClassUTF8.value
24+
superClass.name = superClassUTF8.value
25+
26+
debugPrint("This class: #" .. thisClass.index .. " (" .. thisClass.name .. ")")
27+
debugPrint("Super class: #" .. superClass.index .. " (" .. superClass.name .. ")")
28+
return thisClass, superClass
29+
end

javoc/class/constantPoolLoader.lua renamed to javoc/class/subloaders/constantPool.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
local javoc, constantPoolLoader = require("umfal")("javoc")
1+
local javoc, constantPool = require("umfal")("javoc")
22

33
local debugPrint = javoc.util.debug.print
44
local binaryUtils = javoc.util.binaryUtils
55

6-
function constantPoolLoader.load(stream)
6+
function constantPool.load(stream)
77
debugPrint("Loading constant pool")
88

99
local constantPool = {}

javoc/class/subloaders/version.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
local javoc, version = require("umfal")("javoc")
2+
3+
local debugPrint = javoc.util.debug.print
4+
local binaryUtils = javoc.util.binaryUtils
5+
6+
function version.load(stream)
7+
debugPrint("Loading versions (major and minor)")
8+
local version = {}
9+
10+
version.minor = binaryUtils.readU2(stream)
11+
version.major = binaryUtils.readU2(stream)
12+
13+
debugPrint("Versions loaded successfully!")
14+
debugPrint("Major - " .. version.major .. "; Minor - " .. version.minor)
15+
return version
16+
end

0 commit comments

Comments
 (0)