Parsnip
parsing library
Public Types | Public Member Functions
Parsnip::ListSchema Class Reference

Schema component for lists. More...

#include <parsnip_schema.h>

Inheritance diagram for Parsnip::ListSchema:
Parsnip::SchemaBase

Public Types

using size_type = Data::ListType::size_type
 

Public Member Functions

 ListSchema (const ListSchema &from)=default
 
 ListSchema (ListSchema &&)=default
 
ListSchemaoperator= (const ListSchema &from)=default
 
ListSchemaoperator= (ListSchema &&)=default
 
 ListSchema (SchemaBaseRef &&, size_type minimum=0, size_type maximum=std::numeric_limits< size_type >::max())
 Construct a list schema (move variant). More...
 
 ListSchema (const SchemaBase &, size_type minimum=0, size_type maximum=std::numeric_limits< size_type >::max())
 Construct a list schema (cppy variant). More...
 
 ListSchema (const Parsnip::Data &schema_spec)
 Construct a list schema from a schema specification. More...
 
virtual ListSchemacreateCopy () const override
 Create an identical, deep copy of the schema. More...
 
virtual void validate (const Parsnip::Data &entry) const override
 Validate a list: ensure all elements conform to a single schema.
 
virtual bool operator== (const SchemaBase &other) const override
 Check if two schemas perform the same validation. More...
 
virtual void mergeSchemas (const SchemaBase &from) override
 Merge elements into the current schema. More...
 
virtual std::ostream & dump (std::ostream &target, int indent, bool suppress_ident=false) const override
 Render the schema in human-friendly text. More...
 
- Public Member Functions inherited from Parsnip::SchemaBase
bool operator!= (const SchemaBase &other) const
 

Additional Inherited Members

- Protected Types inherited from Parsnip::SchemaBase
using StringType = Data::StringType
 
using SchemaRegex = std::basic_regex< StringType::value_type >
 
- Protected Member Functions inherited from Parsnip::SchemaBase
 SchemaBase (const SchemaBase &)=default
 
 SchemaBase (SchemaBase &&)=default
 
SchemaBaseoperator= (const SchemaBase &)=default
 
SchemaBaseoperator= (SchemaBase &&)=default
 
 SchemaBase (const Parsnip::Data &schema_spec)
 Construct a schema from a JSON specification. More...
 
void checkType (Data::Type expected, const Parsnip::Data &entry) const
 Check that Data item is an allowed type. More...
 
bool isValidlyNull (const Parsnip::Data &entry) const
 Determine if the data is Null and if that is allowed. More...
 
bool isType (Data::Type expected, const Parsnip::Data &entry) const
 Check if a data object is a particular type. More...
 
- Protected Attributes inherited from Parsnip::SchemaBase
bool nullable = false
 If true, element may be null.
 

Detailed Description

Schema component for lists.

Note this expects list members to all be uniform element type.

Constructor & Destructor Documentation

◆ ListSchema() [1/3]

Parsnip::ListSchema::ListSchema ( SchemaBaseRef &&  from,
size_type  minimum = 0,
size_type  maximum = std::numeric_limits<size_type>::max() 
)

Construct a list schema (move variant).

Parameters
fromA schema to validate the list members.
minimumThe number of list members mandated.
maximumThe number of list members allowed.

◆ ListSchema() [2/3]

Parsnip::ListSchema::ListSchema ( const SchemaBase member_schema,
size_type  minimum = 0,
size_type  maximum = std::numeric_limits<size_type>::max() 
)

Construct a list schema (cppy variant).

Parameters
member_schemaA schema to validate the list members.
minimumThe number of list members mandated.
maximumThe number of list members allowed.

◆ ListSchema() [3/3]

Parsnip::ListSchema::ListSchema ( const Parsnip::Data schema_spec)

Construct a list schema from a schema specification.

Do nothing.

Member Function Documentation

◆ createCopy()

ListSchema * Parsnip::ListSchema::createCopy ( ) const
overridevirtual

Create an identical, deep copy of the schema.

Caller is responsible for deleting it.

Implements Parsnip::SchemaBase.

◆ dump()

std::ostream & Parsnip::ListSchema::dump ( std::ostream &  target,
int  indent,
bool  suppress_indent = false 
) const
overridevirtual

Render the schema in human-friendly text.

Parameters
targetWhere to write the schema.
indentAmount of indent to use.
suppress_indentFlag indicating indent was already performed.

Implements Parsnip::SchemaBase.

◆ mergeSchemas()

void Parsnip::ListSchema::mergeSchemas ( const SchemaBase from)
overridevirtual

Merge elements into the current schema.

Merge elements managed by this class.

  • Elements seen every time are mandatory.
  • Elements seen only sometime are optional.
  • Elements always seen together are codependent.
  • Elements must always expect similar types, except they may vary as element and list-of-same-element.
    Parameters
    fromA schema for a valid command command line.
    Exceptions
    Variousexceptions.

Reimplemented from Parsnip::SchemaBase.

◆ operator==()

bool Parsnip::ListSchema::operator== ( const SchemaBase other) const
overridevirtual

Check if two schemas perform the same validation.

Compare two schemas to see if they determine validity in the same manner.

Parameters
otherThe schema to compare to.
Returns
True if the schemas match, false otherwise.

Reimplemented from Parsnip::SchemaBase.


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