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{
18 class CacheTransfer;
19
20 std::string programatic_name( std::string s );
21 class ASTResolver;
22 class MinuitParameter;
24
32 {
33 public:
35 CompiledExpressionBase( const std::string& name );
37 const std::string& name,
38 const DebugSymbols& db=DebugSymbols(),
39 const std::map<std::string, unsigned>& evtMapping = {} );
40
41 void resolve(const MinuitParameterSet* mps = nullptr);
42 void prepare();
43 void compile(const std::string& fname="");
44 void compileBatch( std::ostream& stream) const;
45 void compileDetails( std::ostream& stream) const;
46 void compileWithParameters( std::ostream& stream) const;
47 void to_stream( std::ostream& stream ) const;
48 unsigned int hash() const;
49 std::string name() const;
50 std::string progName() const;
51 std::string fcnSignature() const { return fcnSignature(types()); }
52 std::string fcnSignature(const std::vector<std::string>& argList ) const;
53 virtual bool link( void*) = 0;
54 virtual bool link( const std::string&) = 0;
55 virtual void setExternal(const double&, const unsigned&) = 0;
56 virtual void resizeExternalCache(const size_t&) = 0;
57 virtual bool isReady() const = 0;
58 virtual std::string returnTypename() const = 0;
59 // virtual std::string args() const = 0;
60 virtual void print() const = 0;
62 virtual unsigned returnTypeSize() const = 0;
63 virtual std::vector<std::string> types() const = 0;
64 virtual std::vector<real_t> externBuffer() const = 0;
65 virtual bool use_rto() const = 0;
66 Expression expression() const { return m_obj; }
67 virtual std::string arg_type( const unsigned& counter) const =0;
68 std::vector<const CacheTransfer*> orderedCacheFunctors() const;
69 protected:
71 std::string m_name;
72 std::string m_progName;
74 std::map<std::string, unsigned> m_evtMap;
75 std::vector<std::pair<uint64_t, Expression>> m_dependentSubexpressions;
76 std::vector<std::pair<uint64_t, Expression>> m_debugSubexpressions;
77 std::vector<std::shared_ptr<CacheTransfer>> m_cacheTransfers;
78 std::shared_ptr<ASTResolver> m_resolver = {nullptr};
79 std::vector<std::string> m_additionalHeaders;
80 bool m_disableBatch = {false};
81 bool m_includeParameters = {false};
82 bool m_includePythonBindings = {false};
83 private:
84 void addDebug( std::ostream& stream ) const;
85 void addDependentExpressions( std::ostream& stream, size_t& sizeOfStream ) const;
86 };
87 std::ostream& operator<<( std::ostream& os, const CompiledExpressionBase& expression );
88}// namespace AmpGen
89#endif
(Internal) class to aide in the resolution of the dependencies of expression trees.
Definition ASTResolver.h:29
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