KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
semantics::Nonterminal_elaboration< T, Traits > Class Template Reference

#include <Semantic_elaboration.h>

Inheritance diagram for semantics::Nonterminal_elaboration< T, Traits >:
semantics::Semantic_elaboration

Public Types

typedef
Nonterminal_elaboration< T,
Traits > 
Self_type
 
typedef Semantic_data< T > Data_type
 
typedef Traits Traits_t
 
typedef
Semantic_elaboration::Self_ptr 
Base_ptr
 
typedef
Semantic_elaboration::Self_ptr_const 
Base_ptr_const
 
typedef boost::shared_ptr
< Semantic_data< T > > 
Data_ptr
 
typedef Data_type::Arg_list Arg_list
 
typedef Data_type::Arg_list_s Arg_list_s
 
typedef boost::array< Base_ptr,
Traits::n_args > 
Child_array
 
- Public Types inherited from semantics::Semantic_elaboration
typedef
Semantic_data_base::Key_type 
Key_type
 
typedef
Semantic_data_base::Val_type 
Val_type
 
typedef
Semantic_data_base::Hash_pair 
Hash_pair
 
typedef boost::shared_ptr
< Semantic_elaboration
Self_ptr
 
typedef boost::shared_ptr
< const Semantic_elaboration
Self_ptr_const
 
typedef std::deque
< Self_ptr_const
Self_ptrs_read
 
typedef
Semantic_data_base::Base_ptr 
Data_base_ptr
 
typedef boost::tuple
< Self_ptr_const,
Semantic_data_base::Hash_pair
Step_result
 
typedef int Referent_code
 
typedef std::vector
< Referent_code
Referent_list
 

Public Member Functions

 Nonterminal_elaboration (const Val_type &head, const Arg_list &args, const Referent_list &referent_list=Referent_list(Traits::n_args+1, NULL_REFERENT))
 construct an elaboration from numeric codes for head and args More...
 
 Nonterminal_elaboration (const Key_type &head, const Arg_list_s &args, const Referent_list &referent_list=Referent_list(Traits::n_args+1, NULL_REFERENT))
 construct an elaboration from strings More...
 
const Val_typehead () const
 return code for head value More...
 
const Key_typehead_s () const
 return code for head value More...
 
const Val_typearg (const size_t &pos) const
 return underlying hash code for head value More...
 
const Key_typearg_s (const size_t &pos) const
 return code for head value More...
 
const size_t & head_code () const
 return underlying hash code for head value More...
 
const size_t & args_code () const
 return underlying hash code for args More...
 
size_t type_code () const
 return type code More...
 
const Data_base_ptr data () const
 return pointer to data node More...
 
const Arg_listargs () const
 return args (pass-through to data_) More...
 
Base_ptr child (const size_t &index) const
 get pointer to child elaboration in position "index" More...
 
Self_ptrs_read children () const
 access the container of children by const reference More...
 
const Referent_codehead_referent () const
 get the integral code for the referent (if it exists) More...
 
const Referent_codearg_referent (const size_t &pos) const
 get the integral code for the arg in position pos (if it exists) More...
 
const Step_code::Weightsstep_filter () const
 return binary filter array indicating allowable steps More...
 
Step_result take_a_step (const Step_code_t &step_code) const
 takes a step down the semantic tree, returning data More...
 
void set_data_args (const Arg_list &args)
 set new argument values for underyling data More...
 
void add_child (const size_t &pos, const Base_ptr child)
 add a new elaboration of argument "index", discarding any existing More...
 
void insert_child (const size_t &pos, const Base_ptr new_child, const size_t &pos_for_old)
 add child and have it adopt existing one More...
 
bool is_terminal () const
 query whether this elaboration is a terminal or not More...
 
void print (std::ostream &os) const
 print contents at this node to ostream os More...
 
void print_subtree (std::ostream &os, int indent_level=0) const
 recursively print the full elaboration tree More...
 
- Public Member Functions inherited from semantics::Semantic_elaboration
virtual ~Semantic_elaboration ()
 

Additional Inherited Members

- Static Public Attributes inherited from semantics::Semantic_elaboration
static const Referent_code NULL_REFERENT = -1
 

Member Typedef Documentation

template<class T, class Traits = Semantic_traits<T>>
typedef Data_type::Arg_list semantics::Nonterminal_elaboration< T, Traits >::Arg_list
template<class T, class Traits = Semantic_traits<T>>
typedef Data_type::Arg_list_s semantics::Nonterminal_elaboration< T, Traits >::Arg_list_s
template<class T, class Traits = Semantic_traits<T>>
typedef Semantic_elaboration::Self_ptr semantics::Nonterminal_elaboration< T, Traits >::Base_ptr
template<class T, class Traits = Semantic_traits<T>>
typedef Semantic_elaboration::Self_ptr_const semantics::Nonterminal_elaboration< T, Traits >::Base_ptr_const
template<class T, class Traits = Semantic_traits<T>>
typedef boost::array<Base_ptr, Traits::n_args> semantics::Nonterminal_elaboration< T, Traits >::Child_array
template<class T, class Traits = Semantic_traits<T>>
typedef boost::shared_ptr<Semantic_data<T> > semantics::Nonterminal_elaboration< T, Traits >::Data_ptr
template<class T, class Traits = Semantic_traits<T>>
typedef Semantic_data<T> semantics::Nonterminal_elaboration< T, Traits >::Data_type
template<class T, class Traits = Semantic_traits<T>>
typedef Nonterminal_elaboration<T, Traits> semantics::Nonterminal_elaboration< T, Traits >::Self_type
template<class T, class Traits = Semantic_traits<T>>
typedef Traits semantics::Nonterminal_elaboration< T, Traits >::Traits_t

