Fawkes API  Fawkes Development Version
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CppInterfaceGenerator Class Reference

Generator that transforms input from the InterfaceParser into valid C++ classes. More...

#include <>>

List of all members.

Public Member Functions

 CppInterfaceGenerator (std::string directory, std::string interface_name, std::string config_basename, std::string author, std::string year, std::string creation_date, std::string data_comment, const unsigned char *hash, size_t hash_size, const std::vector< InterfaceConstant > &constants, const std::vector< InterfaceEnumConstant > &enum_constants, const std::vector< InterfaceField > &data_fields, const std::vector< InterfacePseudoMap > &pseudo_maps, const std::vector< InterfaceMessage > &messages)
 Constructor.
 ~CppInterfaceGenerator ()
 Destructor.
void write_h (FILE *f)
 Write h file.
void write_cpp (FILE *f)
 Write cpp file.
void write_constants_cpp (FILE *f)
 Write constants to cpp file.
void write_constants_h (FILE *f)
 Write constants to h file.
void write_enum_constants_tostring_cpp (FILE *f)
 Write enum constant tostring methods to cpp file.
void write_messages_cpp (FILE *f)
 Write messages to cpp file.
void write_messages_h (FILE *f)
 Write messages to h file.
void write_ctor_dtor_h (FILE *f, std::stringis, std::string classname)
 Write constructor and destructor to h file.
void write_ctor_dtor_cpp (FILE *f, std::string classname, std::string super_class, std::string inclusion_prefix, std::vector< InterfaceField > fields, std::vector< InterfaceMessage > messages)
 Write constructor and destructor to cpp file.
void write_message_ctor_dtor_h (FILE *f, std::stringis, std::string classname, std::vector< InterfaceField > fields)
 Write constructor and destructor for message to h file.
void write_message_ctor_dtor_cpp (FILE *f, std::string classname, std::string super_class, std::string inclusion_prefix, std::vector< InterfaceField > fields)
 Write constructor and destructor for message to cpp file.
void write_message_clone_method_h (FILE *f, std::string is)
 Write message clone method header.
void write_message_clone_method_cpp (FILE *f, std::string classname)
 Write message clone method.
void write_methods_h (FILE *f, std::stringis, std::vector< InterfaceField > fields)
 Write methods to h file.
void write_methods_cpp (FILE *f, std::string interface_classname, std::string classname, std::vector< InterfaceField > fields, std::string inclusion_prefix, bool write_data_changed)
 Write methods to cpp file.
void write_create_message_method_cpp (FILE *f)
 Write create_message() method to cpp file.
void write_copy_value_method_cpp (FILE *f)
 Write copy_value() method to CPP file.
void write_enum_tostring_method_cpp (FILE *f)
 Write enum_tostring() method to CPP file.
void write_basemethods_h (FILE *f, std::string is)
 Write base methods header entries.
void write_basemethods_cpp (FILE *f)
 Write base methods.
void write_methods_h (FILE *f, std::stringis, std::vector< InterfaceField > fields, std::vector< InterfacePseudoMap > pseudo_maps)
 Write methods to h file.
void write_methods_cpp (FILE *f, std::string interface_classname, std::string classname, std::vector< InterfaceField > fields, std::vector< InterfacePseudoMap > pseudo_maps, std::string inclusion_prefix)
 Write methods to cpp file including pseudo maps.
void write_management_funcs_cpp (FILE *f)
 Write management functions.
void write_add_fieldinfo_calls (FILE *f, std::vector< InterfaceField > &fields)
 Write the add_fieldinfo() calls.
void write_struct (FILE *f, std::string name, std::stringis, std::vector< InterfaceField > fields)
 Write optimized struct.
void write_header (FILE *f, std::string filename)
 Write header to file.
void write_deflector (FILE *f)
 Write header deflector.
void generate ()
 Generator cpp and h files.

Detailed Description

Generator that transforms input from the InterfaceParser into valid C++ classes.

Definition at line 36 of file cpp_generator.h.


Constructor & Destructor Documentation

CppInterfaceGenerator::CppInterfaceGenerator ( std::string  directory,
std::string  interface_name,
std::string  config_basename,
std::string  author,
std::string  year,
std::string  creation_date,
std::string  data_comment,
const unsigned char *  hash,
size_t  hash_size,
const std::vector< InterfaceConstant > &  constants,
const std::vector< InterfaceEnumConstant > &  enum_constants,
const std::vector< InterfaceField > &  data_fields,
const std::vector< InterfacePseudoMap > &  pseudo_maps,
const std::vector< InterfaceMessage > &  messages 
)

Constructor.

Parameters:
directoryDirectory where to create the files
interface_namename of the interface, should end with Interface
config_basenamebasename of the config without suffix
authorauthor of interface
yearyear of copyright
creation_dateuser-supplied creation date of interface
data_commentcomment in data block.
hashMD5 hash of the config file that was used to generate the interface
hash_sizesize in bytes of hash
constantsconstants
enum_constantsconstants defined as an enum
data_fieldsdata fields of the interface
pseudo_mapspseudo maps of the interface
messagesmessages defined in the interface

Definition at line 58 of file cpp_generator.cpp.

References fawkes::StringConversions::to_upper().

CppInterfaceGenerator::~CppInterfaceGenerator ( )

Destructor.

Definition at line 102 of file cpp_generator.cpp.


Member Function Documentation

void CppInterfaceGenerator::generate ( )

Generator cpp and h files.

Definition at line 1166 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_add_fieldinfo_calls ( FILE *  f,
std::vector< InterfaceField > &  fields 
)

Write the add_fieldinfo() calls.

Parameters:
ffile to write to
fieldsfields to write field info for

Definition at line 598 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_basemethods_cpp ( FILE *  f)

