LSST Applications g0d97872fb5+4fd969bb9d,g1653933729+34a971ddd9,g28da252d5a+072f89fe25,g2bbee38e9b+a99b0ab4cd,g2bc492864f+a99b0ab4cd,g2ca4be77d2+c0e3b27cd8,g2cdde0e794+704103fe75,g3156d2b45e+6e87dc994a,g347aa1857d+a99b0ab4cd,g35bb328faa+34a971ddd9,g3a166c0a6a+a99b0ab4cd,g3e281a1b8c+8ec26ec694,g4005a62e65+ba0306790b,g414038480c+9ed5ed841a,g569e0e2b34+cb4faa46ad,g5a97de2502+520531a62c,g717e5f8c0f+29153700a5,g7ede599f99+367733290c,g80478fca09+17051a22cc,g82479be7b0+f2f1ea0a87,g858d7b2824+29153700a5,g8b782ad322+29153700a5,g8cd86fa7b1+05420e7f7d,g9125e01d80+34a971ddd9,ga5288a1d22+e7f674aaf3,gae0086650b+34a971ddd9,gae74b0b5c6+45ef5cdc51,gb58c049af0+ace264a4f2,gc28159a63d+a99b0ab4cd,gcf0d15dbbd+8051a81198,gda6a2b7d83+8051a81198,gdaeeff99f8+7774323b41,gdf4d240d4a+34a971ddd9,ge2409df99d+cb167bac99,ge33fd446bb+29153700a5,ge79ae78c31+a99b0ab4cd,gf0baf85859+890af219f9,gf5289d68f6+9faa5c5784,w.2024.36
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst::gauss2d::fit::Channel::Shared_enabler Struct Reference
Inheritance diagram for lsst::gauss2d::fit::Channel::Shared_enabler:
lsst::gauss2d::fit::Channel lsst::gauss2d::Object

Public Types

typedef std::map< std::string, std::shared_ptr< const Channel > > Registry
 

Public Member Functions

template<typename... Args>
 Shared_enabler (Args &&...args)
 
std::string repr (bool name_keywords=false, std::string_view namespace_separator=Object::CC_NAMESPACE_SEPARATOR) const override
 Return a full, callable string representation of this.
 
std::string str () const override
 Return a brief, human-readable string representation of this.
 
const bool operator< (const Channel &c) const
 
const bool operator== (const Channel &c) const
 
const bool operator!= (const Channel &c) const
 

Static Public Member Functions

static void erase (std::string name)
 Delete a channel with a given name.
 
static const std::shared_ptr< const Channelfind_channel (std::string name)
 Find a channel with the given name.
 
static const std::shared_ptr< const Channelget_channel (std::string name)
 Get a channel with the given name, creating it if it doesn't exist.
 
static std::vector< std::shared_ptr< const Channel > > get_channels ()
 
static const std::shared_ptr< const ChannelNONE_PTR ()
 
static const ChannelNONE ()
 
static std::shared_ptr< Channelmake (std::string name)
 Construct a new Channel.
 
static const std::shared_ptr< const Channelmake_const (std::string name)
 Same as make(), but creating a new Channel.
 
static std::string_view null_str (const std::string_view &namespace_separator)
 

Public Attributes

const std::string name
 

Static Public Attributes

static const std::string NAME_NONE = "None"
 
static constexpr std::string_view CC_NAMESPACE_SEPARATOR = "::"
 The C++ namespace separator.
 
static constexpr std::string_view NULL_STR_GENERAL = "None"
 
static constexpr std::string_view PY_NAMESPACE_SEPARATOR = "."
 

Detailed Description

Definition at line 23 of file channel.cc.

Member Typedef Documentation

◆ Registry

Definition at line 31 of file channel.h.

Constructor & Destructor Documentation

◆ Shared_enabler()

template<typename... Args>
lsst::gauss2d::fit::Channel::Shared_enabler::Shared_enabler ( Args &&... args)
inline