Constructor & Destructor Documentation

template<class T , class Traits >
semantics::Nonterminal_elaboration< T, Traits >::Nonterminal_elaboration ( const Val_type head,
const Arg_list args,
const Referent_list referent_list = Referent_list(Traits::n_args + 1, NULL_REFERENT) 
)

construct an elaboration from numeric codes for head and args

Parameters
headintegral code for the value of the head (relation or object)
argsarray of integral codes for the arguments of the predicate
referent_codeintegral code of a referent corresponding to the head (if it exists).
template<class T , class Traits >
semantics::Nonterminal_elaboration< T, Traits >::Nonterminal_elaboration ( const Key_type head,
const Arg_list_s args,
const Referent_list referent_list = Referent_list(Traits::n_args + 1, NULL_REFERENT) 
)

construct an elaboration from strings

Parameters
headlabel (string) for the value of the head
argsarray of labels for the arguments of the predicate
referent_codeintegral code of a referent corresponding to the head (if it exists).

Member Function Documentation

template<class T , class Traits >
void semantics::Nonterminal_elaboration< T, Traits >::add_child ( const size_t &  pos,
const Base_ptr  child 
)
virtual

add a new elaboration of argument "index", discarding any existing

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Val_type& semantics::Nonterminal_elaboration< T, Traits >::arg ( const size_t &  pos) const
inlinevirtual

return underlying hash code for head value

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Referent_code& semantics::Nonterminal_elaboration< T, Traits >::arg_referent ( const size_t &  ) const
inlinevirtual

get the integral code for the arg in position pos (if it exists)

Reimplemented from semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Key_type& semantics::Nonterminal_elaboration< T, Traits >::arg_s ( const size_t &  pos) const
inlinevirtual

return code for head value

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Arg_list& semantics::Nonterminal_elaboration< T, Traits >::args ( ) const
inline

return args (pass-through to data_)

template<class T, class Traits = Semantic_traits<T>>
const size_t& semantics::Nonterminal_elaboration< T, Traits >::args_code ( ) const
inlinevirtual

return underlying hash code for args

Implements semantics::Semantic_elaboration.

template<class T , class Traits >
Nonterminal_elaboration< T, Traits >::Base_ptr semantics::Nonterminal_elaboration< T, Traits >::child ( const size_t &  index) const
virtual

get pointer to child elaboration in position "index"

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
Self_ptrs_read semantics::Nonterminal_elaboration< T, Traits >::children ( ) const
inlinevirtual

access the container of children by const reference

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Data_base_ptr semantics::Nonterminal_elaboration< T, Traits >::data ( ) const
inlinevirtual

return pointer to data node

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Val_type& semantics::Nonterminal_elaboration< T, Traits >::head ( ) const
inlinevirtual

return code for head value

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const size_t& semantics::Nonterminal_elaboration< T, Traits >::head_code ( ) const
inlinevirtual

return underlying hash code for head value

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Referent_code& semantics::Nonterminal_elaboration< T, Traits >::head_referent ( ) const
inlinevirtual

get the integral code for the referent (if it exists)

Reimplemented from semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
const Key_type& semantics::Nonterminal_elaboration< T, Traits >::head_s ( ) const
inlinevirtual

return code for head value

Implements semantics::Semantic_elaboration.

template<class T , class Traits >
void semantics::Nonterminal_elaboration< T, Traits >::insert_child ( const size_t &  pos,
const Base_ptr  new_child,
const size_t &  pos_for_old 
)
virtual

add child and have it adopt existing one

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
bool semantics::Nonterminal_elaboration< T, Traits >::is_terminal ( ) const
inlinevirtual

query whether this elaboration is a terminal or not

Returns
true if a terminal, false otherwise

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
void semantics::Nonterminal_elaboration< T, Traits >::print ( std::ostream &  os) const
inlinevirtual

print contents at this node to ostream os

Implements semantics::Semantic_elaboration.

template<class T , class Traits >
void semantics::Nonterminal_elaboration< T, Traits >::print_subtree ( std::ostream &  os,
int  indent_level = 0 
) const
virtual

recursively print the full elaboration tree

Implements semantics::Semantic_elaboration.

template<class T , class Traits >
void semantics::Nonterminal_elaboration< T, Traits >::set_data_args ( const Arg_list args)

set new argument values for underyling data

Parameters
argsa boost::tuple of numeric codes specifying the args
template<class T, class Traits = Semantic_traits<T>>
const Step_code::Weights& semantics::Nonterminal_elaboration< T, Traits >::step_filter ( ) const
inlinevirtual

return binary filter array indicating allowable steps

Implements semantics::Semantic_elaboration.

template<class T , class Traits >
Semantic_elaboration::Step_result semantics::Nonterminal_elaboration< T, Traits >::take_a_step ( const Step_code_t step_code) const
virtual

takes a step down the semantic tree, returning data

Parameters
step_codean enumeration code indicating the type of step to take
Returns
a tuple containing (1) a pointer to the new node, (2) a hash code for the head value of the result (3) a hash code for the args of the result

Implements semantics::Semantic_elaboration.

template<class T, class Traits = Semantic_traits<T>>
size_t semantics::Nonterminal_elaboration< T, Traits >::type_code ( ) const
inlinevirtual

return type code

Implements semantics::Semantic_elaboration.


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