2 #ifndef AFW_TABLE_Schema_h_INCLUDED
3 #define AFW_TABLE_Schema_h_INCLUDED
7 #include "boost/shared_ptr.hpp"
8 #include "boost/ref.hpp"
18 namespace lsst {
namespace afw {
namespace table {
69 std::string
join(std::string
const & a, std::string
const &
b)
const;
71 std::string
join(std::string
const & a, std::string
const &
b, std::string
const & c)
const {
75 std::string
const & a, std::string
const &
b, std::string
const & c, std::string
const &
d
127 std::set<std::string>
getNames(
bool topOnly=
false)
const;
151 template <
typename T>
162 template <
typename T>
164 std::string
const & name, std::string
const & doc, std::string
const & units =
"",
178 template <
typename T>
180 std::string
const & name, std::string
const & doc,
FieldBase<T> const & base,
187 template <
typename T>
201 template <
typename F>
204 std::for_each(
_impl->getItems().begin(),
_impl->getItems().end(), visitor);
244 template <
typename T>
275 explicit Schema(
int version);
375 template <
typename T>
379 SubSchema
operator[](std::string
const & name)
const;
390 std::set<std::string>
getNames(
bool topOnly=
false)
const;
398 template <
typename T>
407 template <
typename T>
421 inline SubSchema
Schema::operator[](std::
string const & name)
const {
427 #endif // !AFW_TABLE_Schema_h_INCLUDED
daf::base::Citizen & getCitizen()
Get the Citizen corresponding to this Schema (SchemaImpl is what inherits from Citizen).
Defines the fields and offsets for a table.
Field base class default implementation (used for numeric scalars and Angle).
Schema()
Construct an empty Schema.
void forEach(F func) const
Apply a functor to each SchemaItem in the Schema.
A proxy type for name lookups in a Schema.
boost::shared_ptr< Impl > _impl
ComparisonFlags
Bit flags used when comparing schemas.
Keys have the same types offsets, and sizes.
boost::shared_ptr< AliasMap > getAliasMap() const
std::string const & _name
static int const DEFAULT_VERSION
Class for storing ordered metadata with comments.
Mapping class that holds aliases for a Schema.
void disconnectAliases()
Sever the connection between this schema and any others with which it shares aliases.
int getVersion() const
Return the table's version.
std::set< std::string > getNames(bool topOnly=false) const
Return a set of field names in the schema.
Key< T > addField(Field< T > const &field, bool doReplace=false)
Add a new field to the Schema, and return the associated Key.
void _edit()
Copy on write; should be called by all mutators (except for alias mutators).
int getFlagFieldCount() const
The number of Flag fields.
boost::shared_ptr< AliasMap > _aliases
Key< T > addField(std::string const &name, std::string const &doc, std::string const &units="", FieldBase< T > const &base=FieldBase< T >(), bool doReplace=false)
Add a new field to the Schema, and return the associated Key.
Fields have the same units (ordered).
Fields have the same names (ordered).
int getFieldCount() const
The total number of fields.
Key< T > addField(std::string const &name, std::string const &doc, FieldBase< T > const &base, bool doReplace=false)
Add a new field to the Schema, and return the associated Key.
int getRecordSize() const
Return the raw size of a record in bytes.
A description of a field in a table.
SubSchema operator[](std::string const &name) const
Look up a (possibly incomplete) name in the Schema.
int compare(Schema const &other, int flags=EQUAL_KEYS) const
Do a detailed equality comparison of two schemas.
A private implementation class to hide the messy details of Schema.
std::string join(std::string const &a, std::string const &b, std::string const &c, std::string const &d) const
Join strings using the field delimiter appropriate for this Schema's version.
bool operator!=(Schema const &other) const
Equality comparison.
std::string const & getPrefix() const
Return the prefix that defines this SubSchema relative to its parent Schema.
A functor-wrapper used in the implementation of Schema::forEach.
friend std::ostream & operator<<(std::ostream &os, Schema const &schema)
Stringification.
int getNonFlagFieldCount() const
The number of non-Flag fields.
int contains(Schema const &other, int flags=EQUAL_KEYS) const
Test whether the given schema is a subset of this.
void setVersion(int version)
Set the table's version.
A class used as a handle to a particular field in a table.
std::string join(std::string const &a, std::string const &b) const
Join strings using the field delimiter appropriate for this Schema's version.
void replaceField(Key< T > const &key, Field< T > const &field)
Replace the Field (name/description) for an existing Key.
bool operator==(Schema const &other) const
Equality comparison.
std::string join(std::string const &a, std::string const &b, std::string const &c) const
Join strings using the field delimiter appropriate for this Schema's version.
afw::table::Key< double > b
SchemaItem< T > find(std::string const &name) const
Find a SchemaItem in the Schema by name.
SchemaItem< T > find(std::string const &name) const
Find an item by name (used to implement Schema::find).
Citizen is a class that should be among all LSST classes base classes, and handles basic memory manag...
static int const DEFAULT_VERSION
void setAliasMap(boost::shared_ptr< AliasMap > aliases)
Fields have the same documentation (ordered).
A simple pair-like struct for mapping a Field (name and description) with a Key (used for actual data...