Definition at line 25 of file channel.cc.

25: Channel(std::forward<Args>(args)...) {}
Channel(const Channel &)=delete

Member Function Documentation

◆ erase()

void lsst::gauss2d::fit::Channel::erase ( std::string name)
staticinherited

Delete a channel with a given name.

Parameters
nameThe name of the channel to delete
Exceptions
std::invalid_argumentIf the channel is the default (NAME_NONE) or non-existent
std::runtime_errorIf the channel is referenced by any other objects

Definition at line 51 of file channel.cc.

51 {
52 if (name == NAME_NONE) throw std::invalid_argument("Can't erase the " + NAME_NONE + " Channel");
54 if (channel == nullptr) throw std::invalid_argument("Can't erase non-existent Channel name=" + name);
55 size_t use_count = channel.use_count();
56 if (use_count < 2) {
57 throw std::logic_error("Failed erasing " + channel->str()
58 + " with unexpected use_count=" + std::to_string(use_count));
59 } else if (use_count == 2) {
60 _registry.erase(name);
61 } else {
62 throw std::runtime_error("Can't erase " + channel->str()
63 + " with use_count=" + std::to_string(use_count));
64 }
65}
static const std::string NAME_NONE
Definition channel.h:64
static const std::shared_ptr< const Channel > get_channel(std::string name)
Get a channel with the given name, creating it if it doesn't exist.
Definition channel.cc:74
T erase(T... args)
T to_string(T... args)

◆ find_channel()

const std::shared_ptr< const Channel > lsst::gauss2d::fit::Channel::find_channel ( std::string name)
staticinherited

Find a channel with the given name.

Parameters
nameThe name of the channel to find
Returns
The Channel is if it exists, or nullptr otherwise

Definition at line 67 of file channel.cc.

67 {
68 if (name == NAME_NONE) return NONE_PTR();
69 auto channel = _registry.find(name);
70 auto found = channel == _registry.end() ? nullptr : channel->second;
71 return found;
72}
static const std::shared_ptr< const Channel > NONE_PTR()
Definition channel.cc:106
T end(T... args)
T find(T... args)

◆ get_channel()

const std::shared_ptr< const Channel > lsst::gauss2d::fit::Channel::get_channel ( std::string name)
staticinherited

Get a channel with the given name, creating it if it doesn't exist.

Parameters
nameThe name of the channel to get
Returns
The Channel with the given name (created if non-existent)

Definition at line 74 of file channel.cc.

74 {
75 auto channel = Channel::find_channel(name);
76 if (channel == nullptr) channel = Channel::make(name);
77 return channel;
78}
static const std::shared_ptr< const Channel > find_channel(std::string name)
Find a channel with the given name.
Definition channel.cc:67
static std::shared_ptr< Channel > make(std::string name)
Construct a new Channel.
Definition channel.cc:89

◆ get_channels()

std::vector< std::shared_ptr< const Channel > > lsst::gauss2d::fit::Channel::get_channels ( )
staticinherited

Definition at line 80 of file channel.cc.

80 {
82 for (const auto &[key, value] : _registry) {
83 vec.emplace_back(value);
84 }
86 return vec;
87}
T emplace_back(T... args)

◆ make()

std::shared_ptr< Channel > lsst::gauss2d::fit::Channel::make ( std::string name)
staticinherited

Construct a new Channel.

Parameters
nameThe name of the Channel to create
Returns
The new Channel

Definition at line 89 of file channel.cc.

89 {
90 std::shared_ptr<Channel> c = std::make_shared<Shared_enabler>(name);
91 if (name != NAME_NONE) {
92 _registry.insert({name, c});
93 }
94 return c;
95}
const std::string name
Definition channel.h:66
T insert(T... args)

◆ make_const()

const std::shared_ptr< const Channel > lsst::gauss2d::fit::Channel::make_const ( std::string name)
staticinherited

