2018-03-24 05:40:20 +01:00
|
|
|
// Matrix Construct
|
|
|
|
//
|
|
|
|
// Copyright (C) Matrix Construct Developers, Authors & Contributors
|
|
|
|
// Copyright (C) 2016-2018 Jason Volk <jason@zemos.net>
|
|
|
|
//
|
|
|
|
// Permission to use, copy, modify, and/or distribute this software for any
|
|
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
|
|
// copyright notice and this permission notice is present in all copies. The
|
|
|
|
// full license for this software is available in the LICENSE file.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#define HAVE_IRCD_MODS_SYMBOLS_H
|
|
|
|
|
2019-02-10 00:36:51 +01:00
|
|
|
// Section & Symbol utilites
|
|
|
|
//
|
|
|
|
// All path parameters can be absolute paths to any module file, or relative
|
|
|
|
// names which will be found using the mods::paths system.
|
|
|
|
|
2018-03-24 05:40:20 +01:00
|
|
|
namespace ircd::mods
|
|
|
|
{
|
2019-02-10 00:36:51 +01:00
|
|
|
// Get all section names
|
|
|
|
std::vector<std::string> sections(const string_view &path);
|
2018-03-24 05:40:20 +01:00
|
|
|
|
2019-02-10 00:36:51 +01:00
|
|
|
// Get all symbol names (mangled)
|
|
|
|
std::vector<std::string> symbols(const string_view &path, const string_view §ion);
|
|
|
|
std::vector<std::string> symbols(const string_view &path);
|
2018-03-24 05:40:20 +01:00
|
|
|
|
2019-02-10 00:36:51 +01:00
|
|
|
// Generate demangled -> mangled map
|
2019-02-09 08:18:46 +01:00
|
|
|
std::map<std::string, std::string> mangles(const std::vector<std::string> &);
|
2019-02-10 00:36:51 +01:00
|
|
|
std::map<std::string, std::string> mangles(const string_view &path, const string_view §ion);
|
|
|
|
std::map<std::string, std::string> mangles(const string_view &path);
|
2018-03-24 05:40:20 +01:00
|
|
|
|
2019-02-10 00:36:51 +01:00
|
|
|
// Test if module has (mangled) symbol (optionally in section)
|
2019-02-09 05:39:30 +01:00
|
|
|
bool has_symbol(const string_view &name, const string_view &symbol, const string_view §ion = {});
|
2019-02-10 00:36:51 +01:00
|
|
|
|
|
|
|
// Find module names where (mangled) symbol resides in the mods::paths
|
2019-02-09 05:39:30 +01:00
|
|
|
std::vector<std::string> find_symbol(const string_view &symbol, const string_view §ion = {});
|
2018-03-24 05:40:20 +01:00
|
|
|
}
|