AmpGen 2.1
Loading...
Searching...
No Matches
CompiledExpressionBase.h
Go to the documentation of this file.
1#ifndef AMPGEN_COMPILEDEXPRESSIONBASE_H
2#define AMPGEN_COMPILEDEXPRESSIONBASE_H
3#include <memory.h>
4#include <stddef.h>
5#include <iosfwd>
6#include <map>
7#include <memory>
8#include <string>
9#include <utility>
10#include <vector>
11#include <unordered_map>
12#include <future>
13
14#include "AmpGen/Expression.h"
15
16namespace AmpGen {
17 class CacheTransfer;
18
19 std::string programatic_name(std::string s);
20 class ASTResolver;
21 class MinuitParameter;
23
31 public:
33 CompiledExpressionBase(const std::string &name);
34 CompiledExpressionBase(const Expression &expression, const std::string &name, const DebugSymbols &db = DebugSymbols(),
35 const std::map<std::string, unsigned> &evtMapping = {});
36
37 void resolve(const MinuitParameterSet *mps = nullptr);
38 void prepare();
39 void compile(const std::string &fname = "");
40 void compileBatch(std::ostream &stream) const;
41 void compileDetails(std::ostream &stream) const;
42 void compileWithParameters(std::ostream &stream) const;
43 void to_stream(std::ostream &stream) const;
44 unsigned int hash() const;
45 std::string name() const;
46 std::string progName() const;
47 std::string fcnSignature() const { return fcnSignature(types()); }
48 std::string fcnSignature(const std::vector<std::string> &argList) const;
49 virtual bool link(void *) = 0;
50 virtual bool link(const std::string &) = 0;
51 virtual void setExternal(const double &, const unsigned &) = 0;
52 virtual void resizeExternalCache(const size_t &) = 0;
53 virtual bool isReady() const = 0;
54 virtual std::string returnTypename() const = 0;
55 // virtual std::string args() const = 0;
56 virtual void print() const = 0;
58 virtual unsigned returnTypeSize() const = 0;
59 virtual std::vector<std::string> types() const = 0;
60 virtual std::vector<real_t> externBuffer() const = 0;
61 virtual bool use_rto() const = 0;
62 Expression expression() const { return m_obj; }
63 virtual std::string arg_type(const unsigned &counter) const = 0;
64 std::vector<const CacheTransfer *> orderedCacheFunctors() const;
65
66 protected:
68 std::string m_name;
69 std::string m_progName;
71 std::map<std::string, unsigned> m_evtMap;
72 std::vector<std::pair<uint64_t, Expression>> m_dependentSubexpressions;
73 std::vector<std::pair<uint64_t, Expression>> m_debugSubexpressions;
74 std::vector<std::shared_ptr<CacheTransfer>> m_cacheTransfers;
75 std::shared_ptr<ASTResolver> m_resolver = {nullptr};
76 std::vector<std::string> m_additionalHeaders;
77 bool m_disableBatch = {false};
78 bool m_includeParameters = {false};
80
81 private:
82 void addDebug(std::ostream &stream) const;
83 void addDependentExpressions(std::ostream &stream, size_t &sizeOfStream) const;
84 };
85 std::ostream &operator<<(std::ostream &os, const CompiledExpressionBase &expression);
86} // namespace AmpGen
87#endif
(Internal) class to aide in the resolution of the dependencies of expression trees.
Definition ASTResolver.h:30
Base class for compiled expressions, i.e.
virtual std::string arg_type(const unsigned &counter) const =0
void resolve(const MinuitParameterSet *mps=nullptr)
CompiledExpressionBase(const Expression &expression, const std::string &name, const DebugSymbols &db=DebugSymbols(), const std::map< std::string, unsigned > &evtMapping={})
virtual bool use_rto() const =0
std::string progName() const
void compileWithParameters(std::ostream &stream) const
std::map< std::string, unsigned > m_evtMap
virtual std::vector< real_t > externBuffer() const =0
void compileDetails(std::ostream &stream) const
std::vector< std::pair< uint64_t, Expression > > m_dependentSubexpressions
virtual void print() const =0
std::vector< const CacheTransfer * > orderedCacheFunctors() const
std::vector< std::pair< uint64_t, Expression > > m_debugSubexpressions
virtual std::string returnTypename() const =0
virtual bool link(void *)=0
virtual void resizeExternalCache(const size_t &)=0
std::shared_ptr< ASTResolver > m_resolver
std::vector< std::shared_ptr< CacheTransfer > > m_cacheTransfers
virtual unsigned returnTypeSize() const =0
virtual void setExternal(const double &, const unsigned &)=0
std::string fcnSignature(const std::vector< std::string > &argList) const
virtual std::vector< std::string > types() const =0
virtual bool link(const std::string &)=0
void to_stream(std::ostream &stream) const
std::string name() const
std::vector< std::string > m_additionalHeaders
unsigned int hash() const
void compileBatch(std::ostream &stream) const
virtual bool isReady() const =0
CompiledExpressionBase(const std::string &name)
void compile(const std::string &fname="")
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Definition Expression.h:135
std::ostream & operator<<(std::ostream &os, const CompiledExpressionBase &expression)
std::string programatic_name(std::string s)
std::vector< DebugSymbol > DebugSymbols
Definition Expression.h:111