diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 7a741cef1..cbea338a0 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 7a741cef116e5bf4fe9a895a724894c2dc071348 +Subproject commit cbea338a0558d004d9bde4b357b47921ec6f7216 diff --git a/plugins/builtin/source/content/pl_builtin_types.cpp b/plugins/builtin/source/content/pl_builtin_types.cpp index fd2166fe4..140137660 100644 --- a/plugins/builtin/source/content/pl_builtin_types.cpp +++ b/plugins/builtin/source/content/pl_builtin_types.cpp @@ -197,8 +197,8 @@ namespace hex::plugin::builtin { } - std::unique_ptr jsonToPattern(pl::core::Evaluator *evaluator, auto function) { - auto object = std::make_unique(evaluator, 0, 0, 0); + std::shared_ptr jsonToPattern(pl::core::Evaluator *evaluator, auto function) { + auto object = std::make_shared(evaluator, 0, 0, 0); std::vector> patterns; try { @@ -221,7 +221,7 @@ namespace hex::plugin::builtin { const pl::api::Namespace nsHexDec = { "builtin", "hex", "dec" }; /* Json */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Json", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Json", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::parse(data); }); @@ -230,7 +230,7 @@ namespace hex::plugin::builtin { }); /* Bson */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Bson", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Bson", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::from_bson(data); }); @@ -239,7 +239,7 @@ namespace hex::plugin::builtin { }); /* Cbor */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Cbor", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Cbor", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::from_cbor(data); }); @@ -248,7 +248,7 @@ namespace hex::plugin::builtin { }); /* Bjdata */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Bjdata", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Bjdata", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::from_bjdata(data); }); @@ -257,7 +257,7 @@ namespace hex::plugin::builtin { }); /* Msgpack */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Msgpack", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Msgpack", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::from_msgpack(data); }); @@ -266,7 +266,7 @@ namespace hex::plugin::builtin { }); /* Ubjson */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "Ubjson", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "Ubjson", FunctionParameterCount::exactly(1), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto data = params[0].toBytes(); auto result = jsonToPattern(evaluator, [&] { return nlohmann::json::from_ubjson(data); }); @@ -276,14 +276,14 @@ namespace hex::plugin::builtin { /* EncodedString */ - ContentRegistry::PatternLanguage::addType(nsHexDec, "EncodedString", FunctionParameterCount::exactly(2), [](Evaluator *evaluator, auto params) -> std::unique_ptr { + ContentRegistry::PatternLanguage::addType(nsHexDec, "EncodedString", FunctionParameterCount::exactly(2), [](Evaluator *evaluator, auto params) -> std::shared_ptr { auto bytes = params[0].toBytes(); auto encodingDefinition = params[1].toString(); std::string value; EncodingFile encodingFile(EncodingFile::Type::Thingy, encodingDefinition); - auto pattern = std::make_unique(evaluator, evaluator->getReadOffset(), bytes.size(), 0); + auto pattern = std::make_shared(evaluator, evaluator->getReadOffset(), bytes.size(), 0); pattern->setEncodedString(encodingFile, bytes); return pattern;