Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends
vil_nitf2_tagged_record_definition Class Reference

vil_nitf2_tagged_record_definition defines a particular tagged record extension (TRE). More...

#include <vil_nitf2_tagged_record_definition.h>

List of all members.

Public Types

typedef vcl_map< vcl_string,
vil_nitf2_tagged_record_definition * > 
tagged_record_definition_map

Public Member Functions

vil_nitf2_tagged_record_definitionfield (vcl_string field_name, vcl_string pretty_name, vil_nitf2_field_formatter *formatter, bool blanks_ok=false, vil_nitf2_field_functor< int > *width_functor=0, vil_nitf2_field_functor< bool > *condition_functor=0, vcl_string units="", vcl_string description="")
 Define a field. Assumes ownership of pointer arguments.
vil_nitf2_tagged_record_definitionrepeat (vil_nitf2_field_functor< int > *repeat_functor, vil_nitf2_field_definitions &field_definitions)
 Define a repeat node. Assumes ownership of pointer argument.
vil_nitf2_tagged_record_definitionrepeat (vcl_string int_tag, vil_nitf2_field_definitions &field_definitions)
 Convenience overload where repeat count is simply the value of a tag.
vil_nitf2_tagged_record_definitionrepeat (int repeat_count, vil_nitf2_field_definitions &field_definitions)
 Convenience overload where repeat count is a fixed value.
void end ()
 Declares that definition is finished, preventing further invocations of field() or repeat().
vil_nitf2_field_definitionfind_field (vcl_string name)
 Look up a field definition.
 ~vil_nitf2_tagged_record_definition ()
const vil_nitf2_field_definitionsfield_definitions () const
 Return field definitions.

Static Public Member Functions

static
vil_nitf2_tagged_record_definition
define (vcl_string name, vcl_string pretty_name)
 Factory method. Assumes ownership of optional pointer argument.
static
vil_nitf2_tagged_record_definition
find (vcl_string name)
 Look up a record definition.
static
tagged_record_definition_map
all_definitions ()
 All tagged record definitions.
static bool undefine (vcl_string name)
 Undefines a TRE. Returns whether TRE with specified name was found.
static void register_test_tre ()
 Registers some TREs for testing.

Private Member Functions

 vil_nitf2_tagged_record_definition (const vil_nitf2_tagged_record_definition &)
vil_nitf2_tagged_record_definitionoperator= (const vil_nitf2_tagged_record_definition &)
 vil_nitf2_tagged_record_definition (vcl_string name, vcl_string pretty_name, vil_nitf2_field_definitions *defs=0)

Private Attributes

vcl_string m_name
vcl_string m_pretty_name
vil_nitf2_field_definitionsm_field_definitions
bool m_definition_completed

Friends

class vil_nitf2_tagged_record

Detailed Description

vil_nitf2_tagged_record_definition defines a particular tagged record extension (TRE).

It consists of its name and an ordered list of vil_nitf2_field_definitions. It also defines a static method to look up a TRE definition by name.

The primary goal of this class design to provide a succinct way for the programmer to specify a NITF tagged record definition, which can be used for both reading and writing the record. The definition must support references to values of other fields in the record, which are needed to define conditional and repeating fields. Please see the example definition in method test().

Definition at line 32 of file vil_nitf2_tagged_record_definition.h.


Member Typedef Documentation

Definition at line 84 of file vil_nitf2_tagged_record_definition.h.


Constructor & Destructor Documentation

vil_nitf2_tagged_record_definition::~vil_nitf2_tagged_record_definition ( )

Definition at line 111 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition::vil_nitf2_tagged_record_definition ( const vil_nitf2_tagged_record_definition ) [private]
vil_nitf2_tagged_record_definition::vil_nitf2_tagged_record_definition ( vcl_string  name,
vcl_string  pretty_name,
vil_nitf2_field_definitions defs = 0 
) [private]

Definition at line 31 of file vil_nitf2_tagged_record_definition.cxx.


Member Function Documentation

vil_nitf2_tagged_record_definition::tagged_record_definition_map & vil_nitf2_tagged_record_definition::all_definitions ( ) [static]

All tagged record definitions.

Definition at line 13 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition & vil_nitf2_tagged_record_definition::define ( vcl_string  name,
vcl_string  pretty_name 
) [static]

Factory method. Assumes ownership of optional pointer argument.

Definition at line 40 of file vil_nitf2_tagged_record_definition.cxx.

void vil_nitf2_tagged_record_definition::end ( )

Declares that definition is finished, preventing further invocations of field() or repeat().

Definition at line 99 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition & vil_nitf2_tagged_record_definition::field ( vcl_string  field_name,
vcl_string  pretty_name,
vil_nitf2_field_formatter formatter,
bool  blanks_ok = false,
vil_nitf2_field_functor< int > *  width_functor = 0,
vil_nitf2_field_functor< bool > *  condition_functor = 0,
vcl_string  units = "",
vcl_string  description = "" 
)

Define a field. Assumes ownership of pointer arguments.

Definition at line 63 of file vil_nitf2_tagged_record_definition.cxx.

const vil_nitf2_field_definitions& vil_nitf2_tagged_record_definition::field_definitions ( ) const [inline]

Return field definitions.

Definition at line 89 of file vil_nitf2_tagged_record_definition.h.

vil_nitf2_tagged_record_definition * vil_nitf2_tagged_record_definition::find ( vcl_string  name) [static]

Look up a record definition.

Definition at line 104 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_field_definition* vil_nitf2_tagged_record_definition::find_field ( vcl_string  name)

Look up a field definition.

vil_nitf2_tagged_record_definition& vil_nitf2_tagged_record_definition::operator= ( const vil_nitf2_tagged_record_definition ) [private]
void vil_nitf2_tagged_record_definition::register_test_tre ( ) [static]

Registers some TREs for testing.

Definition at line 128 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition & vil_nitf2_tagged_record_definition::repeat ( vil_nitf2_field_functor< int > *  repeat_functor,
vil_nitf2_field_definitions field_definitions 
)

Define a repeat node. Assumes ownership of pointer argument.

Definition at line 85 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition & vil_nitf2_tagged_record_definition::repeat ( vcl_string  int_tag,
vil_nitf2_field_definitions field_definitions 
)

Convenience overload where repeat count is simply the value of a tag.

Definition at line 116 of file vil_nitf2_tagged_record_definition.cxx.

vil_nitf2_tagged_record_definition & vil_nitf2_tagged_record_definition::repeat ( int  repeat_count,
vil_nitf2_field_definitions field_definitions 
)

Convenience overload where repeat count is a fixed value.

Definition at line 122 of file vil_nitf2_tagged_record_definition.cxx.

bool vil_nitf2_tagged_record_definition::undefine ( vcl_string  name) [static]

Undefines a TRE. Returns whether TRE with specified name was found.

Definition at line 52 of file vil_nitf2_tagged_record_definition.cxx.


Friends And Related Function Documentation

friend class vil_nitf2_tagged_record [friend]

Definition at line 34 of file vil_nitf2_tagged_record_definition.h.


Member Data Documentation

Definition at line 117 of file vil_nitf2_tagged_record_definition.h.

Definition at line 116 of file vil_nitf2_tagged_record_definition.h.

Definition at line 114 of file vil_nitf2_tagged_record_definition.h.

Definition at line 115 of file vil_nitf2_tagged_record_definition.h.


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