#include #include "_mgp.hpp" #include "algorithm/map.hpp" extern "C" int mgp_init_module(struct mgp_module *module, struct mgp_memory *memory) { try { mgp::MemoryDispatcherGuard guard{memory}; mgp::AddFunction(Map::Flatten, std::string(Map::kProcedureFlatten).c_str(), {mgp::Parameter(std::string(Map::kArgumentMapFlatten).c_str(), {mgp::Type::Map, mgp::Type::Any}), mgp::Parameter(std::string(Map::kArgumentDelimiterFlatten).c_str(), {mgp::Type::String}, ".")}, module, memory); mgp::AddFunction( Map::FromLists, std::string(Map::kProcedureFromLists).c_str(), {mgp::Parameter(std::string(Map::kArgumentListKeysFromLists).c_str(), {mgp::Type::List, mgp::Type::String}), mgp::Parameter(std::string(Map::kArgumentListValuesFromLists).c_str(), {mgp::Type::List, mgp::Type::Any})}, module, memory); mgp::AddFunction( Map::RemoveKey, Map::kProcedureRemoveKey, {mgp::Parameter(Map::kArgumentsInputMap, mgp::Type::Map), mgp::Parameter(Map::kArgumentsKey, mgp::Type::String), mgp::Parameter(Map::kArgumentsIsRecursive, mgp::Type::Map, mgp::Value(mgp::Map()))}, module, memory); mgp::AddFunction(Map::FromPairs, Map::kProcedureFromPairs, {mgp::Parameter(Map::kArgumentsInputList, {mgp::Type::List, mgp::Type::List})}, module, memory); { // mgp::AddFunction(Map::Merge, Map::kProcedureMerge, // {mgp::Parameter(Map::kArgumentsInputMap1, mgp::Type::Any, mgp::Value(mgp::Map())), // mgp::Parameter(Map::kArgumentsInputMap2, mgp::Type::Any, mgp::Value(mgp::Map()))}, // module, memory); auto *func = mgp::module_add_function(module, Map::kProcedureMerge.data(), Map::Merge); mgp::func_add_arg(func, Map::kArgumentsInputMap1.data(), mgp::type_nullable(mgp::type_map())); mgp::func_add_arg(func, Map::kArgumentsInputMap2.data(), mgp::type_nullable(mgp::type_map())); } mgp::AddFunction( Map::RemoveKeys, std::string(Map::kProcedureRemoveKeys).c_str(), {mgp::Parameter(std::string(Map::kArgumentsInputMapRemoveKeys).c_str(), mgp::Type::Map), mgp::Parameter(std::string(Map::kArgumentsKeysListRemoveKeys).c_str(), {mgp::Type::List, mgp::Type::String}), mgp::Parameter(std::string(Map::kArgumentsRecursiveRemoveKeys).c_str(), mgp::Type::Map, mgp::Value(mgp::Map()))}, module, memory); AddProcedure(Map::FromNodes, Map::kProcedureFromNodes, mgp::ProcedureType::Read, {mgp::Parameter(Map::kFromNodesArg1, mgp::Type::String), mgp::Parameter(Map::kFromNodesArg2, mgp::Type::String)}, {mgp::Return(Map::kResultFromNodes, mgp::Type::Map)}, module, memory); mgp::AddFunction(Map::FromValues, Map::kProcedureFromValues, {mgp::Parameter(Map::kFromValuesArg1, {mgp::Type::List, mgp::Type::Any})}, module, memory); mgp::AddFunction( Map::SetKey, Map::kProcedureSetKey, {mgp::Parameter(Map::kSetKeyArg1, mgp::Type::Map), mgp::Parameter(Map::kSetKeyArg2, mgp::Type::String), mgp::Parameter(Map::kSetKeyArg3, mgp::Type::Any)}, module, memory); } catch (const std::exception &e) { return 1; } return 0; } extern "C" int mgp_shutdown_module() { return 0; }