SourceXtractorPlusPlus  0.10
Please provide a description of the project.
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
SourceXtractor::OutputRegistry Class Reference

#include <OutputRegistry.h>

Collaboration diagram for SourceXtractor::OutputRegistry:
[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)
 
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 36 of file OutputRegistry.h.

Member Typedef Documentation

◆ ColumnConverter

template<typename PropertyType , typename OutType >
using SourceXtractor::OutputRegistry::ColumnConverter = std::function<OutType(const PropertyType&)>

Definition at line 41 of file OutputRegistry.h.

◆ SourceToRowConverter

Definition at line 43 of file OutputRegistry.h.

Member Function Documentation

◆ enableOutput()

template<typename PropertyType >
void SourceXtractor::OutputRegistry::enableOutput ( std::string  alias_name)
inline

◆ getOutputPropertyNames()

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

Definition at line 136 of file OutputRegistry.h.

References std::set< K >::emplace(), and m_output_properties.

Referenced by SEMain::mainMethod().

Here is the call graph for this function:

◆ getSourceToRowConverter()

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

Definition at line 36 of file OutputRegistry.cpp.

References std::vector< T >::at(), 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 67 of file OutputRegistry.cpp.

References std::vector< T >::begin(), std::vector< T >::empty(), std::vector< T >::end(), and std::string::find().

Referenced by SEMain::mainMethod().

Here is the call graph for this function:

◆ registerColumnConverter()

template<typename PropertyType , typename OutType >
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::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 63 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(), SourceXtractor::ExternalFlagTaskFactory::registerPropertyInstances(), and SourceXtractor::AperturePhotometryTaskFactory::registerPropertyInstances().

◆ registerPropertyInstances() [2/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 99 of file OutputRegistry.h.

References std::back_inserter(), std::copy(), std::map< K, T >::erase(), 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:

Member Data Documentation

◆ m_name_to_col_info_map

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

Definition at line 173 of file OutputRegistry.h.

Referenced by registerColumnConverter(), and registerPropertyInstances().

◆ m_name_to_converter_map

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

Definition at line 172 of file OutputRegistry.h.

Referenced by registerColumnConverter(), and registerPropertyInstances().

◆ m_output_properties

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

Definition at line 174 of file OutputRegistry.h.

Referenced by enableOutput(), and getOutputPropertyNames().

◆ 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: