Program Listing for File options.cpp¶
↰ Return to documentation for file (SeQuant/core/options.cpp)
//
// Created by Eduard Valeyev on 8/25/25.
//
#include <SeQuant/core/context.hpp>
#include <SeQuant/core/options.hpp>
namespace sequant {
CanonicalizationMethod operator&(CanonicalizationMethod m1,
CanonicalizationMethod m2) {
return static_cast<CanonicalizationMethod>(static_cast<int>(m1) &
static_cast<int>(m2));
}
CanonicalizationMethod operator|(CanonicalizationMethod m1,
CanonicalizationMethod m2) {
return static_cast<CanonicalizationMethod>(static_cast<int>(m1) |
static_cast<int>(m2));
}
std::wstring to_wstring(CanonicalizationMethod m) {
switch (m) {
case CanonicalizationMethod::Topological:
return L"topological";
case CanonicalizationMethod::Lexicographic:
return L"lexicographic";
case CanonicalizationMethod::Complete:
return L"complete";
}
SEQUANT_UNREACHABLE;
}
CanonicalizeOptions CanonicalizeOptions::default_options() {
return sequant::get_default_context().canonicalization_options().value_or(
CanonicalizeOptions{});
}
CanonicalizeOptions CanonicalizeOptions::copy_and_set(
CanonicalizationMethod arg) const {
auto result = *this;
result.method = arg;
return result;
}
CanonicalizeOptions CanonicalizeOptions::copy_and_set(
std::optional<container::set<Index>> arg) const {
auto result = *this;
result.named_indices = std::move(arg);
return result;
}
CanonicalizeOptions CanonicalizeOptions::copy_and_set(
IgnoreNamedIndexLabel arg) const {
auto result = *this;
result.ignore_named_index_labels = arg;
return result;
}
SimplifyOptions SimplifyOptions::default_options() {
auto result =
sequant::get_default_context().canonicalization_options().value_or(
CanonicalizeOptions{});
return {result};
}
SimplifyOptions::SimplifyOptions(CanonicalizeOptions opts)
: CanonicalizeOptions(opts) {}
} // namespace sequant