Skip to content

Commit 2aaa1c5

Browse files
Merge pull request #1 from Team-Lodestone/pr/rewrite
Rewrite
2 parents 6e3c528 + 09234de commit 2aaa1c5

141 files changed

Lines changed: 6373 additions & 461 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ BreakFunctionDefinitionParameters: false
116116
BreakInheritanceList: BeforeColon
117117
BreakStringLiterals: true
118118
BreakTemplateDeclarations: MultiLine
119-
ColumnLimit: 80
119+
ColumnLimit: 150
120120
CommentPragmas: "^ IWYU pragma:"
121121
CompactNamespaces: false
122122
ConstructorInitializerIndentWidth: 4

.github/workflows/doxygen.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Deploy Doxygen page
2+
on:
3+
push:
4+
branches:
5+
- pr/rewrite
6+
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
with:
19+
submodules: 'recursive'
20+
21+
- name: Install Dependencies
22+
run: |
23+
sudo apt update
24+
sudo apt install -y doxygen graphviz
25+
26+
- name: Set reusable strings
27+
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
28+
id: strings
29+
shell: bash
30+
run: |
31+
echo "build-output-dir=${{ github.workspace }}/doc" >> "$GITHUB_OUTPUT"
32+
33+
- name: Configure CMake
34+
# Configure CMake in a 'build' subdirectory. CMAKE_BUILD_TYPE is only required if you are using a single-configuration generator such as make.
35+
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
36+
run: >
37+
cmake -B ${{ steps.strings.outputs.build-output-dir }}
38+
-S ${{ github.workspace }}
39+
-DCMAKE_CXX_COMPILER=g++
40+
-DCMAKE_C_COMPILER=gcc
41+
-DCMAKE_BUILD_TYPE=Debug
42+
43+
- name: Generate docs
44+
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
45+
run: >
46+
cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Debug --target JavaOutputStreams.Documentation
47+
48+
- name: Upload artifact
49+
uses: actions/upload-pages-artifact@v3
50+
with:
51+
path: ${{ steps.strings.outputs.build-output-dir }}/docs/html
52+
53+
deploy:
54+
environment:
55+
name: github-pages
56+
url: ${{ steps.deployment.outputs.page_url }}
57+
needs: build
58+
runs-on: ubuntu-latest
59+
name: Deploy
60+
steps:
61+
- name: Deploy to GitHub Pages
62+
id: deployment
63+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,5 @@
3939

4040
# debug information files
4141
*.dwo
42+
/.idea
43+
/tests/java/.idea

.idea/.name

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CMakeLists.txt

Lines changed: 127 additions & 6 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.0.3)
2+
project(JavaObjectStreams VERSION 1.3.3)
33

44
set(CMAKE_CXX_STANDARD 20)
55

@@ -15,16 +15,129 @@ if (NOT TARGET bio)
1515
endif ()
1616

1717
set(FILES
18-
include/JavaObject/JavaSerializedClassParser.h
19-
src/JavaSerializedClassParser.cpp
20-
include/JavaObject/EJavaTypeCode.h
21-
include/JavaObject/EJavaFieldDescriptorType.h
18+
include/JavaObject/EObjectTypeCode.h
19+
include/JavaObject/EPrimitiveTypeCode.h
2220
src/stream/ObjectOutputStream.cpp
2321
include/JavaObject/stream/ObjectOutputStream.h
2422
src/stream/ObjectInputStream.cpp
2523
include/JavaObject/stream/ObjectInputStream.h
2624
src/io/Serializable.cpp
2725
include/JavaObject/io/Serializable.h
26+
src/type/object/parsers/ObjectParser.cpp
27+
include/JavaObject/type/object/parsers/ObjectParser.h
28+
src/type/object/types/IObject.cpp
29+
include/JavaObject/type/object/parsers/IObjectParser.h
30+
src/type/object/parsers/IObjectParser.cpp
31+
include/JavaObject/type/object/types/IObject.h
32+
include/JavaObject/type/object/types/NullObject.h
33+
src/type/object/parsers/StringParser.cpp
34+
include/JavaObject/type/object/parsers/StringParser.h
35+
src/type/object/types/StringObject.cpp
36+
include/JavaObject/type/object/types/StringObject.h
37+
src/type/object/types/Object.cpp
38+
include/JavaObject/type/object/types/Object.h
39+
src/type/object/parsers/descriptor/NewClassDescriptorParser.cpp
40+
include/JavaObject/type/object/parsers/descriptor/NewClassDescriptorParser.h
41+
src/type/object/parsers/descriptor/ClassDescriptorInfoParser.cpp
42+
include/JavaObject/type/object/parsers/descriptor/ClassDescriptorInfoParser.h
43+
src/type/object/parsers/descriptor/FieldDescriptorParser.cpp
44+
include/JavaObject/type/object/parsers/descriptor/FieldDescriptorParser.h
45+
src/type/object/types/descriptor/PrimitiveDescriptorObject.cpp
46+
include/JavaObject/type/object/types/descriptor/PrimitiveDescriptorObject.h
47+
src/type/object/parsers/descriptor/PrimitiveDescriptorParser.cpp
48+
include/JavaObject/type/object/parsers/descriptor/PrimitiveDescriptorParser.h
49+
src/util/SmartPointerCast.cpp
50+
include/JavaObject/util/SmartPointerCast.h
51+
src/type/object/types/ClassDataObject.cpp
52+
include/JavaObject/type/object/types/ClassDataObject.h
53+
src/type/object/types/AnnotationObject.cpp
54+
include/JavaObject/type/object/types/AnnotationObject.h
55+
src/type/object/parsers/ClassDataParser.cpp
56+
include/JavaObject/type/object/parsers/ClassDataParser.h
57+
src/type/object/types/ReferenceObject.cpp
58+
include/JavaObject/type/object/types/ReferenceObject.h
59+
src/type/object/parsers/ReferenceParser.cpp
60+
include/JavaObject/type/object/parsers/ReferenceParser.h
61+
src/type/object/types/descriptor/ClassDescriptorInfoObject.cpp
62+
include/JavaObject/type/object/types/descriptor/ClassDescriptorInfoObject.h
63+
src/type/object/parsers/NewClassParser.cpp
64+
include/JavaObject/type/object/parsers/NewClassParser.h
65+
src/type/primitive/PrimitiveTypeCodeParser.cpp
66+
include/JavaObject/type/primitive/PrimitiveTypeCodeParser.h
67+
src/type/primitive/types/IPrimitiveObject.cpp
68+
include/JavaObject/type/primitive/types/IPrimitiveObject.h
69+
src/type/HandleContainer.cpp
70+
include/JavaObject/type/HandleContainer.h
71+
src/type/ITypeCodeParser.cpp
72+
include/JavaObject/type/ITypeCodeParser.h
73+
src/type/primitive/parsers/IPrimitiveObjectParser.cpp
74+
include/JavaObject/type/primitive/parsers/IPrimitiveObjectParser.h
75+
src/type/primitive/types/PrimitiveByteObject.cpp
76+
include/JavaObject/type/primitive/types/PrimitiveByteObject.h
77+
src/type/primitive/types/PrimitiveCharObject.cpp
78+
include/JavaObject/type/primitive/types/PrimitiveCharObject.h
79+
src/type/primitive/types/PrimitiveDoubleObject.cpp
80+
include/JavaObject/type/primitive/types/PrimitiveDoubleObject.h
81+
src/type/primitive/types/PrimitiveFloatObject.cpp
82+
include/JavaObject/type/primitive/types/PrimitiveFloatObject.h
83+
src/type/primitive/types/PrimitiveIntegerObject.cpp
84+
include/JavaObject/type/primitive/types/PrimitiveIntegerObject.h
85+
src/type/primitive/types/PrimitiveLongObject.cpp
86+
include/JavaObject/type/primitive/types/PrimitiveLongObject.h
87+
src/type/primitive/types/PrimitiveShortObject.cpp
88+
include/JavaObject/type/primitive/types/PrimitiveShortObject.h
89+
src/type/primitive/types/PrimitiveBooleanObject.cpp
90+
include/JavaObject/type/primitive/types/PrimitiveBooleanObject.h
91+
src/type/primitive/types/PrimitiveJavaObject.cpp
92+
include/JavaObject/type/primitive/types/PrimitiveJavaObject.h
93+
src/type/primitive/types/PrimitiveArrayObject.cpp
94+
include/JavaObject/type/primitive/types/PrimitiveArrayObject.h
95+
src/type/primitive/parsers/PrimitiveByteObjectParser.cpp
96+
include/JavaObject/type/primitive/parsers/PrimitiveByteObjectParser.h
97+
src/type/primitive/parsers/PrimitiveCharObjectParser.cpp
98+
include/JavaObject/type/primitive/parsers/PrimitiveCharObjectParser.h
99+
src/type/primitive/parsers/PrimitiveDoubleObjectParser.cpp
100+
include/JavaObject/type/primitive/parsers/PrimitiveDoubleObjectParser.h
101+
src/type/primitive/parsers/PrimitiveFloatObjectParser.cpp
102+
include/JavaObject/type/primitive/parsers/PrimitiveFloatObjectParser.h
103+
src/type/primitive/parsers/PrimitiveIntegerObjectParser.cpp
104+
include/JavaObject/type/primitive/parsers/PrimitiveIntegerObjectParser.h
105+
src/type/primitive/parsers/PrimitiveShortObjectParser.cpp
106+
include/JavaObject/type/primitive/parsers/PrimitiveShortObjectParser.h
107+
src/type/primitive/parsers/PrimitiveLongObjectParser.cpp
108+
include/JavaObject/type/primitive/parsers/PrimitiveLongObjectParser.h
109+
src/type/primitive/parsers/PrimitiveBooleanObjectParser.cpp
110+
include/JavaObject/type/primitive/parsers/PrimitiveBooleanObjectParser.h
111+
include/JavaObject/type/object/ObjectTypeCodeParser.h
112+
src/type/object/ObjectTypeCodeParser.cpp
113+
src/type/TypeCodeParserStorage.cpp
114+
include/JavaObject/type/TypeCodeParserStorage.h
115+
src/type/ITypeCodeStorageHolder.cpp
116+
include/JavaObject/type/ITypeCodeStorageHolder.h
117+
src/type/primitive/parsers/PrimitiveJavaObjectParser.cpp
118+
include/JavaObject/type/primitive/parsers/PrimitiveJavaObjectParser.h
119+
src/type/primitive/parsers/PrimitiveArrayObjectParser.cpp
120+
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
136+
src/type/object/types/ArrayObject.cpp
137+
include/JavaObject/type/object/types/ArrayObject.h
138+
include/JavaObject/type/object/types/descriptor/NewClassDescriptorObject.h
139+
src/type/object/parsers/ArrayObjectParser.cpp
140+
include/JavaObject/type/object/parsers/ArrayObjectParser.h
28141
)
29142

