Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
OutputFileRegistry.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <memory>
9#include <alib/string>
10#include <alib/map>
11#include <functional>
12
15
16namespace abstraction {
17
19 class Entry {
20 public:
21 virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & typehint ) const = 0;
22
23 virtual ~Entry ( ) = default;
24 };
25
26 class EntryImpl : public Entry {
27 std::function < std::shared_ptr < abstraction::OperationAbstraction > ( const std::string & typehint ) > m_callback;
28 public:
29 explicit EntryImpl ( std::shared_ptr < abstraction::OperationAbstraction > ( * callback ) ( const std::string & typehint ) ) : m_callback ( callback ) {
30 }
31
32 std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & typehint ) const override;
33 };
34
36
37public:
38 static void registerOutputFileHandler ( const std::string & fileType, std::shared_ptr < abstraction::OperationAbstraction > ( * callback ) ( const std::string & typehint ) );
39
40 static void unregisterOutputFileHandler ( const std::string & fileType );
41
42 static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & fileType, const std::string & typehint );
43};
44
45} /* namespace abstraction */
46
Definition: OutputFileRegistry.hpp:18
static void registerOutputFileHandler(const std::string &fileType, std::shared_ptr< abstraction::OperationAbstraction >(*callback)(const std::string &typehint))
Definition: OutputFileRegistry.cpp:15
static std::shared_ptr< abstraction::OperationAbstraction > getAbstraction(const std::string &fileType, const std::string &typehint)
Definition: OutputFileRegistry.cpp:26
static void unregisterOutputFileHandler(const std::string &fileType)
Definition: OutputFileRegistry.cpp:21
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
Definition: AlgorithmAbstraction.hpp:11
int callback(struct dl_phdr_info *info, size_t, void *data)
Definition: simpleStacktrace.cpp:25