Skip to content

Commit 324a136

Browse files
committed
WIP
1 parent 8ea5dc4 commit 324a136

12 files changed

Lines changed: 41 additions & 38 deletions

lib/include/pl/patterns/pattern.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <pl/pattern_visitor.hpp>
66
#include <pl/helpers/types.hpp>
77
#include <pl/helpers/utils.hpp>
8+
#include <pl/helpers/construct_shared_object.hpp>
89

910
#include <fmt/core.h>
1011

@@ -14,6 +15,8 @@
1415
#include <concepts>
1516
#include <string>
1617

18+
using namespace shared_object_creator;
19+
1720
namespace pl::ptrn {
1821
using namespace ::std::literals::string_literals;
1922

lib/source/pl/core/ast/ast_node_array_variable_decl.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,13 @@ namespace pl::core::ast {
218218
}
219219

220220
if (std::dynamic_pointer_cast<ptrn::PatternPadding>(templatePattern)) {
221-
outputPattern = construct_shared_object<PatternPadding>(evaluator, startOffset, 0, getLocation().line);
221+
outputPattern = construct_shared_object<pl::ptrn::PatternPadding>(evaluator, startOffset, 0, getLocation().line);
222222
} else if (std::dynamic_pointer_cast<ptrn::PatternCharacter>(templatePattern)) {
223-
outputPattern = construct_shared_object<PatternString>(evaluator, startOffset, 0, getLocation().line);
223+
outputPattern = construct_shared_object<pl::ptrn::PatternString>(evaluator, startOffset, 0, getLocation().line);
224224
} else if (std::dynamic_pointer_cast<ptrn::PatternWideCharacter>(templatePattern)) {
225225
outputPattern = std::make_shared<ptrn::PatternWideString>(evaluator, startOffset, 0, getLocation().line);
226226
} else {
227-
auto arrayPattern = construct_shared_object<PatternArrayStatic>(evaluator, startOffset, 0, getLocation().line);
227+
auto arrayPattern = construct_shared_object<pl::ptrn::PatternArrayStatic>(evaluator, startOffset, 0, getLocation().line);
228228
arrayPattern->setEntries(templatePattern->clone(), size_t(entryCount));
229229
arrayPattern->setSection(templatePattern->getSection());
230230
outputPattern = std::move(arrayPattern);
@@ -256,7 +256,7 @@ namespace pl::core::ast {
256256
};
257257

258258
evaluator->alignToByte();
259-
auto arrayPattern = construct_shared_object<PatternArrayDynamic>(evaluator, evaluator->getReadOffset(), 0, getLocation().line);
259+
auto arrayPattern = construct_shared_object<pl::ptrn::PatternArrayDynamic>(evaluator, evaluator->getReadOffset(), 0, getLocation().line);
260260
arrayPattern->setVariableName(this->m_name);
261261
arrayPattern->setSection(evaluator->getSectionId());
262262

lib/source/pl/core/ast/ast_node_bitfield.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace pl::core::ast {
2626
[[maybe_unused]] auto context = evaluator->updateRuntime(this);
2727

2828
auto position = evaluator->getBitwiseReadOffset();
29-
auto bitfieldPattern = construct_shared_object<PatternBitfield>(evaluator, position.byteOffset, position.bitOffset, 0, getLocation().line);
29+
auto bitfieldPattern = construct_shared_object<pl::ptrn::PatternBitfield>(evaluator, position.byteOffset, position.bitOffset, 0, getLocation().line);
3030

3131
bitfieldPattern->setSection(evaluator->getSectionId());
3232

lib/source/pl/core/ast/ast_node_bitfield_array_variable_decl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ namespace pl::core::ast {
5353
};
5454

5555
auto position = evaluator->getBitwiseReadOffset();
56-
auto arrayPattern = construct_shared_object<PatternBitfieldArray>(evaluator, position.byteOffset, position.bitOffset, 0, getLocation().line);
56+
auto arrayPattern = construct_shared_object<pl::ptrn::PatternBitfieldArray>(evaluator, position.byteOffset, position.bitOffset, 0, getLocation().line);
5757
arrayPattern->setVariableName(this->m_name);
5858
arrayPattern->setSection(evaluator->getSectionId());
5959
arrayPattern->setReversed(evaluator->isReadOrderReversed());

lib/source/pl/core/ast/ast_node_bitfield_field.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace pl::core::ast {
2424

2525
[[nodiscard]] bool ASTNodeBitfieldField::isPadding() const { return this->getName() == "$padding$"; }
2626

27-
[[nodiscard]] std::shared_ptr<construct_shared_object<PatternBitfieldField> ASTNodeBitfieldField>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
28-
return construct_shared_object<PatternBitfieldField>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
27+
[[nodiscard]] std::shared_ptr<construct_shared_object<pl::ptrn::PatternBitfieldField> ASTNodeBitfieldField>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
28+
return construct_shared_object<pl::ptrn::PatternBitfieldField>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
2929
}
3030

3131
void ASTNodeBitfieldField::createPatterns(Evaluator *evaluator, std::vector<std::shared_ptr<ptrn::Pattern>> &resultPatterns) const {
@@ -56,8 +56,8 @@ namespace pl::core::ast {
5656
}
5757

5858

59-
[[nodiscard]] std::shared_ptr<construct_shared_object<PatternBitfieldField> ASTNodeBitfieldFieldSigned>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
60-
return construct_shared_object<PatternBitfieldFieldSigned>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
59+
[[nodiscard]] std::shared_ptr<construct_shared_object<pl::ptrn::PatternBitfieldField> ASTNodeBitfieldFieldSigned>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
60+
return construct_shared_object<pl::ptrn::PatternBitfieldFieldSigned>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
6161
}
6262

6363

@@ -68,7 +68,7 @@ namespace pl::core::ast {
6868
this->m_type = std::unique_ptr<ASTNodeTypeDecl>(static_cast<ASTNodeTypeDecl*>(other.m_type->clone().release()));
6969
}
7070

71-
[[nodiscard]] std::shared_ptr<construct_shared_object<PatternBitfieldField> ASTNodeBitfieldFieldSizedType>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
71+
[[nodiscard]] std::shared_ptr<construct_shared_object<pl::ptrn::PatternBitfieldField> ASTNodeBitfieldFieldSizedType>Bitfield(Evaluator *evaluator, u64 byteOffset, u8 bitOffset, u8 bitSize) const {
7272
auto originalPosition = evaluator->getBitwiseReadOffset();
7373
evaluator->setBitwiseReadOffset(byteOffset, bitOffset);
7474

@@ -79,12 +79,12 @@ namespace pl::core::ast {
7979
evaluator->setBitwiseReadOffset(originalPosition);
8080

8181
if (auto *patternEnum = dynamic_cast<ptrn::PatternEnum *>(pattern.get()); patternEnum != nullptr) {
82-
auto bitfieldEnum = construct_shared_object<PatternBitfieldFieldEnum>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
82+
auto bitfieldEnum = construct_shared_object<pl::ptrn::PatternBitfieldFieldEnum>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
8383
bitfieldEnum->setTypeName(patternEnum->getTypeName());
8484
bitfieldEnum->setEnumValues(patternEnum->getEnumValues());
8585
result = std::move(bitfieldEnum);
8686
} else if (dynamic_cast<ptrn::PatternBoolean *>(pattern.get()) != nullptr) {
87-
result = construct_shared_object<PatternBitfieldFieldBoolean>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
87+
result = construct_shared_object<pl::ptrn::PatternBitfieldFieldBoolean>(evaluator, byteOffset, bitOffset, bitSize, getLocation().line);
8888
} else {
8989
err::E0004.throwError("Bit size specifiers may only be used with unsigned, signed, bool or enum types.", {}, this->getLocation());
9090
}

lib/source/pl/core/ast/ast_node_builtin_type.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ namespace pl::core::ast {
2727
if (Token::isUnsigned(this->m_type))
2828
pattern = std::make_shared<ptrn::PatternUnsigned>(evaluator, offset, size, getLocation().line);
2929
else if (Token::isSigned(this->m_type))
30-
pattern = construct_shared_object<PatternSigned>(evaluator, offset, size, getLocation().line);
30+
pattern = construct_shared_object<pl::ptrn::PatternSigned>(evaluator, offset, size, getLocation().line);
3131
else if (Token::isFloatingPoint(this->m_type))
32-
pattern = construct_shared_object<PatternFloat>(evaluator, offset, size, getLocation().line);
32+
pattern = construct_shared_object<pl::ptrn::PatternFloat>(evaluator, offset, size, getLocation().line);
3333
else if (this->m_type == Token::ValueType::Boolean)
34-
pattern = construct_shared_object<PatternBoolean>(evaluator, offset, getLocation().line);
34+
pattern = construct_shared_object<pl::ptrn::PatternBoolean>(evaluator, offset, getLocation().line);
3535
else if (this->m_type == Token::ValueType::Character)
36-
pattern = construct_shared_object<PatternCharacter>(evaluator, offset, getLocation().line);
36+
pattern = construct_shared_object<pl::ptrn::PatternCharacter>(evaluator, offset, getLocation().line);
3737
else if (this->m_type == Token::ValueType::Character16)
3838
pattern = std::make_shared<ptrn::PatternWideCharacter>(evaluator, offset, getLocation().line);
3939
else if (this->m_type == Token::ValueType::Padding)
40-
pattern = construct_shared_object<PatternPadding>(evaluator, offset, 1, getLocation().line);
40+
pattern = construct_shared_object<pl::ptrn::PatternPadding>(evaluator, offset, 1, getLocation().line);
4141
else if (this->m_type == Token::ValueType::String)
42-
pattern = construct_shared_object<PatternString>(evaluator, offset, 0, getLocation().line);
42+
pattern = construct_shared_object<pl::ptrn::PatternString>(evaluator, offset, 0, getLocation().line);
4343
else if (this->m_type == Token::ValueType::CustomType) {
4444
std::vector<Token::Literal> params;
4545

lib/source/pl/core/ast/ast_node_enum.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ namespace pl::core::ast {
7373
err::E0005.throwError("'auto' can only be used with parameters.", { }, this->getLocation());
7474
auto &underlying = underlyingTypePatterns.front();
7575

76-
auto pattern = construct_shared_object<PatternEnum>(evaluator, underlying->getOffset(), 0, getLocation().line);
76+
auto pattern = construct_shared_object<pl::ptrn::PatternEnum>(evaluator, underlying->getOffset(), 0, getLocation().line);
7777

7878
pattern->setSection(evaluator->getSectionId());
7979

lib/source/pl/core/ast/ast_node_imported_type.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace pl::core::ast {
3333

3434
result = std::move(pattern);
3535
} else {
36-
auto structPattern = construct_shared_object<PatternStruct>(evaluator, 0x00, 0, getLocation().line);
36+
auto structPattern = construct_shared_object<pl::ptrn::PatternStruct>(evaluator, 0x00, 0, getLocation().line);
3737

3838
u64 minPos = std::numeric_limits<u64>::max();
3939
u64 maxPos = std::numeric_limits<u64>::min();

lib/source/pl/core/ast/ast_node_pointer_variable_decl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ namespace pl::core::ast {
6767
auto &sizePattern = sizePatterns.front();
6868
sizePattern->setSection(evaluator->getSectionId());
6969

70-
auto pattern = construct_shared_object<PatternPointer>(evaluator, pointerStartOffset, sizePattern->getSize(), getLocation().line);
70+
auto pattern = construct_shared_object<pl::ptrn::PatternPointer>(evaluator, pointerStartOffset, sizePattern->getSize(), getLocation().line);
7171
pattern->setVariableName(this->m_name);
7272
pattern->setPointerTypePattern(std::move(sizePattern));
7373

lib/source/pl/core/ast/ast_node_rvalue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace pl::core::ast {
5656
if (auto name = std::get_if<std::string>(&this->getPath().front()); name != nullptr) {
5757
if (*name == "$") return std::make_unique<ASTNodeLiteral>(u128(evaluator->getReadOffset()));
5858
else if (*name == "null") return std::make_unique<ASTNodeLiteral>(
59-
construct_shared_object<PatternPadding>(evaluator, 0, 0, getLocation().line)); // Why?
59+
construct_shared_object<pl::ptrn::PatternPadding>(evaluator, 0, 0, getLocation().line)); // Why?
6060

6161
auto parameterPack = evaluator->getScope(0).parameterPack;
6262
if (parameterPack && *name == parameterPack->name)

0 commit comments

Comments
 (0)