std::string GetName() const final
Return the name of this design step.
const IndentedOutputStreamRef indented_output_stream
The output stream.
Class used to write the C code representing a program, this class can't be directly instantiated sinc...
RelationshipType
The relationship type.
This class manages the tree structures extracted from the raw file.
std::string GetSignature() const final
Return a unified identifier of this design step.
void compute_variables(const OpGraphConstRef inGraph, const CustomUnorderedSet< unsigned int > &gblVariables, std::list< unsigned int > &funParams, CustomUnorderedSet< unsigned int > &vars)
Computes the variables which have to be declared for a function.
Class specification of the graph structures.
The base class for design step.
const tree_managerConstRef TM
The tree_manager.
Definition of hash function for EdgeDescriptor.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
A set of operation vertices.
Abstract pure class for the tree structure.
virtual void writeIncludes()
Writes the file header, i.e the comments at the beginning of the file.
CONSTREF_FORWARD_DECL(BehavioralHelper)
Base class for step of design flow.
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory() const override
Return the factory to create this type of steps.
void ComputeRelationships(DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
Compute the relationships of a step with other steps.
redefinition of set to manage ordered/unordered structures
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
Class simply used to drive the backend in order to print C code.
DesignFlowStep_Status
The status of a step.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
const CBackendInformationConstRef c_backend_info
Template definition of refcount.
const CWriterRef GetCWriter() const
virtual void WriteGlobalDeclarations()
Write the global declarations.
const CWriterRef writer
the writer
DesignFlowStep_Status Exec() override
Execute the step.
virtual void AnalyzeInclude(const tree_nodeConstRef &tn, const BehavioralHelperConstRef &BH, CustomOrderedSet< std::string > &includes)
Analyze a variable or a type to identify the includes to be added.
CustomOrderedSet< unsigned int > functions_to_be_declared
This set usually is equal to the set of functions without a body.
virtual void writeImplementations()
REF_FORWARD_DECL(CWriter)
CustomUnorderedSet< unsigned int > already_visited
The set of already analyzed nodes during search of header to include; it is used to avoid infinite re...
Class to print indented code.
Class used to describe a particular graph with operations as nodes.
CustomOrderedSet< unsigned int > functions_to_be_defined
CBackend(const CBackendInformationConstRef c_backend_information, const DesignFlowManagerConstRef design_flow_manager, const application_managerConstRef AppM, const ParameterConstRef _parameters)
Constructor.
static std::string ComputeSignature(const CBackendInformationConstRef type)
Compute the signature for a c backend step.
const application_managerConstRef AppM
the manager of the application