source: icGREP/icgrep-devel/icgrep/pablo/prototype.h @ 5217

Last change on this file since 5217 was 5217, checked in by nmedfort, 3 years ago

Merged PabloFunction? and PabloKernel? classes. Updated projects where necessary.

File size: 1.4 KB
Line 
1#ifndef FUNCTION_H
2#define FUNCTION_H
3
4#include <pablo/pabloAST.h>
5#include <pablo/symbol_generator.h>
6#include <pablo/pe_var.h>
7#include <pablo/ps_assign.h>
8#include <pablo/pe_count.h>
9#include <pablo/pe_zeroes.h>
10#include <pablo/pe_ones.h>
11
12namespace pablo {
13
14class Prototype : public PabloAST {
15    friend class PabloBlock;
16public:
17
18    static inline bool classof(const PabloAST * e) {
19        return e->getClassTypeId() == ClassTypeId::Prototype;
20    }
21
22    static inline bool classof(void *) {
23        return false;
24    }
25
26    static Prototype * Create(std::string name, const unsigned numOfParameters, const unsigned numOfResults, void * functionPtr = nullptr);
27
28    const String * getName() const {
29        return mName;
30    }
31
32    unsigned getNumOfParameters() const {
33        return mNumOfParameters;
34    }
35
36    unsigned getNumOfResults() const {
37        return mNumOfResults;
38    }
39
40protected:
41    Prototype(const PabloAST::ClassTypeId type, std::string && name, const unsigned numOfParameters, const unsigned numOfResults);
42protected:
43    const String * const    mName;
44    unsigned                mNumOfParameters;
45    unsigned                mNumOfResults;
46};
47
48inline Prototype * Prototype::Create(std::string name, const unsigned numOfParameters, const unsigned numOfResults, void *) {
49    return new Prototype(PabloAST::ClassTypeId::Prototype, std::move(name), numOfParameters, numOfResults);
50}
51
52}
53
54#endif // FUNCTION_H
Note: See TracBrowser for help on using the repository browser.