LSSTApplications
18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
|
Channel provides input/output of AST objects. More...
#include <Channel.h>
Public Types | |
using | ObjectPtr = std::unique_ptr< AstObject, Deleter > |
unique pointer holding an AST raw pointer More... | |
Public Member Functions | |
Channel (Stream &stream, std::string const &options="") | |
Construct a channel that uses a provided Stream. More... | |
virtual | ~Channel () |
Channel (Channel const &)=delete | |
Channel (Channel &&)=default | |
Channel & | operator= (Channel const &)=delete |
Channel & | operator= (Channel &&)=default |
std::shared_ptr< Channel > | copy () const |
Return a deep copy of this object. More... | |
bool | getComment () const |
Get Comment: include textual comments in output? More... | |
int | getFull () const |
Get Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose. More... | |
int | getIndent () const |
Get Indent: indentation increment between objects. More... | |
int | getReportLevel () const |
Get ReportLevel: report level. More... | |
bool | getSkip () const |
Get Skip: skip irrelevant data on input? More... | |
bool | getStrict () const |
Get Strict: generate errors instead of warnings? More... | |
std::shared_ptr< Object > | read () |
Read an object from a channel. More... | |
void | setComment (bool skip) |
Set Comment: include textual comments in output? More... | |
void | setFull (int full) |
Set Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose. More... | |
void | setIndent (int indent) |
Set Indent: indentation increment between objects. More... | |
void | setReportLevel (int level) |
Set ReportLevel: report level; an integer in the range [0, 3] where 0 is the most verbose. More... | |
void | setSkip (bool skip) |
Set Skip: skip irrelevant data on input? More... | |
void | setStrict (bool strict) |
Set Strict: generate errors instead of warnings? More... | |
KeyMap | warnings () const |
Return a KeyMap holding the text of any warnings issued as a result of the previous invocation of read or write. More... | |
int | write (Object const &object) |
Write an object to a channel. More... | |
bool | operator== (Object const &rhs) const |
Return True if this and rhs are the equal. More... | |
bool | operator!= (Object const &rhs) const |
Return True if this and rhs are not equal. More... | |
void | clear (std::string const &attrib) |
Clear the values of a specified set of attributes for an Object. More... | |
bool | hasAttribute (std::string const &attrib) const |
Does this object have an attribute with the specified name? More... | |
std::string | getClassName () const |
Get Class: the name of the class (e.g. More... | |
std::string | getID () const |
Get ID: object identification string that is not copied. More... | |
std::string | getIdent () const |
Get Ident: object identification string that is copied. More... | |
int | getNObject () const |
Get NObject: number of AST objects in existence of the same type as the underlying AST class. More... | |
int | getObjSize () const |
Get ObjSize: the in-memory size of the AST object in bytes. More... | |
int | getRefCount () const |
Get RefCount: number of active pointers to the underlying AST object. More... | |
bool | getUseDefs () const |
Get UseDefs: allow use of default values for Object attributes? More... | |
void | lock (bool wait) |
Lock this object for exclusive use by the calling thread. More... | |
bool | same (Object const &other) const |
Does this contain the same AST object as another? More... | |
void | setID (std::string const &id) |
Set ID: object identification string that is not copied. More... | |
void | setIdent (std::string const &ident) |
Set Ident: object identification string that is copied. More... | |
void | setUseDefs (bool usedefs) |
Set UseDefs: allow use of default values for Object attributes? More... | |
void | show (std::ostream &os, bool showComments=true) const |
Print a textual description the object to an ostream. More... | |
std::string | show (bool showComments=true) const |
Return a textual description the object as a string. More... | |
bool | test (std::string const &attrib) const |
Has this attribute been explicitly set (and not subsequently cleared)? More... | |
void | unlock (bool report=false) |
Unlock this object previously locked using lock, so that other threads can use this object. More... | |
AstObject const * | getRawPtr () const |
Get the raw AST pointer. More... | |
AstObject * | getRawPtr () |
Get the raw AST pointer. More... | |
Static Public Member Functions | |
static std::shared_ptr< Object > | fromString (std::string const &str) |
Construct an Object from a string, using astFromString. More... | |
template<typename Class > | |
static std::shared_ptr< Class > | fromAstObject (AstObject *rawObj, bool copy) |
Given a bare AST object pointer return a shared pointer to an ast::Object of the correct type. More... | |
Protected Member Functions | |
virtual std::shared_ptr< Object > | copyPolymorphic () const override |
Return a deep copy of this object. More... | |
Channel (AstChannel *chan, Stream &stream, bool isFits=false) | |
Construct a channel from an AST channel pointer and a Stream. More... | |
Channel (AstChannel *chan) | |
Construct a channel from an AST channel pointer that has its own stream. More... | |
template<typename T , typename AstT > | |
std::shared_ptr< T > | copyImpl () const |
Implementation of deep copy. More... | |
bool | getB (std::string const &attrib) const |
Get the value of an attribute as a bool. More... | |
std::string const | getC (std::string const &attrib) const |
Get the value of an attribute as a string. More... | |
double | getD (std::string const &attrib) const |
Get the value of an attribute as a double. More... | |
float | getF (std::string const &attrib) const |
Get the value of an attribute as a float. More... | |
int | getI (std::string const &attrib) const |
Get the value of an attribute as an int. More... | |
long int | getL (std::string const &attrib) const |
Get the value of an attribute as a long int. More... | |
void | set (std::string const &setting) |
Assign a set of attribute values, over-riding any previous values. More... | |
void | setB (std::string const &attrib, bool value) |
Set the value of an attribute as a bool. More... | |
void | setC (std::string const &attrib, std::string const &value) |
Set the value of an attribute as a string. More... | |
void | setD (std::string const &attrib, double value) |
Set the value of an attribute as a double. More... | |
void | setF (std::string const &attrib, float value) |
Set the value of an attribute as a float. More... | |
void | setI (std::string const &attrib, int value) |
Set the value of an attribute as an int. More... | |
void | setL (std::string const &attrib, long int value) |
Set the value of an attribute as a long int. More... | |
Static Protected Member Functions | |
template<typename ShimT , typename AstT > | |
static std::shared_ptr< ShimT > | makeShim (AstObject *p) |
Functor to make an astshim instance from a raw AST pointer of the corresponding type. More... | |
Friends | |
class | Object |
Channel provides input/output of AST objects.
Writing an Object to a Channel will generate a textual representation of that Object, and reading from a Channel will create a new Object from its textual representation.
Note that a channel cannot be deep-copied because the contained stream cannot be deep-copied
Channel provides the following attributes, in addition to those provided by Object
|
inherited |
|
explicit |
Construct a channel that uses a provided Stream.
[in] | stream | Stream for channel I/O:
|
[in] | options | Comma-separated list of attribute assignments. |
Definition at line 31 of file Channel.cc.
|
virtual |
Definition at line 45 of file Channel.cc.
|
delete |
|
default |
|
explicitprotected |
Construct a channel from an AST channel pointer and a Stream.
This is the constructor most subclasses use for their high-level constructor.
[in] | chan | AstChannel object |
[in,out] | stream | Stream to associate with the channel |
[in] | isFits | If true then read or write the stream as a FITS header |
Definition at line 36 of file Channel.cc.
|
explicitprotected |
Construct a channel from an AST channel pointer that has its own stream.
[in] | chan | AstChannel object |
Definition at line 43 of file Channel.cc.
|
inlineinherited |
Clear the values of a specified set of attributes for an Object.
Clearing an attribute cancels any value that has previously been explicitly set for it, so that the standard default attribute value will subsequently be used instead. This also causes the astTest function to return the value zero for the attribute, indicating that no value has been set.
Definition at line 119 of file Object.h.
|
inline |
|
inlineprotectedinherited |
Implementation of deep copy.
Should be called to implement copyPolymorphic by all derived classes.
Definition at line 320 of file Object.h.
|
inlineoverrideprotectedvirtual |
Return a deep copy of this object.
This is called by copy.
Each subclass must override this method. The standard implementation is:
for example Frame implements this as:
Implements ast::Object.
Definition at line 159 of file Channel.h.
|
staticinherited |
Given a bare AST object pointer return a shared pointer to an ast::Object of the correct type.
The returned object takes ownership of the pointer. This is almost always what you want, for instance astDecompose returns shallow copies of the internal pointers.
Class | The class of the returned shared pointer. (The actual class will be the correct class of rawPtr.) |
[in] | rawObj | A bare AST object pointer |
[in] | copy | If True then make a deep copy of the pointer (and free the original) |
Definition at line 138 of file Object.cc.
|
inlinestaticinherited |
Construct an Object from a string, using astFromString.
Definition at line 88 of file Object.h.
|
inlineprotectedinherited |
Get the value of an attribute as a bool.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 348 of file Object.h.
|
inlineprotectedinherited |
Get the value of an attribute as a string.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 361 of file Object.h.
|
inlineinherited |
Get Class: the name of the class (e.g.
Note: if AST returns "CmpMap" then the name will be changed to "SeriesMap" or "ParallelMap", as appropriate.
Definition at line 139 of file Object.h.
|
inline |
Get Comment: include textual comments in output?
Definition at line 90 of file Channel.h.
|
inlineprotectedinherited |
Get the value of an attribute as a double.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 374 of file Object.h.
|
inlineprotectedinherited |
Get the value of an attribute as a float.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 387 of file Object.h.
|
inline |
Get Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose.
Definition at line 93 of file Channel.h.
|
inlineprotectedinherited |
Get the value of an attribute as an int.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 400 of file Object.h.
|
inlineinherited |
Get ID: object identification string that is not copied.
Definition at line 142 of file Object.h.
|
inlineinherited |
Get Ident: object identification string that is copied.
Definition at line 145 of file Object.h.
|
inline |
Get Indent: indentation increment between objects.
Definition at line 96 of file Channel.h.
|
inlineprotectedinherited |
Get the value of an attribute as a long int.
If possible, the attribute value is converted to the type you request.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 413 of file Object.h.
|
inlineinherited |
Get NObject: number of AST objects in existence of the same type as the underlying AST class.
Definition at line 153 of file Object.h.
|
inlineinherited |
Get ObjSize: the in-memory size of the AST object in bytes.
Definition at line 156 of file Object.h.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Get RefCount: number of active pointers to the underlying AST object.
Definition at line 163 of file Object.h.
|
inline |
Get ReportLevel: report level.
Definition at line 99 of file Channel.h.
|
inline |
Get Skip: skip irrelevant data on input?
Definition at line 102 of file Channel.h.
|
inline |
Get Strict: generate errors instead of warnings?
Definition at line 105 of file Channel.h.
|
inlineinherited |
Get UseDefs: allow use of default values for Object attributes?
Definition at line 166 of file Object.h.
|
inlineinherited |
Does this object have an attribute with the specified name?
Definition at line 127 of file Object.h.
|
inlineinherited |
Lock this object for exclusive use by the calling thread.
The thread-safe public interface to AST is designed so that an error is reported if any thread attempts to use an Object that it has not previously locked for its own exclusive use using this function. When an Object is created, it is initially locked by the thread that creates it, so newly created objects do not need to be explicitly locked. However, if an Object pointer is passed to another thread, the original thread must first unlock it (using astUnlock) and the new thread must then lock it (using astLock) before the new thread can use the Object.
[in] | wait | If the Object is curently locked by another thread then this function will either report an error or block. If a non-zero value is supplied for "wait", the calling thread waits until the object is available for it to use. Otherwise, an error is reported and the function returns immediately without locking the Object. |
Definition at line 202 of file Object.h.
|
inlinestaticprotectedinherited |
Functor to make an astshim instance from a raw AST pointer of the corresponding type.
ShimT | Output astshim class |
AstT | Output AST class |
|
inlineinherited |
|
inherited |
Return True if this and rhs
are the equal.
For two objects be equal, they both must have the same attributes and all contained objects must be equal.
Definition at line 85 of file Object.cc.
std::shared_ptr< Object > ast::Channel::read | ( | ) |
Read an object from a channel.
Definition at line 52 of file Channel.cc.
|
inlineinherited |
Does this contain the same AST object as another?
This is a test of identity, not of equality.
Definition at line 212 of file Object.h.
|
inlineprotectedinherited |
Assign a set of attribute values, over-riding any previous values.
The attributes and their new values are specified via a character string, which should contain a comma-separated list of the form: "attribute_1 = value_1, attribute_2 = value_2, ... " where "attribute_n" specifies an attribute name, and the value to the right of each " =" sign should be a suitable textual representation of the value to be assigned. This value will be interpreted according to the attribute's data type.
std::runtime_error | if the attribute is read-only |
Definition at line 440 of file Object.h.
|
inlineprotectedinherited |
Set the value of an attribute as a bool.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 452 of file Object.h.
|
inlineprotectedinherited |
Set the value of an attribute as a string.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 464 of file Object.h.
|
inline |
Set Comment: include textual comments in output?
Definition at line 111 of file Channel.h.
|
inlineprotectedinherited |
Set the value of an attribute as a double.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 476 of file Object.h.
|
inlineprotectedinherited |
Set the value of an attribute as a float.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 488 of file Object.h.
|
inline |
Set Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose.
Definition at line 114 of file Channel.h.
|
inlineprotectedinherited |
Set the value of an attribute as an int.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 500 of file Object.h.
|
inlineinherited |
Set ID: object identification string that is not copied.
Definition at line 215 of file Object.h.
|
inlineinherited |
Set Ident: object identification string that is copied.
Definition at line 218 of file Object.h.
|
inline |
Set Indent: indentation increment between objects.
Definition at line 117 of file Channel.h.
|
inlineprotectedinherited |
Set the value of an attribute as a long int.
If possible, the type you provide is converted to the actual type of the attribute.
std::runtime_error | if the attribute does not exist or the value cannot be converted |
Definition at line 512 of file Object.h.
|
inline |
Set ReportLevel: report level; an integer in the range [0, 3] where 0 is the most verbose.
std::invalid_argument | if level is not in range [0, 3] |
Definition at line 125 of file Channel.h.
|
inline |
Set Skip: skip irrelevant data on input?
Definition at line 135 of file Channel.h.
|
inline |
Set Strict: generate errors instead of warnings?
Definition at line 138 of file Channel.h.
|
inlineinherited |
Set UseDefs: allow use of default values for Object attributes?
Definition at line 221 of file Object.h.
|
inherited |
Print a textual description the object to an ostream.
[in,out] | os | The stream to which to write the string representation. |
[in] | showComments | Show comments? |
Definition at line 158 of file Object.cc.
|
inherited |
Return a textual description the object as a string.
[in] | showComments | Show comments? |
Definition at line 165 of file Object.cc.
|
inlineinherited |
Has this attribute been explicitly set (and not subsequently cleared)?
false
.std::runtime_error | if an error results. |
Definition at line 250 of file Object.h.
|
inlineinherited |
Unlock this object previously locked using lock, so that other threads can use this object.
See lock for further details.
[in] | report | If true, an error will be reported if the supplied Object, or any Object contained within the supplied Object, is not currently locked by the running thread. If false, such Objects will be left unchanged, and no error will be reported. |
Definition at line 280 of file Object.h.
KeyMap ast::Channel::warnings | ( | ) | const |
Return a KeyMap holding the text of any warnings issued as a result of the previous invocation of read or write.
If no warnings were issued, an empty KeyMap will be returned. Such warnings are non-fatal and will not prevent the read or write operation succeeding. However, the converted object may not be identical to the original object in all respects. Differences which would usually be deemed as insignificant in most usual cases will generate a warning, whereas more significant differences will generate an error.
The " Strict" attribute allows this warning facility to be switched off, so that a fatal error is always reported for any conversion error.
Definition at line 67 of file Channel.cc.
int ast::Channel::write | ( | Object const & | object | ) |
Write an object to a channel.
Definition at line 61 of file Channel.cc.