slang_rs_export_var.h revision 324c0479ec3edda573de60b2e6476507a99d06f7
1462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#ifndef _SLANG_COMPILER_RS_EXPORT_VAR_HPP
2462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#   define _SLANG_COMPILER_RS_EXPORT_VAR_HPP
3462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
4462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "llvm/ADT/StringRef.h"     /* for class llvm::StringRef */
5462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
6462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "clang/AST/Decl.h"         /* for clang::VarDecl */
7324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao#include "clang/AST/Expr.h"         /* for clang::Expr */
8462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
9462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include <string>
10462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
11324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liaonamespace clang {
12324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao    class APValue;
13324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao}
14324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao
15462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace slang {
16462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
17462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaousing namespace clang;
18462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
19462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSContext;
20462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSExportType;
21462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
22462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSExportVar {
23462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    friend class RSContext;
24462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoprivate:
25462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    RSContext* mContext;
26462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    std::string mName;
27462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    const RSExportType* mET;
28462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
29324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao    Expr::EvalResult mInit;
30324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao
31462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    RSExportVar(RSContext* Context, const VarDecl* VD, const RSExportType* ET);
32462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
33462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaopublic:
34462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    inline const std::string& getName() const { return mName; }
35462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    inline const RSExportType* getType() const { return mET; }
36462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao    inline RSContext* getRSContext() const { return mContext; }
37462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
38324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao    inline const APValue& getInit() const { return mInit.Val; }
39324c0479ec3edda573de60b2e6476507a99d06f7Shih-wei Liao
40462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao};  /* RSExportVar */
41462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
42462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
43462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao}   /* namespace slang */
44462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
45462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#endif  /* _SLANG_COMPILER_RS_EXPORT_VAR_HPP */
46