Same as make(), but creating a new Channel.

Definition at line 97 of file channel.cc.

97{ return make(name); }

◆ NONE()

const Channel & lsst::gauss2d::fit::Channel::NONE ( )
staticinherited

Definition at line 111 of file channel.cc.

111{ return *NONE_PTR(); }

◆ NONE_PTR()

const std::shared_ptr< const Channel > lsst::gauss2d::fit::Channel::NONE_PTR ( )
staticinherited

Definition at line 106 of file channel.cc.

106 {
108 return _NONE;
109}

◆ null_str()

static std::string_view lsst::gauss2d::Object::null_str ( const std::string_view & namespace_separator)
inlinestaticinherited

Definition at line 49 of file object.h.

49 {
50 return namespace_separator == CC_NAMESPACE_SEPARATOR ? "nullptr" : NULL_STR_GENERAL;
51 }
static constexpr std::string_view CC_NAMESPACE_SEPARATOR
The C++ namespace separator.
Definition object.h:45
static constexpr std::string_view NULL_STR_GENERAL
Definition object.h:46

◆ operator!=()

const bool lsst::gauss2d::fit::Channel::operator!= ( const Channel & c) const
inherited

Definition at line 49 of file channel.cc.

49{ return !(*this == c); }

◆ operator<()

const bool lsst::gauss2d::fit::Channel::operator< ( const Channel & c) const
inherited

Definition at line 45 of file channel.cc.

45{ return name < c.name; }

◆ operator==()

const bool lsst::gauss2d::fit::Channel::operator== ( const Channel & c) const
inherited

Definition at line 47 of file channel.cc.

47{ return name == c.name; }

◆ repr()

std::string lsst::gauss2d::fit::Channel::repr ( bool name_keywords = false,
std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR ) const
overridevirtualinherited

Return a full, callable string representation of this.

Parameters
name_keywordsWhether to prefix arguments with "{name}=", where name is the arg name in the header (as with keyword arguments in Python).
namespace_separatorThe string to use to delimit namespaces, i.e. :: in C++ and . in Python.
Returns
A callable string representation of this, which should return an an identical object to this.
Note
The representation with name_keywords=false must be callable in C++. The representation with name_keywords=true should be callable in Python, if there are any bindings.

Implements lsst::gauss2d::Object.

Definition at line 99 of file channel.cc.

99 {
100 return type_name_str<Channel>(false, namespace_separator) + "(" + (name_keywords ? "name=" : "") + name
101 + ")";
102}

◆ str()

std::string lsst::gauss2d::fit::Channel::str ( ) const
overridevirtualinherited

Return a brief, human-readable string representation of this.

Implements lsst::gauss2d::Object.

Definition at line 104 of file channel.cc.

104{ return type_name_str<Channel>(true) + "(name=" + name + ")"; }

Member Data Documentation

◆ CC_NAMESPACE_SEPARATOR

constexpr std::string_view lsst::gauss2d::Object::CC_NAMESPACE_SEPARATOR = "::"
staticconstexprinherited

The C++ namespace separator.

Definition at line 45 of file object.h.

◆ name

const std::string lsst::gauss2d::fit::Channel::name
inherited

Definition at line 66 of file channel.h.

◆ NAME_NONE

const std::string lsst::gauss2d::fit::Channel::NAME_NONE = "None"
inlinestaticinherited

Definition at line 64 of file channel.h.

◆ NULL_STR_GENERAL

constexpr std::string_view lsst::gauss2d::Object::NULL_STR_GENERAL = "None"
staticconstexprinherited

Definition at line 46 of file object.h.

◆ PY_NAMESPACE_SEPARATOR

constexpr std::string_view lsst::gauss2d::Object::PY_NAMESPACE_SEPARATOR = "."
staticconstexprinherited

Definition at line 47 of file object.h.


The documentation for this struct was generated from the following file: