Skip to content

Commit edca872

Browse files
feat!: Implemented more typecode parsing, reading our test file now works fully!!!!!
1 parent 1d205f0 commit edca872

39 files changed

+428
-136
lines changed

CMakeLists.txt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION VERSION 3.30)
2-
project(JavaObjectStreams VERSION 1.2.1)
2+
project(JavaObjectStreams VERSION 1.3.0)
33

44
set(CMAKE_CXX_STANDARD 20)
55

@@ -54,10 +54,6 @@ set(FILES
5454
include/JavaObject/type/object/types/AnnotationObject.h
5555
src/type/object/parsers/ClassDataParser.cpp
5656
include/JavaObject/type/object/parsers/ClassDataParser.h
57-
src/type/object/types/descriptor/ClassDescriptorObject.cpp
58-
include/JavaObject/type/object/types/descriptor/ClassDescriptorObject.h
59-
src/type/object/parsers/descriptor/ClassDescriptorParser.cpp
60-
include/JavaObject/type/object/parsers/descriptor/ClassDescriptorParser.h
6157
src/type/object/types/ReferenceObject.cpp
6258
include/JavaObject/type/object/types/ReferenceObject.h
6359
src/type/object/parsers/ReferenceParser.cpp
@@ -122,6 +118,21 @@ set(FILES
122118
include/JavaObject/type/primitive/parsers/PrimitiveJavaObjectParser.h
123119
src/type/primitive/parsers/PrimitiveArrayObjectParser.cpp
124120
include/JavaObject/type/primitive/parsers/PrimitiveArrayObjectParser.h
121+
src/type/object/types/EndBlockDataObject.cpp
122+
include/JavaObject/type/object/types/EndBlockDataObject.h
123+
src/type/object/parsers/EndBlockDataObjectParser.cpp
124+
include/JavaObject/type/object/parsers/EndBlockDataObjectParser.h
125+
src/type/object/types/BlockDataObject.cpp
126+
include/JavaObject/type/object/types/BlockDataObject.h
127+
src/type/object/parsers/ShortBlockDataObjectParser.cpp
128+
include/JavaObject/type/object/parsers/ShortBlockDataObjectParser.h
129+
src/type/object/parsers/LongBlockDataObjectParser.cpp
130+
include/JavaObject/type/object/parsers/LongBlockDataObjectParser.h
131+
src/type/object/types/descriptor/NewClassDescriptorObject.cpp
132+
src/type/object/types/descriptor/FieldDescriptorObject.cpp
133+
src/type/object/types/NullObject.cpp
134+
src/type/object/parsers/NullObjectParser.cpp
135+
include/JavaObject/type/object/parsers/NullObjectParser.h
125136
)
126137

127138
add_library(JavaObjectStreams SHARED ${FILES})

include/JavaObject/type/HandleContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace javaobject::type {
2828
private:
2929
/** Links handles to objects by pointer, these objects are expected to be stored already, otherwise it would leave a dangling/invalid pointer. */
3030
std::unordered_map<object::ReferenceObject::handle_t, std::shared_ptr<object::IObject>> m_handles;
31-
object::ReferenceObject::handle_t m_nextHandle = 0x7E000000;
31+
object::ReferenceObject::handle_t m_nextHandle = 0x007E0000;
3232
};
3333
} // namespace javaobject::type
3434

include/JavaObject/type/object/parsers/ClassDataParser.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
#ifndef JAVAOBJECTSTREAMS_CLASSDATAPARSER_H
1212
#define JAVAOBJECTSTREAMS_CLASSDATAPARSER_H
1313
#include "../types/ClassDataObject.h"
14-
#include "JavaObject/type/object/types/descriptor/ClassDescriptorObject.h"
1514
#include "JavaObject/type/object/parsers/IObjectParser.h"
1615

1716
#include <functional>
1817