30143
add_library(JavaObjectStreams SHARED ${FILES})
@@ -40,4 +153,12 @@ if (JAVAOBJECTSTREAMS_BUILD_TESTS)
40153
add_subdirectory(tests)
41154
endif()
42155

43-
unset(JAVAOBJECTSTREAMS_BUILD_TESTS CACHE)
156+
unset(JAVAOBJECTSTREAMS_BUILD_TESTS CACHE)
157+
158+
option(JAVAOBJECTSTREAMS_DOCS_TARGET "Create documentation target" ON)
159+
160+
if (JAVAOBJECTSTREAMS_DOCS_TARGET STREQUAL "ON")
161+
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygen.cmake")
162+
endif ()
163+
164+
unset(JAVAOBJECTSTREAMS_DOCS_TARGET CACHE)

README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,25 @@
1+
<div align="right">
2+
3+
[![GitHub tag](https://img.shields.io/github/tag/Team-Lodestone/JavaObjectStreams?include_prereleases=&sort=semver&color=blue)](https://github.com/Team-Lodestone/JavaObjectStreams/releases/)
4+
[![License](https://img.shields.io/badge/License-MIT-blue)](#license)
5+
6+
</div>
7+
18
# JavaObjectStreams
2-
Serialization and Deserialization which matches Java's Object streams
39

4-
This allows for deserializing ObjectOutputStream-serialized files
10+
A C++ library to provide serialization and deserialization of Java objects (ala ObjectInputStream and ObjectOutputStream).
11+
12+
[![view - Documentation](https://img.shields.io/badge/view-Documentation-blue?style=for-the-badge)](https://team-lodestone.github.io/JavaObjectStreams/ "Go to project documentation")
13+
14+
### JavaObjectStreams is not...
15+
- a Java class file parser.
16+
- a Java disassembler.
17+
18+
---
19+
20+
- ✅ Deserialization
21+
- ❌ Serialization (TODO)
22+
23+
## Contributing
24+
Unless otherwise stated, contributions are licensed under the terms of the
25+
MIT license.

cmake/doxygen.cmake

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
include(FetchContent)
2+
# https://github.com/jothepro/doxygen-awesome-css?tab=readme-ov-file#cmake-with-fetchcontent
3+
FetchContent_Declare(
4+
doxygen-awesome-css
5+
URL https://github.com/jothepro/doxygen-awesome-css/archive/refs/heads/main.zip
6+
)
7+
FetchContent_MakeAvailable(doxygen-awesome-css)
8+
9+
FetchContent_GetProperties(doxygen-awesome-css SOURCE_DIR AWESOME_CSS_DIR)
10+
11+
FIND_PACKAGE(Doxygen)
12+
IF (DOXYGEN_FOUND)
13+
set(DOXYFILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in")
14+
set(DOXYFILE_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
15+
16+
CONFIGURE_FILE(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
17+
18+
ADD_CUSTOM_TARGET(JavaOutputStreams.Documentation
19+
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
20+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
21+
VERBATIM
22+
)
23+
ENDIF ()

0 commit comments

Comments
 (0)