Features
Classes | Namespaces | Typedefs | Functions | Variables
features.hpp File Reference
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <exception>
#include <cstddef>
#include <iostream>
#include <climits>
#include <cstdint>
Include dependency graph for features.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  features::systems_difference_t
 
struct  features::system_feature_difference_t
 
class  features::combination_t< T >
 
class  features::feature_location_t
 
class  features::feature_location_isolation_t
 
class  features::feature_location_differences_t
 
class  features::feature_location_calculation_t
 

Namespaces

 features
 

Typedefs

using features::feature_id_t = unsigned short int
 
using features::model_id_t = unsigned short int
 
using features::maxnat_t = uintmax_t
 
using features::feature_expression_t = std::vector< std::pair< std::string, maxnat_t > >
 
using features::expression_feature_t = std::map< maxnat_t, std::string >
 
using features::feature_names_t = std::vector< std::string >
 
using features::system_t = feature_names_t
 
using features::systems_t = std::vector< system_t >
 
using features::features_isolation_t = std::map< std::string, systems_difference_t >
 
using features::differences_t = std::vector< system_feature_difference_t >
 

Functions

maxnat_t features::product (maxnat_t from, maxnat_t to)
 
maxnat_t features::factorial (maxnat_t n)
 
maxnat_t features::combinations (maxnat_t n, maxnat_t k)
 
maxnat_t features::sum_of_combinations (maxnat_t n, maxnat_t k)
 
maxnat_t features::power (maxnat_t base, maxnat_t exponent)
 
maxnat_t features::power2 (maxnat_t exponent)
 
template<class T >
std::vector< T > & features::concat (std::vector< T > &destination, const std::vector< T > &v)
 
template<class T >
bool features::contains (const std::vector< T > &v, const T &e)
 
std::vector< feature_id_t > features::negate (const std::vector< feature_id_t > &v, feature_id_t n)
 
bool features::hasO (model_id_t M)
 
bool features::hasA (model_id_t M)
 
bool features::hasN (model_id_t M)
 
bool features::hasON (model_id_t M)
 
bool features::hasAN (model_id_t M)
 
std::string features::independent_feature_name (feature_id_t i)
 
std::string features::or_feature_name (const std::vector< feature_id_t > &ids)
 
std::string features::and_feature_name (const std::vector< feature_id_t > &ids)
 
std::string features::not_feature_name (feature_id_t i)
 
std::string features::or_not_feature_name (const std::vector< feature_id_t > &ids)
 
std::string features::and_not_feature_name (const std::vector< feature_id_t > &ids)
 
std::string features::system_name (feature_id_t n)
 
std::string features::difference_name (feature_id_t n)
 
maxnat_t features::or_feature_value (const std::vector< feature_id_t > &ids, const feature_expression_t &idf)
 
maxnat_t features::and_feature_value (const std::vector< feature_id_t > &ids, const feature_expression_t &idf)
 
maxnat_t features::or_not_feature_value (const std::vector< feature_id_t > &ids, const feature_expression_t &nf)
 
maxnat_t features::and_not_feature_value (const std::vector< feature_id_t > &ids, const feature_expression_t &nf, const maxnat_t &bitmask)
 
std::vector< feature_id_t > features::unsigned2vector (maxnat_t u)
 

Variables

const std::string features::set_begin { "{" }
 
const std::string features::set_end { "}" }
 
const std::string features::set_intersection { "&" }
 
const std::string features::set_difference { "\\" }
 
const std::string features::set_union { "|" }
 
const std::string features::set_separator { " " }
 
const std::string features::set_comma { "," }
 
const std::string features::feature_and { "*" }
 
const std::string features::feature_or { "+" }
 
const std::string features::feature_not { "!" }
 
const std::string features::feature { "f" }
 
const std::string features::feature_separator { " " }
 
const std::string features::system { "S" }
 
const std::string features::difference_expression { "E" }
 
const std::string features::separator { "\t" }
 
const std::string features::opening_parenthesis { "(" }
 
const std::string features::closing_parenthesis { ")" }
 

Detailed Description

Author
Ulrich W. Eisenecker
Date
December 11, 2022
Warning
This program is a research prototype only. It comes with no warranty and no liability. Use it only at your own risk!