Skip to content

Commit 372f339

Browse files
feat: add enums for typecode and descriptor type, setup basic structure for streams and serializable
1 parent bc9069c commit 372f339

15 files changed

Lines changed: 632 additions & 43 deletions

.clang-format

Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
---
2+
BasedOnStyle: LLVM
3+
AccessModifierOffset: -2
4+
AlignAfterOpenBracket: Align
5+
AlignArrayOfStructures: None
6+
AlignConsecutiveAssignments:
7+
Enabled: false
8+
AcrossEmptyLines: false
9+
AcrossComments: false
10+
AlignCompound: false
11+
AlignFunctionPointers: false
12+
PadOperators: true
13+
AlignConsecutiveBitFields:
14+
Enabled: false
15+
AcrossEmptyLines: false
16+
AcrossComments: false
17+
AlignCompound: false
18+
AlignFunctionPointers: false
19+
PadOperators: false
20+
AlignConsecutiveDeclarations:
21+
Enabled: false
22+
AcrossEmptyLines: false
23+
AcrossComments: false
24+
AlignCompound: false
25+
AlignFunctionPointers: false
26+
PadOperators: false
27+
AlignConsecutiveMacros:
28+
Enabled: false
29+
AcrossEmptyLines: false
30+
AcrossComments: false
31+
AlignCompound: false
32+
AlignFunctionPointers: false
33+
PadOperators: false
34+
AlignConsecutiveShortCaseStatements:
35+
Enabled: false
36+
AcrossEmptyLines: false
37+
AcrossComments: false
38+
AlignCaseArrows: false
39+
AlignCaseColons: false
40+
AlignConsecutiveTableGenBreakingDAGArgColons:
41+
Enabled: false
42+
AcrossEmptyLines: false
43+
AcrossComments: false
44+
AlignCompound: false
45+
AlignFunctionPointers: false
46+
PadOperators: false
47+
AlignConsecutiveTableGenCondOperatorColons:
48+
Enabled: false
49+
AcrossEmptyLines: false
50+
AcrossComments: false
51+
AlignCompound: false
52+
AlignFunctionPointers: false
53+
PadOperators: false
54+
AlignConsecutiveTableGenDefinitionColons:
55+
Enabled: false
56+
AcrossEmptyLines: false
57+
AcrossComments: false
58+
AlignCompound: false
59+
AlignFunctionPointers: false
60+
PadOperators: false
61+
AlignEscapedNewlines: Right
62+
AlignOperands: Align
63+
AlignTrailingComments:
64+
Kind: Always
65+
OverEmptyLines: 0
66+
AllowAllArgumentsOnNextLine: true
67+
AllowAllParametersOfDeclarationOnNextLine: true
68+
AllowBreakBeforeNoexceptSpecifier: Never
69+
AllowShortBlocksOnASingleLine: Never
70+
AllowShortCaseExpressionOnASingleLine: true
71+
AllowShortCaseLabelsOnASingleLine: false
72+
AllowShortCompoundRequirementOnASingleLine: true
73+
AllowShortEnumsOnASingleLine: true
74+
AllowShortFunctionsOnASingleLine: All
75+
AllowShortIfStatementsOnASingleLine: Never
76+
AllowShortLambdasOnASingleLine: All
77+
AllowShortLoopsOnASingleLine: false
78+
AlwaysBreakAfterDefinitionReturnType: None
79+
AlwaysBreakBeforeMultilineStrings: false
80+
AttributeMacros:
81+
- __capability
82+
BinPackArguments: true
83+
BinPackParameters: true
84+
BitFieldColonSpacing: Both
85+
BraceWrapping:
86+
AfterCaseLabel: false
87+
AfterClass: false
88+
AfterControlStatement: Never
89+
AfterEnum: false
90+
AfterFunction: false
91+
AfterNamespace: false
92+
AfterObjCDeclaration: false
93+
AfterStruct: false
94+
AfterUnion: false
95+
AfterExternBlock: false
96+
BeforeCatch: false
97+
BeforeElse: false
98+
BeforeLambdaBody: false
99+
BeforeWhile: false
100+
IndentBraces: false
101+
SplitEmptyFunction: true
102+
SplitEmptyRecord: true
103+
SplitEmptyNamespace: true
104+
BreakAdjacentStringLiterals: true
105+
BreakAfterAttributes: Leave
106+
BreakAfterJavaFieldAnnotations: false
107+
BreakAfterReturnType: None
108+
BreakArrays: true
109+
BreakBeforeBinaryOperators: None
110+
BreakBeforeBraces: Attach
111+
BreakBeforeConceptDeclarations: Always
112+
BreakBeforeInlineASMColon: OnlyMultiline
113+
BreakBeforeTernaryOperators: true
114+
BreakConstructorInitializers: BeforeColon
115+
BreakFunctionDefinitionParameters: false
116+
BreakInheritanceList: BeforeColon
117+
BreakStringLiterals: true
118+
BreakTemplateDeclarations: MultiLine
119+
ColumnLimit: 80
120+
CommentPragmas: "^ IWYU pragma:"
121+
CompactNamespaces: false
122+
ConstructorInitializerIndentWidth: 4
123+
ContinuationIndentWidth: 4
124+
Cpp11BracedListStyle: true
125+
DerivePointerAlignment: false
126+
DisableFormat: false
127+
EmptyLineAfterAccessModifier: Never
128+
EmptyLineBeforeAccessModifier: LogicalBlock
129+
ExperimentalAutoDetectBinPacking: false
130+
FixNamespaceComments: true
131+
ForEachMacros:
132+
- foreach
133+
- Q_FOREACH
134+
- BOOST_FOREACH
135+
IfMacros:
136+
- KJ_IF_MAYBE
137+
IncludeBlocks: Preserve
138+
IncludeCategories:
139+
- Regex: ^"(llvm|llvm-c|clang|clang-c)/
140+
Priority: 2
141+
SortPriority: 0
142+
CaseSensitive: false
143+
- Regex: ^(<|"(gtest|gmock|isl|json)/)
144+
Priority: 3
145+
SortPriority: 0
146+
CaseSensitive: false
147+
- Regex: .*
148+
Priority: 1
149+
SortPriority: 0
150+
CaseSensitive: false
151+
IncludeIsMainRegex: (Test)?$
152+
IncludeIsMainSourceRegex: ""
153+
IndentAccessModifiers: false
154+
IndentCaseBlocks: false
155+
IndentCaseLabels: false
156+
IndentExternBlock: AfterExternBlock
157+
IndentGotoLabels: true
158+
IndentPPDirectives: None
159+
IndentRequiresClause: true
160+
IndentWidth: 4
161+
IndentWrappedFunctionNames: false
162+
InsertBraces: false
163+
InsertNewlineAtEOF: false
164+
InsertTrailingCommas: None
165+
IntegerLiteralSeparator:
166+
Binary: 0
167+
BinaryMinDigits: 0
168+
Decimal: 0
169+
DecimalMinDigits: 0
170+
Hex: 0
171+
HexMinDigits: 0
172+
JavaScriptQuotes: Leave
173+
JavaScriptWrapImports: true
174+
KeepEmptyLines:
175+
AtEndOfFile: false
176+
AtStartOfBlock: true
177+
AtStartOfFile: true
178+
LambdaBodyIndentation: Signature
179+
LineEnding: DeriveLF
180+
MacroBlockBegin: ""
181+
MacroBlockEnd: ""
182+
MainIncludeChar: Quote
183+
MaxEmptyLinesToKeep: 1
184+
NamespaceIndentation: All
185+
ObjCBinPackProtocolList: Auto
186+
ObjCBlockIndentWidth: 2
187+
ObjCBreakBeforeNestedBlockParam: true
188+
ObjCSpaceAfterProperty: false
189+
ObjCSpaceBeforeProtocolList: true
190+
PPIndentWidth: -1
191+
PackConstructorInitializers: BinPack
192+
PenaltyBreakAssignment: 2
193+
PenaltyBreakBeforeFirstCallParameter: 19
194+
PenaltyBreakComment: 300
195+
PenaltyBreakFirstLessLess: 120
196+
PenaltyBreakOpenParenthesis: 0
197+
PenaltyBreakScopeResolution: 500
198+
PenaltyBreakString: 1000
199+
PenaltyBreakTemplateDeclaration: 10
200+
PenaltyExcessCharacter: 1000000
201+
PenaltyIndentedWhitespace: 0
202+
PenaltyReturnTypeOnItsOwnLine: 60
203+
PointerAlignment: Right
204+
QualifierAlignment: Leave
205+
ReferenceAlignment: Pointer
206+
ReflowComments: true
207+
RemoveBracesLLVM: false
208+
RemoveParentheses: Leave
209+
RemoveSemicolon: false
210+
RequiresClausePosition: OwnLine
211+
RequiresExpressionIndentation: OuterScope
212+
SeparateDefinitionBlocks: Leave
213+
ShortNamespaceLines: 1
214+
SkipMacroDefinitionBody: false
215+
SortIncludes: CaseSensitive
216+
SortJavaStaticImport: Before
217+
SortUsingDeclarations: LexicographicNumeric
218+
SpaceAfterCStyleCast: false
219+
SpaceAfterLogicalNot: false
220+
SpaceAfterTemplateKeyword: true
221+
SpaceAroundPointerQualifiers: Default
222+
SpaceBeforeAssignmentOperators: true
223+
SpaceBeforeCaseColon: false
224+
SpaceBeforeCpp11BracedList: false
225+
SpaceBeforeCtorInitializerColon: true
226+
SpaceBeforeInheritanceColon: true
227+
SpaceBeforeJsonColon: false
228+
SpaceBeforeParens: ControlStatements
229+
SpaceBeforeParensOptions:
230+
AfterControlStatements: true
231+
AfterForeachMacros: true
232+
AfterFunctionDeclarationName: false
233+
AfterFunctionDefinitionName: false
234+
AfterIfMacros: true
235+
AfterOverloadedOperator: false
236+
AfterPlacementOperator: true
237+
AfterRequiresInClause: false
238+
AfterRequiresInExpression: false
239+
BeforeNonEmptyParentheses: false
240+
SpaceBeforeRangeBasedForLoopColon: true
241+
SpaceBeforeSquareBrackets: false
242+
SpaceInEmptyBlock: false
243+
SpacesBeforeTrailingComments: 1
244+
SpacesInAngles: Never
245+
SpacesInContainerLiterals: true
246+
SpacesInLineCommentPrefix:
247+
Minimum: 1
248+
Maximum: -1
249+
SpacesInParens: Never
250+
SpacesInParensOptions:
251+
ExceptDoubleParentheses: false
252+
InConditionalStatements: false
253+
InCStyleCasts: false
254+
InEmptyParentheses: false
255+
Other: false
256+
SpacesInSquareBrackets: false
257+
Standard: Latest
258+
StatementAttributeLikeMacros:
259+
- Q_EMIT
260+
StatementMacros:
261+
- Q_UNUSED
262+
- QT_REQUIRE_VERSION
263+
TabWidth: 8
264+
TableGenBreakInsideDAGArg: DontBreak
265+
UseTab: Never
266+
VerilogBreakBetweenInstancePorts: true
267+
WhitespaceSensitiveMacros:
268+
- BOOST_PP_STRINGIZE
269+
- CF_SWIFT_NAME
270+
- NS_SWIFT_NAME
271+
- PP_STRINGIZE
272+
- STRINGIZE

.clang-tidy

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
Checks: >
3+
-*,
4+
readability-identifier-naming
5+
CheckOptions:
6+
# types
7+
readability-identifier-naming.ClassCase: CamelCase
8+
readability-identifier-naming.EnumCase: CamelCase
9+
readability-identifier-naming.UnionCase: CamelCase
10+
# namespace
11+
readability-identifier-naming.NamespaceCase: lower_case
12+
# enums
13+
readability-identifier-naming.EnumConstantCase: UPPER_CASE
14+
readability-identifier-naming.ScopedEnumConstantCase: CamelCase
15+
# functions
16+
readability-identifier-naming.FunctionCase: camelBack
17+
# struct fields
18+
readability-identifier-naming.ClassConstantCase: UPPER_CASE
19+
readability-identifier-naming.ProtectedMemberCase: camelBack
20+
readability-identifier-naming.ProtectedMemberPrefix: m_
21+
readability-identifier-naming.PrivateMemberCase: camelBack
22+
readability-identifier-naming.PrivateMemberPrefix: m_
23+
# statics
24+
readability-identifier-naming.StaticVariableCase: camelBack
25+
readability-identifier-naming.StaticVariablePrefix: s_
26+
readability-identifier-naming.ClassMemberCase: camelBack
27+
readability-identifier-naming.ClassMemberPrefix: s_
28+
# constants
29+
readability-identifier-naming.GlobalConstantCase: UPPER_CASE
30+
# globals
31+
readability-identifier-naming.GlobalVariableCase: camelBack
32+
readability-identifier-naming.GlobalVariablePrefix: g_
33+
# locals
34+
readability-identifier-naming.LocalVariableCase: camelBack
35+
# params
36+
readability-identifier-naming.ParameterCase: camelBack
37+
# template params
38+
readability-identifier-naming.TemplateParameterCase: CamelCase

CMakeLists.txt

Lines changed: 18 additions & 2 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.0)
2+
project(JavaObjectStreams VERSION 1.0.1) #dev version atm but too lazy to set that up, just dont create git tag until it properly deserializes again.
33

