SourceXtractorPlusPlus 0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
SourceXtractor::OutputRegistry Class Reference

#include <OutputRegistry.h>

Collaboration diagram for SourceXtractor::OutputRegistry:
Collaboration graph
[legend]

Classes

struct  ColInfo
 
class  ColumnFromSource
 

Public Types

template<typename PropertyType , typename OutType >
using ColumnConverter = std::function<OutType(const PropertyType&)>
 
using SourceToRowConverter = std::function<Euclid::Table::Row(const SourceInterface&)>
 

Public Member Functions

template<typename PropertyType , typename OutType >
void registerColumnConverter (std::string column_name, ColumnConverter< PropertyType, OutType > converter, std::string column_unit="", std::string column_description="")
 
template<typename PropertyType >
void registerPropertyInstances (const std::vector< std::pair< std::string, unsigned int > > &instance_names)
 
template<typename PropertyType >
void registerPropertyInstances (const std::string &current_name, const std::vector< std::pair< std::string, unsigned int > > &instance_names)
 
template<typename PropertyType >
void enableOutput (std::string alias_name, bool configurable_output=false)
 
std::set< std::stringgetOutputPropertyNames ()
 
SourceToRowConverter getSourceToRowConverter (const std::vector< std::string > &enabled_optional)
 
void printPropertyColumnMap (const std::vector< std::string > &properties={})
 

Private Attributes

std::map< std::type_index, std::vector< std::string > > m_property_to_names_map {}
 
std::map< std::string, std::pair< std::type_index, ColumnFromSource > > m_name_to_converter_map {}
 
std::map< std::string, ColInfom_name_to_col_info_map {}
 
std::multimap< std::string, std::type_indexm_output_properties {}
 

Detailed Description

Definition at line 37 of file OutputRegistry.h.

Member Typedef Documentation

◆ ColumnConverter

Definition at line 42 of file OutputRegistry.h.

◆ SourceToRowConverter

Definition at line 44 of file OutputRegistry.h.

Member Function Documentation

◆ enableOutput()

template<typename PropertyType >
void SourceXtractor::OutputRegistry::enableOutput ( std::string alias_name,
bool configurable_output = false )
inline

Register into the registry the output alias so PropertyType can be serialized into the output catalog

Template Parameters
PropertyTypeThe property holder
Parameters
alias_nameThe alias that will be added as an option to "output-properties"
configurable_outputBy default, OutputRegistry verifies that there are column converters registered for PropertyType. If this option is set to true, the check will be skipped, and it will be assumed that the output columns will be added during the configuration of the plugin

Definition at line 142 of file OutputRegistry.h.

References std::map< K, T >::count(), std::multimap< K, T >::emplace(), m_output_properties, and m_property_to_names_map.

Here is the call graph for this function:

◆ getOutputPropertyNames()

std::set< std::string > SourceXtractor::OutputRegistry::getOutputPropertyNames ( )
inline

Definition at line 150 of file OutputRegistry.h.

References m_output_properties.

◆ getSourceToRowConverter()

auto SourceXtractor::OutputRegistry::getSourceToRowConverter ( const std::vector< std::string > & enabled_optional)

Definition at line 36 of file OutputRegistry.cpp.

References std::find(), and std::move().

Here is the call graph for this function:

◆ printPropertyColumnMap()

void SourceXtractor::OutputRegistry::printPropertyColumnMap ( const std::vector< std::string > & properties = {})

Definition at line 70 of file OutputRegistry.cpp.

References std::map< K, T >::at(), m_name_to_col_info_map, m_output_properties, and m_property_to_names_map.

Here is the call graph for this function:

◆ registerColumnConverter()

void SourceXtractor::OutputRegistry::registerColumnConverter ( std::string column_name,
ColumnConverter< PropertyType, OutType > converter,
std::string column_unit = "",
std::string column_description = "" )
inline

◆ registerPropertyInstances() [1/2]

template<typename PropertyType >
void SourceXtractor::OutputRegistry::registerPropertyInstances ( const std::string & current_name,
const std::vector< std::pair< std::string, unsigned int > > & instance_names )
inline

When there are multiple instances of a given property, generate one column output with the given name for each instance replacing an existing registered name

Template Parameters
PropertyType
Parameters
current_name
instance_names

Definition at line 100 of file OutputRegistry.h.

References std::back_inserter(), std::copy(), std::find(), m_name_to_col_info_map, m_name_to_converter_map, and m_property_to_names_map.

Here is the call graph for this function:

◆ registerPropertyInstances() [2/2]

template<typename PropertyType >
void SourceXtractor::OutputRegistry::registerPropertyInstances ( const std::vector< std::pair< std::string, unsigned int > > & instance_names)
inline

When there are multiple instances of a given property, generate one column output with the given suffix for each instance

Template Parameters
PropertyType
Parameters
instance_names

Definition at line 64 of file OutputRegistry.h.

References m_name_to_col_info_map, m_name_to_converter_map, and m_property_to_names_map.

Referenced by SourceXtractor::AutoPhotometryTaskFactory::registerPropertyInstances(), and SourceXtractor::ExternalFlagTaskFactory::registerPropertyInstances().

Member Data Documentation

◆ m_name_to_col_info_map

std::map<std::string, ColInfo> SourceXtractor::OutputRegistry::m_name_to_col_info_map {}
private

◆ m_name_to_converter_map

std::map<std::string, std::pair<std::type_index, ColumnFromSource> > SourceXtractor::OutputRegistry::m_name_to_converter_map {}
private

◆ m_output_properties

std::multimap<std::string, std::type_index> SourceXtractor::OutputRegistry::m_output_properties {}
private

Definition at line 188 of file OutputRegistry.h.

Referenced by enableOutput(), getOutputPropertyNames(), and printPropertyColumnMap().

◆ m_property_to_names_map

std::map<std::type_index, std::vector<std::string> > SourceXtractor::OutputRegistry::m_property_to_names_map {}
private

The documentation for this class was generated from the following files: