1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00
Beef/IDEHelper/Compiler/BfConstResolver.h

38 lines
No EOL
949 B
C++

#include "BeefySysLib/Common.h"
#include "BfAst.h"
#include "BfSystem.h"
#include "BfCompiler.h"
#include "BfExprEvaluator.h"
NS_BF_BEGIN
class BfModule;
class BfMethodMatcher;
enum BfConstResolveFlags
{
BfConstResolveFlag_None = 0,
BfConstResolveFlag_ExplicitCast = 1,
BfConstResolveFlag_NoCast = 2,
BfConstResolveFlag_AllowSoftFail = 4,
BfConstResolveFlag_RemapFromStringId = 8,
BfConstResolveFlag_ArrayInitSize = 0x10
};
class BfConstResolver : public BfExprEvaluator
{
public:
bool mIsInvalidConstExpr;
bool mAllowGenericConstValue;
public:
virtual bool CheckAllowValue(const BfTypedValue& typedValue, BfAstNode* refNode) override;
public:
BfConstResolver(BfModule* bfModule);
BfTypedValue Resolve(BfExpression* expr, BfType* wantType = NULL, BfConstResolveFlags flags = BfConstResolveFlag_None);
bool PrepareMethodArguments(BfAstNode* targetSrc, BfMethodMatcher* methodMatcher, Array<BfIRValue>& llvmArgs);
};
NS_BF_END