OpenWalnut  1.2.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
WModuleProjectFileCombiner Class Reference

This class is able to parse project files and create the appropriate module graph inside a specified container. More...

#include <WModuleProjectFileCombiner.h>

+ Inheritance diagram for WModuleProjectFileCombiner:

List of all members.

Public Member Functions

 WModuleProjectFileCombiner (boost::shared_ptr< WModuleContainer > target)
 Creates an empty combiner.
 WModuleProjectFileCombiner ()
 Creates an empty combiner.
virtual ~WModuleProjectFileCombiner ()
 Destructor.
virtual void apply ()
 Apply the internal module structure to the target container.
virtual bool parse (std::string line, unsigned int lineNumber)
 This method parses the specified line and interprets it to fill the internal module graph structure.
virtual void done ()
 Called whenever the end of the project file has been reached.
virtual void save (std::ostream &output)
 Saves the state to the specified stream.
- Public Member Functions inherited from WModuleCombiner
 WModuleCombiner (boost::shared_ptr< WModuleContainer > target)
 Creates an empty combiner.
 WModuleCombiner ()
 Creates an empty combiner.
virtual ~WModuleCombiner ()
 Destructor.
virtual void run ()
 Run thread and call apply().
- Public Member Functions inherited from WThreadedRunner
 WThreadedRunner ()
 Default constructor.
virtual ~WThreadedRunner ()
 Destructor.
void run (THREADFUNCTION f)
 Run thread.
void wait (bool requestFinish=false)
 Wait for the thread to be finished.
virtual void requestStop ()
 This method's purpose is to request a stop without waiting for it.
- Public Member Functions inherited from WProjectFileIO
 WProjectFileIO ()
 Default constructor.
virtual ~WProjectFileIO ()
 Destructor.

Protected Types

typedef std::pair< unsigned
int, boost::shared_ptr
< WModule > > 
ModuleID
 The module ID type.
typedef std::pair< unsigned
int, std::string > 
Connector
 A connector is described by ID and name.
typedef std::pair< Connector,
Connector
Connection
 A connection is a pair of connectors.
typedef std::pair< unsigned
int, std::string > 
Property
 A property is a pair of ID and name.
typedef std::pair< Property,
std::string > 
PropertyValue
 A property value is a property and the new value as string.

Protected Member Functions

void printProperties (std::ostream &output, boost::shared_ptr< WProperties > props, std::string indent, std::string prefix, unsigned int module)
 Recursively prints the properties and nested properties.
- Protected Member Functions inherited from WModuleCombiner
virtual void threadMain ()
 Function that has to be overwritten for execution.
- Protected Member Functions inherited from WThreadedRunner
virtual void notifyStop ()
 Gets called when the thread should be stopped.
void yield () const
 Give remaining execution timeslice to another thread.
void sleep (const int32_t t) const
 Sets thread asleep.
void msleep (const int32_t t) const
 Sets thread asleep.
void waitForStop ()
 Let the thread sleep until a stop request was given.

Protected Attributes

std::map< unsigned int,
boost::shared_ptr< WModule > > 
m_modules
 All Modules.
std::list< Connectionm_connections
 All connections.
std::list< PropertyValuem_properties
 All properties.
- Protected Attributes inherited from WModuleCombiner
boost::shared_ptr
< WModuleContainer
m_container
 The module container to use for the modules.
- Protected Attributes inherited from WThreadedRunner
boost::thread m_thread
 Thread instance.
WBoolFlag m_shutdownFlag
 Condition getting fired whenever the thread should quit.

Detailed Description

This class is able to parse project files and create the appropriate module graph inside a specified container.

It is also derived from WProjectFileIO to allow WProjectFile to fill this combiner.

Definition at line 46 of file WModuleProjectFileCombiner.h.


Member Typedef Documentation

A connection is a pair of connectors.

Definition at line 122 of file WModuleProjectFileCombiner.h.

typedef std::pair< unsigned int, std::string > WModuleProjectFileCombiner::Connector
protected

A connector is described by ID and name.

Definition at line 117 of file WModuleProjectFileCombiner.h.

typedef std::pair< unsigned int, boost::shared_ptr< WModule > > WModuleProjectFileCombiner::ModuleID
protected

The module ID type.

A pair of ID and pointer to module.