Write base methods.

Parameters:
ffile to write to

Definition at line 501 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_basemethods_h ( FILE *  f,
std::string  is 
)

Write base methods header entries.

Parameters:
ffile to write to
isindentation string

Definition at line 1112 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_constants_cpp ( FILE *  f)

Write constants to cpp file.

Parameters:
ffile to write to

Definition at line 251 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_constants_h ( FILE *  f)

Write constants to h file.

Parameters:
ffile to write to

Definition at line 305 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_copy_value_method_cpp ( FILE *  f)

Write copy_value() method to CPP file.

Parameters:
ffile to write to

Definition at line 454 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_cpp ( FILE *  f)

Write cpp file.

Parameters:
ffile to write to

Definition at line 204 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_create_message_method_cpp ( FILE *  f)

Write create_message() method to cpp file.

Parameters:
ffile to write to

Definition at line 418 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_ctor_dtor_cpp ( FILE *  f,
std::string  classname,
std::string  super_class,
std::string  inclusion_prefix,
std::vector< InterfaceField fields,
std::vector< InterfaceMessage messages 
)

Write constructor and destructor to cpp file.

Parameters:
ffile to write to
classnamename of class
super_classname of base class
inclusion_prefixUsed if class is included in another class.
fieldsfields
messagesmessages

Definition at line 659 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_ctor_dtor_h ( FILE *  f,
std::string  is,
std::string  classname 
)

Write constructor and destructor to h file.

Parameters:
ffile to write to
isindentation space
classnamename of class

Definition at line 515 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_deflector ( FILE *  f)

Write header deflector.

Parameters:
ffile to write to

Definition at line 193 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_enum_constants_tostring_cpp ( FILE *  f)

Write enum constant tostring methods to cpp file.

Parameters:
ffile to write to

Definition at line 274 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_enum_tostring_method_cpp ( FILE *  f)

Write enum_tostring() method to CPP file.

Parameters:
ffile to write to

Definition at line 478 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_h ( FILE *  f)

Write h file.

Parameters:
ffile to write to

Definition at line 1125 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_header ( FILE *  f,
std::string  filename 
)

Write header to file.

Parameters:
ffile to write to
filenamename of file

Definition at line 156 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_management_funcs_cpp ( FILE *  f)

Write management functions.

Parameters:
ffile to write to

Definition at line 237 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_message_clone_method_cpp ( FILE *  f,
std::string  classname 
)

Write message clone method.

Parameters:
ffile to write to
classnamename of message class

Definition at line 578 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_message_clone_method_h ( FILE *  f,
std::string  is 
)

Write message clone method header.

Parameters:
ffile to write to
isindentation space

Definition at line 567 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_message_ctor_dtor_cpp ( FILE *  f,
std::string  classname,
std::string  super_class,
std::string  inclusion_prefix,
std::vector< InterfaceField fields 
)

Write constructor and destructor for message to cpp file.

Parameters:
ffile to write to
classnamename of class
super_classname of base class
inclusion_prefixUsed if class is included in another class.
fieldsvector of data fields of message

Definition at line 713 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_message_ctor_dtor_h ( FILE *  f,
std::string  is,
std::string  classname,
std::vector< InterfaceField fields 
)

Write constructor and destructor for message to h file.

Parameters:
ffile to write to
isindentation space
classnamename of class
fieldsvector of data fields of message

Definition at line 533 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_messages_cpp ( FILE *  f)

Write messages to cpp file.

Parameters:
ffile to write to

Definition at line 373 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_messages_h ( FILE *  f)

Write messages to h file.

Parameters:
ffile to write to

Definition at line 345 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_methods_cpp ( FILE *  f,
std::string  interface_classname,
std::string  classname,
std::vector< InterfaceField fields,
std::string  inclusion_prefix,
bool  write_data_changed 
)

Write methods to cpp file.

Parameters:
ffile to write to
interface_classnamename of the interface class
classnamename of class (can be interface or message)
fieldsfields
inclusion_prefixused if class is included in another class.
write_data_changedif true writes code that sets the interface's data_changed flag. Set to true for interface methods, false for message methods.

Definition at line 834 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_methods_cpp ( FILE *  f,
std::string  interface_classname,
std::string  classname,
std::vector< InterfaceField fields,
std::vector< InterfacePseudoMap pseudo_maps,
std::string  inclusion_prefix 
)

Write methods to cpp file including pseudo maps.

Parameters:
ffile to write to
interface_classnamename of the interface class
classnamename of class (can be interface or message)
fieldsfields
pseudo_mapspseudo maps
inclusion_prefixused if class is included in another class.

Definition at line 972 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_methods_h ( FILE *  f,
std::string  is,
std::vector< InterfaceField fields 
)

Write methods to h file.

Parameters:
ffile to write to
isindentation space.
fieldsfields to write accessor methods for.

Definition at line 1049 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_methods_h ( FILE *  f,
std::string  is,
std::vector< InterfaceField fields,
std::vector< InterfacePseudoMap pseudo_maps 
)

Write methods to h file.

Parameters:
ffile to write to
isindentation space.
fieldsfields to write accessor methods for.
pseudo_mapspseudo maps

Definition at line 1089 of file cpp_generator.cpp.

void CppInterfaceGenerator::write_struct ( FILE *  f,
std::string  name,
std::string  is,
std::vector< InterfaceField fields 
)

Write optimized struct.

Create struct, try align data well, sort fields:

  1. unsigned int
  2. int
  3. unsigned long int
  4. long int
  5. float
  6. double
  7. bool
  8. byte
  1. string
    Parameters:
    ffile to write to
    namename of struct
    isindentation space
    fieldsfields for struct

Definition at line 125 of file cpp_generator.cpp.


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