18+
#include "JavaObject/type/object/types/descriptor/ClassDescriptorInfoObject.h"
19+
1920
namespace javaobject::type::object::parsers {
2021
struct ClassDataParser : public IObjectParser {
2122
explicit ClassDataParser(const std::shared_ptr<object::descriptor::ClassDescriptorInfoObject> &classDescInfo);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/** @file EndBlockDataObjectParser.h
2+
*
3+
* @author Dexrn ZacAttack
4+
* @date 3/25/26
5+
*
6+
* @device zPc-i2
7+
*
8+
* @copyright Copyright (c) 2026 Team Lodestone
9+
* @license This project is licensed under the MIT license, see the LICENSE file for details.
10+
*/
11+
#ifndef JAVAOBJECTSTREAMS_ENDBLOCKDATAOBJECTPARSER_H
12+
#define JAVAOBJECTSTREAMS_ENDBLOCKDATAOBJECTPARSER_H
13+
#include "IObjectParser.h"
14+
15+
namespace javaobject::type::object::parsers {
16+
struct EndBlockDataObjectParser : IObjectParser {
17+
std::shared_ptr<object::IObject> operator()(type::object::ObjectTypeCodeParser& parser) const override;
18+
};
19+
}
20+
21+
#endif //JAVAOBJECTSTREAMS_ENDBLOCKDATAOBJECTPARSER_H
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/** @file LongBlockDataObjectParser.h
2+
*
3+
* @author Dexrn ZacAttack
4+
* @date 3/25/26
5+
*
6+
* @device zPc-i2
7+
*
8+
* @copyright Copyright (c) 2026 Team Lodestone
9+
* @license This project is licensed under the MIT license, see the LICENSE file for details.
10+
*/
11+
#ifndef JAVAOBJECTSTREAMS_LONGBLOCKDATAOBJECTPARSER_H
12+
#define JAVAOBJECTSTREAMS_LONGBLOCKDATAOBJECTPARSER_H
13+
#include "JavaObject/type/object/parsers/IObjectParser.h"
14+
15+
namespace javaobject::type::object::parsers {
16+
struct LongBlockDataObjectParser : IObjectParser {
17+
std::shared_ptr<object::IObject> operator()(type::object::ObjectTypeCodeParser& parser) const override;
18+
};
19+
}
20+
21+
#endif //JAVAOBJECTSTREAMS_LONGBLOCKDATAOBJECTPARSER_H

include/JavaObject/type/object/parsers/NewClassParser.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
namespace javaobject {
1515
namespace type {
1616
namespace parser {
17-
1817
class NewClassParser {};
19-
2018
} // namespace parser
2119
} // namespace type
2220
} // namespace javaobject
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/** @file NullObjectParser.h
2+
*
3+
* @author Dexrn ZacAttack
4+
* @date 3/25/26
5+
*
6+
* @device zPc-i2
7+
*
8+
* @copyright Copyright (c) 2026 Team Lodestone
9+
* @license This project is licensed under the MIT license, see the LICENSE file for details.
10+
*/
11+
#ifndef JAVAOBJECTSTREAMS_NULLOBJECTPARSER_H
12+
#define JAVAOBJECTSTREAMS_NULLOBJECTPARSER_H
13+
#include "IObjectParser.h"
14+
15+
namespace javaobject::type::object::parsers {
16+
struct NullObjectParser : IObjectParser {
17+
std::shared_ptr<object::IObject> operator()(type::object::ObjectTypeCodeParser& parser) const override;
18+
};
19+
}
20+
21+
#endif //JAVAOBJECTSTREAMS_NULLOBJECTPARSER_H
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/** @file BlockDataObjectParser.h
2+
*
3+
* @author Dexrn ZacAttack
4+
* @date 3/25/26
5+
*
6+
* @device zPc-i2
7+
*
8+
* @copyright Copyright (c) 2026 Team Lodestone
9+
* @license This project is licensed under the MIT license, see the LICENSE file for details.
10+
*/
11+
#ifndef JAVAOBJECTSTREAMS_BLOCKDATAOBJECTPARSER_H
12+
#define JAVAOBJECTSTREAMS_BLOCKDATAOBJECTPARSER_H
13+
#include "IObjectParser.h"
14+
15+
namespace javaobject::type::object::parsers {
16+
struct ShortBlockDataObjectParser : IObjectParser {
17+
std::shared_ptr<object::IObject> operator()(type::object::ObjectTypeCodeParser& parser) const override;
18+
};
19+
}
20+
21+
#endif //JAVAOBJECTSTREAMS_BLOCKDATAOBJECTPARSER_H

include/JavaObject/type/object/parsers/descriptor/ClassDescriptorParser.h

Lines changed: 0 additions & 21 deletions
This file was deleted.

include/JavaObject/type/object/types/AnnotationObject.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
#include "IObject.h"
1414

1515
#include <memory>
16+
#include <vector>
1617

1718
namespace javaobject::type::object {
18-
struct AnnotationObject : public IObject {
19-
AnnotationObject(std::shared_ptr<IObject> type, std::shared_ptr<IObject> value) : type(std::move(type)), value(std::move(value)) {}
19+
struct AnnotationObject : IObject {
20+
explicit AnnotationObject(const std::vector<std::shared_ptr<IObject>>& contents) : contents(contents) {}
2021

21-
std::shared_ptr<IObject> type;
22-
std::shared_ptr<IObject> value; // only present if type != TC_ENDBLOCKDATA
22+
std::vector<std::shared_ptr<IObject>> contents;
2323
};
2424
} // namespace javaobject::type::object
2525

0 commit comments

Comments
 (0)