Definition at line 107 of file WModuleProjectFileCombiner.h.

typedef std::pair< unsigned int, std::string > WModuleProjectFileCombiner::Property
protected

A property is a pair of ID and name.

Definition at line 132 of file WModuleProjectFileCombiner.h.

typedef std::pair< Property, std::string > WModuleProjectFileCombiner::PropertyValue
protected

A property value is a property and the new value as string.

Definition at line 137 of file WModuleProjectFileCombiner.h.


Constructor & Destructor Documentation

WModuleProjectFileCombiner::WModuleProjectFileCombiner ( boost::shared_ptr< WModuleContainer target)
explicit

Creates an empty combiner.

Parameters:
targetthe target container where to add the modules to.

Definition at line 55 of file WModuleProjectFileCombiner.cpp.

WModuleProjectFileCombiner::WModuleProjectFileCombiner ( )

Creates an empty combiner.

This constructor automatically uses the kernel's root container as target container.

Definition at line 61 of file WModuleProjectFileCombiner.cpp.

WModuleProjectFileCombiner::~WModuleProjectFileCombiner ( )
virtual

Destructor.

Definition at line 67 of file WModuleProjectFileCombiner.cpp.


Member Function Documentation

void WModuleProjectFileCombiner::apply ( )
virtual

Apply the internal module structure to the target container.

Be aware, that this operation might take some time, as modules can be connected only if they are "ready", which, at least with WDataModule modules, might take some time. It applies the loaded project file.

Notes:
the loader for project files is very tolerant. It does not abort. It tries to load as much as possible. The only exception that gets thrown whenever the file could not be opened.
Exceptions:
WFileNotFoundwhenever the project file could not be opened.

Implements WModuleCombiner.

Definition at line 170 of file WModuleProjectFileCombiner.cpp.

References wlog::error(), m_connections, WModuleCombiner::m_container, m_modules, m_properties, and wlog::warn().

Referenced by done().

void WModuleProjectFileCombiner::done ( )
virtual

Called whenever the end of the project file has been reached.

This is useful if your specific parser class wants to do some post processing after parsing line by line.

Reimplemented from WProjectFileIO.

Definition at line 307 of file WModuleProjectFileCombiner.cpp.

References apply().

bool WModuleProjectFileCombiner::parse ( std::string  line,
unsigned int  lineNumber 
)
virtual

This method parses the specified line and interprets it to fill the internal module graph structure.

Parameters:
linethe current line as string
lineNumberthe current line number. Useful for error/warning/debugging output.
Returns:
true if the line could be parsed.

Implements WProjectFileIO.

Definition at line 72 of file WModuleProjectFileCombiner.cpp.

References wlog::debug(), wlog::error(), WModuleFactory::getModuleFactory(), m_connections, m_modules, and m_properties.

void WModuleProjectFileCombiner::printProperties ( std::ostream &  output,
boost::shared_ptr< WProperties props,
std::string  indent,
std::string  prefix,
unsigned int  module 
)
protected

Recursively prints the properties and nested properties.

Parameters:
outputthe output stream to print to
propsthe properties to recursively print
indentthe indentation level
prefixthe prefix (name prefix of property)
modulethe module ID to use

Definition at line 312 of file WModuleProjectFileCombiner.cpp.

Referenced by save().

void WModuleProjectFileCombiner::save ( std::ostream &  output)
virtual

Saves the state to the specified stream.

Parameters:
outputthe stream to print the state to.

Implements WProjectFileIO.

Definition at line 350 of file WModuleProjectFileCombiner.cpp.

References WPrototyped::getName(), WKernel::getRootContainer(), WKernel::getRunningKernel(), and printProperties().


Member Data Documentation

std::list< Connection > WModuleProjectFileCombiner::m_connections
protected

All connections.

Definition at line 127 of file WModuleProjectFileCombiner.h.

Referenced by apply(), and parse().

std::map< unsigned int, boost::shared_ptr< WModule > > WModuleProjectFileCombiner::m_modules
protected

All Modules.

Definition at line 112 of file WModuleProjectFileCombiner.h.

Referenced by apply(), and parse().

std::list< PropertyValue > WModuleProjectFileCombiner::m_properties
protected

All properties.

Definition at line 142 of file WModuleProjectFileCombiner.h.

Referenced by apply(), and parse().


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