44
set(CMAKE_CXX_STANDARD 20)
55

@@ -17,11 +17,27 @@ endif ()
1717
set(FILES
1818
include/JavaObject/JavaSerializedClassParser.h
1919
src/JavaSerializedClassParser.cpp
20+
include/JavaObject/EJavaTypeCode.h
21+
include/JavaObject/EJavaFieldDescriptorType.h
22+
src/stream/ObjectOutputStream.cpp
23+
include/JavaObject/stream/ObjectOutputStream.h
24+
src/stream/ObjectInputStream.cpp
25+
include/JavaObject/stream/ObjectInputStream.h
26+
src/io/Serializable.cpp
27+
include/JavaObject/io/Serializable.h
2028
)
2129

2230
add_library(JavaObjectStreams SHARED ${FILES})
2331
target_include_directories(JavaObjectStreams
2432
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2533
)
2634

27-
target_link_libraries(JavaObjectStreams PUBLIC bio-cpp20)
35+
target_link_libraries(JavaObjectStreams PUBLIC bio-cpp20)
36+
37+
option(JAVAOBJECTSTREAMS_BUILD_TESTS "Build JavaObjectStreams Tests" ON)
38+
39+
if (JAVAOBJECTSTREAMS_BUILD_TESTS)
40+
add_subdirectory(tests)
41+
endif()
42+
43+
unset(JAVAOBJECTSTREAMS_BUILD_TESTS CACHE)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/** @file EJavaFieldDescriptorType.h
2+
*
3+
* @author DexrnZacAttack
4+
* @date 3/23/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_EJAVAFIELDDESCRIPTORTYPE_H
12+
#define JAVAOBJECTSTREAMS_EJAVAFIELDDESCRIPTORTYPE_H
13+
14+
enum EJavaFieldDescriptorType : signed char {
15+
TYPE_BYTE = 'B',
16+
TYPE_CHARACTER = 'C',
17+
TYPE_DOUBLE = 'D',
18+
TYPE_FLOAT = 'F',
19+
TYPE_INT = 'I',
20+
TYPE_LONG = 'J',
21+
TYPE_OBJECT = 'L',
22+
TYPE_SHORT = 'S',
23+
TYPE_BOOLEAN = 'Z',
24+
TYPE_ARRAY = '['
25+
};
26+
27+
#endif // JAVAOBJECTSTREAMS_EJAVAFIELDDESCRIPTORTYPE_H

0 commit comments

Comments
 (0)