forb
Classes | Public Types | Public Member Functions | Static Public Attributes | List of all members
forbcc::type_primitive Class Reference

Identifies one of the primitive types recognized by the library when parsing a FORB IDL file. More...

#include <type_primitive.hpp>

Inheritance diagram for forbcc::type_primitive:
forbcc::type forbcc::shareable< type_primitive > forbcc::entity

Public Types

using type_primitive_list = ordered_unique_list< ptr_const_t >
 The type of the global list of all known type_primitive pointers.
 
- Public Types inherited from forbcc::shareable< type_primitive >
using const_T = typename std::add_const< type_primitive >::type
 Alias to the same type T, but with const qualifier.
 
using ptr_t = std::shared_ptr< type_primitive >
 Alias to std::shared_ptr<T>
 
using ptr_const_t = std::shared_ptr< const_T >
 Alias to std::shared_ptr<const T>
 

Public Member Functions

 type_primitive ()
 Empty primitive type, used to preallocate variables in arrays or to use later assignment operator.
 
 type_primitive (const std::string &name, const std::string &actual_type, const size_t size)
 Each primitive types corresponds to an actual type with fixed size.
 
 ~type_primitive () override=default
 This class is virtual, so it requires a virtual destructor.
 
 type_primitive (type_primitive &&)=default
 This class supports moving.
 
type_primitiveoperator= (type_primitive &&)=default
 This class supports moving.
 
 type_primitive (const type_primitive &)=default
 This class supports copying.
 
type_primitiveoperator= (const type_primitive &)=default
 This class supports copying.
 
void print_declaration (code_ostream &) const override
 Does nothing, primitive types do not need to be declared.
 
void print_definition (code_ostream &) const override
 Does nothing, primitive types do not need to be defined.
 
std::string codename () const final
 The codename for primitive types is defined by their actual type.
 
size_t size_of () const override
 The size of the given type.
 
size_t alignment () const override
 Returns the alignment of the given type.
 
- Public Member Functions inherited from forbcc::type
 type ()
 Empty type, used to preallocate types in arrays or to use later assignment operator.
 
 type (const std::shared_ptr< module > &parent, const std::string &name)
 Using constructors from superclass.
 
 ~type () override=default
 This class is virtual, so it requires a virtual destructor.
 
 type (type &&)=default
 This class supports moving.
 
typeoperator= (type &&)=default
 This class supports moving.
 
 type (const type &)=default
 This class supports copying.
 
typeoperator= (const type &)=default
 This class supports copying.
 
virtual void print_var_declaration (code_ostream &out, const std::string &var_name) const
 Print the declaration of a variable of this type.
 
virtual void print_var_definition (code_ostream &out, const std::string &var_name, bool force_stack) const
 Print the definition of a variable of this type.
 
virtual void print_var_lvalue (code_ostream &out, const std::string &var_name, bool force_stack) const
 Print the acquisition of the value of a variable of this type.
 
void print_var_lvalue (code_ostream &out, const std::string &var_name) const
 Print the acquisition of the value of a variable of this type.
 
virtual void print_var_reference (code_ostream &out, const std::string &var_name) const
 Print the declaration of a reference to a variable of this type.
 
virtual void print_var_marshal (code_ostream &out, const std::string &var_name, const marshal &do_undo, bool force_stack) const
 Print the actions needed to either marshal or unmarshal a variable of this type.
 
void print_var_marshal (code_ostream &out, const std::string &var_name, const marshal &do_undo) const
 Print the actions needed to either marshal or unmarshal a variable of this type.
 
virtual void print_var_serialize (code_ostream &out, const std::string &var_name, const serialize &do_undo, bool force_stack) const
 Print the actions needed to either serialize or deserialize a variable of this type.
 
void print_var_serialize (code_ostream &out, const std::string &var_name, const serialize &do_undo) const
 Print the actions needed to either serialize or deserialize a variable of this type.
 
- Public Member Functions inherited from forbcc::entity
 entity ()
 Constructs an empty entity, used to preallocate entity variables (like in arrays) and to later use the assignment operator to overwrite its content.
 
 entity (const std::shared_ptr< entity > &parent, const std::string &name)
 Constructs an entity within a given parent.
 
virtual ~entity ()=default
 Does nothing because the destructor of the shared_ptr handles all the stuff It's necessary for the destructor to be virtual because share_ptrs to subclasses shall be able to correctly destruct objects of the subclasses. More...
 
 entity (entity &&)=default
 This class supports moving.
 
entityoperator= (entity &&)=default
 This class supports moving.
 
 entity (const entity &)=default
 This class supports copying.
 
entityoperator= (const entity &)=default
 This class supports copying.
 
std::shared_ptr< entityparent () const
 Returns the parent of the given entity.
 
std::string name () const
 Returns the name of the given entity.
 

Static Public Attributes

static type_primitive_list known_types
 The list of all known primitive types. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from forbcc::shareable< type_primitive >
static ptr_t new_ptr (Args &&... args)
 Calls the constructor of the class with the given arguments to create a shared_pointer to T. More...
 
static ptr_const_t new_ptr_const (Args &&... args)
 Calls the constructor of the class with the given arguments to create a shared_pointer to a const T. More...
 

Detailed Description

Identifies one of the primitive types recognized by the library when parsing a FORB IDL file.

Member Data Documentation

§ known_types

forbcc::type_primitive::type_primitive_list forbcc::type_primitive::known_types
static

The list of all known primitive types.

Basically it's a dictionary of all known primitive types, no other type may be added to this list outside than by library maintainers.


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