diff options
author | Alex Reinking <reinking@google.com> | 2022-09-28 07:24:49 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-28 07:24:49 -0700 |
commit | a4a77c18df16d6ee672f2a2564969bc9b2beef3a (patch) | |
tree | e4368558b4b44a7421761341e3b18edbd93f9785 /src/expr-visitor.h | |
parent | 520614a5f83878a4d26702a3ad67c44302c2b073 (diff) | |
download | wabt-a4a77c18df16d6ee672f2a2564969bc9b2beef3a.tar.gz wabt-a4a77c18df16d6ee672f2a2564969bc9b2beef3a.tar.bz2 wabt-a4a77c18df16d6ee672f2a2564969bc9b2beef3a.zip |
Move headers to include/wabt/ (#1998)
This makes things easier for users and packagers of libwabt.
Diffstat (limited to 'src/expr-visitor.h')
-rw-r--r-- | src/expr-visitor.h | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/src/expr-visitor.h b/src/expr-visitor.h deleted file mode 100644 index e00c487d..00000000 --- a/src/expr-visitor.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright 2017 WebAssembly Community Group participants - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WABT_EXPR_VISITOR_H_ -#define WABT_EXPR_VISITOR_H_ - -#include "src/common.h" -#include "src/ir.h" - -namespace wabt { - -class ExprVisitor { - public: - class Delegate; - class DelegateNop; - - explicit ExprVisitor(Delegate* delegate); - - Result VisitExpr(Expr*); - Result VisitExprList(ExprList&); - Result VisitFunc(Func*); - - private: - enum class State { - Default, - Block, - IfTrue, - IfFalse, - Loop, - Try, - Catch, - }; - - Result HandleDefaultState(Expr*); - void PushDefault(Expr*); - void PopDefault(); - void PushExprlist(State state, Expr*, ExprList&); - void PopExprlist(); - void PushCatch(Expr*, Index catch_index, ExprList&); - void PopCatch(); - - Delegate* delegate_; - - // Use parallel arrays instead of array of structs so we can avoid allocating - // unneeded objects. ExprList::iterator has no default constructor, so it - // must only be allocated for states that use it. - std::vector<State> state_stack_; - std::vector<Expr*> expr_stack_; - std::vector<ExprList::iterator> expr_iter_stack_; - std::vector<Index> catch_index_stack_; -}; - -class ExprVisitor::Delegate { - public: - virtual ~Delegate() {} - - virtual Result OnBinaryExpr(BinaryExpr*) = 0; - virtual Result BeginBlockExpr(BlockExpr*) = 0; - virtual Result EndBlockExpr(BlockExpr*) = 0; - virtual Result OnBrExpr(BrExpr*) = 0; - virtual Result OnBrIfExpr(BrIfExpr*) = 0; - virtual Result OnBrTableExpr(BrTableExpr*) = 0; - virtual Result OnCallExpr(CallExpr*) = 0; - virtual Result OnCallIndirectExpr(CallIndirectExpr*) = 0; - virtual Result OnCallRefExpr(CallRefExpr*) = 0; - virtual Result OnCodeMetadataExpr(CodeMetadataExpr*) = 0; - virtual Result OnCompareExpr(CompareExpr*) = 0; - virtual Result OnConstExpr(ConstExpr*) = 0; - virtual Result OnConvertExpr(ConvertExpr*) = 0; - virtual Result OnDropExpr(DropExpr*) = 0; - virtual Result OnGlobalGetExpr(GlobalGetExpr*) = 0; - virtual Result OnGlobalSetExpr(GlobalSetExpr*) = 0; - virtual Result BeginIfExpr(IfExpr*) = 0; - virtual Result AfterIfTrueExpr(IfExpr*) = 0; - virtual Result EndIfExpr(IfExpr*) = 0; - virtual Result OnLoadExpr(LoadExpr*) = 0; - virtual Result OnLocalGetExpr(LocalGetExpr*) = 0; - virtual Result OnLocalSetExpr(LocalSetExpr*) = 0; - virtual Result OnLocalTeeExpr(LocalTeeExpr*) = 0; - virtual Result BeginLoopExpr(LoopExpr*) = 0; - virtual Result EndLoopExpr(LoopExpr*) = 0; - virtual Result OnMemoryCopyExpr(MemoryCopyExpr*) = 0; - virtual Result OnDataDropExpr(DataDropExpr*) = 0; - virtual Result OnMemoryFillExpr(MemoryFillExpr*) = 0; - virtual Result OnMemoryGrowExpr(MemoryGrowExpr*) = 0; - virtual Result OnMemoryInitExpr(MemoryInitExpr*) = 0; - virtual Result OnMemorySizeExpr(MemorySizeExpr*) = 0; - virtual Result OnTableCopyExpr(TableCopyExpr*) = 0; - virtual Result OnElemDropExpr(ElemDropExpr*) = 0; - virtual Result OnTableInitExpr(TableInitExpr*) = 0; - virtual Result OnTableGetExpr(TableGetExpr*) = 0; - virtual Result OnTableSetExpr(TableSetExpr*) = 0; - virtual Result OnTableGrowExpr(TableGrowExpr*) = 0; - virtual Result OnTableSizeExpr(TableSizeExpr*) = 0; - virtual Result OnTableFillExpr(TableFillExpr*) = 0; - virtual Result OnRefFuncExpr(RefFuncExpr*) = 0; - virtual Result OnRefNullExpr(RefNullExpr*) = 0; - virtual Result OnRefIsNullExpr(RefIsNullExpr*) = 0; - virtual Result OnNopExpr(NopExpr*) = 0; - virtual Result OnReturnExpr(ReturnExpr*) = 0; - virtual Result OnReturnCallExpr(ReturnCallExpr*) = 0; - virtual Result OnReturnCallIndirectExpr(ReturnCallIndirectExpr*) = 0; - virtual Result OnSelectExpr(SelectExpr*) = 0; - virtual Result OnStoreExpr(StoreExpr*) = 0; - virtual Result OnUnaryExpr(UnaryExpr*) = 0; - virtual Result OnUnreachableExpr(UnreachableExpr*) = 0; - virtual Result BeginTryExpr(TryExpr*) = 0; - virtual Result OnCatchExpr(TryExpr*, Catch*) = 0; - virtual Result OnDelegateExpr(TryExpr*) = 0; - virtual Result EndTryExpr(TryExpr*) = 0; - virtual Result OnThrowExpr(ThrowExpr*) = 0; - virtual Result OnRethrowExpr(RethrowExpr*) = 0; - virtual Result OnAtomicWaitExpr(AtomicWaitExpr*) = 0; - virtual Result OnAtomicFenceExpr(AtomicFenceExpr*) = 0; - virtual Result OnAtomicNotifyExpr(AtomicNotifyExpr*) = 0; - virtual Result OnAtomicLoadExpr(AtomicLoadExpr*) = 0; - virtual Result OnAtomicStoreExpr(AtomicStoreExpr*) = 0; - virtual Result OnAtomicRmwExpr(AtomicRmwExpr*) = 0; - virtual Result OnAtomicRmwCmpxchgExpr(AtomicRmwCmpxchgExpr*) = 0; - virtual Result OnTernaryExpr(TernaryExpr*) = 0; - virtual Result OnSimdLaneOpExpr(SimdLaneOpExpr*) = 0; - virtual Result OnSimdLoadLaneExpr(SimdLoadLaneExpr*) = 0; - virtual Result OnSimdStoreLaneExpr(SimdStoreLaneExpr*) = 0; - virtual Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) = 0; - virtual Result OnLoadSplatExpr(LoadSplatExpr*) = 0; - virtual Result OnLoadZeroExpr(LoadZeroExpr*) = 0; -}; - -class ExprVisitor::DelegateNop : public ExprVisitor::Delegate { - public: - Result OnBinaryExpr(BinaryExpr*) override { return Result::Ok; } - Result BeginBlockExpr(BlockExpr*) override { return Result::Ok; } - Result EndBlockExpr(BlockExpr*) override { return Result::Ok; } - Result OnBrExpr(BrExpr*) override { return Result::Ok; } - Result OnBrIfExpr(BrIfExpr*) override { return Result::Ok; } - Result OnBrTableExpr(BrTableExpr*) override { return Result::Ok; } - Result OnCallExpr(CallExpr*) override { return Result::Ok; } - Result OnCallIndirectExpr(CallIndirectExpr*) override { return Result::Ok; } - Result OnCallRefExpr(CallRefExpr*) override { return Result::Ok; } - Result OnCodeMetadataExpr(CodeMetadataExpr*) override { return Result::Ok; } - Result OnCompareExpr(CompareExpr*) override { return Result::Ok; } - Result OnConstExpr(ConstExpr*) override { return Result::Ok; } - Result OnConvertExpr(ConvertExpr*) override { return Result::Ok; } - Result OnDropExpr(DropExpr*) override { return Result::Ok; } - Result OnGlobalGetExpr(GlobalGetExpr*) override { return Result::Ok; } - Result OnGlobalSetExpr(GlobalSetExpr*) override { return Result::Ok; } - Result BeginIfExpr(IfExpr*) override { return Result::Ok; } - Result AfterIfTrueExpr(IfExpr*) override { return Result::Ok; } - Result EndIfExpr(IfExpr*) override { return Result::Ok; } - Result OnLoadExpr(LoadExpr*) override { return Result::Ok; } - Result OnLocalGetExpr(LocalGetExpr*) override { return Result::Ok; } - Result OnLocalSetExpr(LocalSetExpr*) override { return Result::Ok; } - Result OnLocalTeeExpr(LocalTeeExpr*) override { return Result::Ok; } - Result BeginLoopExpr(LoopExpr*) override { return Result::Ok; } - Result EndLoopExpr(LoopExpr*) override { return Result::Ok; } - Result OnMemoryCopyExpr(MemoryCopyExpr*) override { return Result::Ok; } - Result OnDataDropExpr(DataDropExpr*) override { return Result::Ok; } - Result OnMemoryFillExpr(MemoryFillExpr*) override { return Result::Ok; } - Result OnMemoryGrowExpr(MemoryGrowExpr*) override { return Result::Ok; } - Result OnMemoryInitExpr(MemoryInitExpr*) override { return Result::Ok; } - Result OnMemorySizeExpr(MemorySizeExpr*) override { return Result::Ok; } - Result OnTableCopyExpr(TableCopyExpr*) override { return Result::Ok; } - Result OnElemDropExpr(ElemDropExpr*) override { return Result::Ok; } - Result OnTableInitExpr(TableInitExpr*) override { return Result::Ok; } - Result OnTableGetExpr(TableGetExpr*) override { return Result::Ok; } - Result OnTableSetExpr(TableSetExpr*) override { return Result::Ok; } - Result OnTableGrowExpr(TableGrowExpr*) override { return Result::Ok; } - Result OnTableSizeExpr(TableSizeExpr*) override { return Result::Ok; } - Result OnTableFillExpr(TableFillExpr*) override { return Result::Ok; } - Result OnRefFuncExpr(RefFuncExpr*) override { return Result::Ok; } - Result OnRefNullExpr(RefNullExpr*) override { return Result::Ok; } - Result OnRefIsNullExpr(RefIsNullExpr*) override { return Result::Ok; } - Result OnNopExpr(NopExpr*) override { return Result::Ok; } - Result OnReturnExpr(ReturnExpr*) override { return Result::Ok; } - Result OnReturnCallExpr(ReturnCallExpr*) override { return Result::Ok; } - Result OnReturnCallIndirectExpr(ReturnCallIndirectExpr*) override { - return Result::Ok; - } - Result OnSelectExpr(SelectExpr*) override { return Result::Ok; } - Result OnStoreExpr(StoreExpr*) override { return Result::Ok; } - Result OnUnaryExpr(UnaryExpr*) override { return Result::Ok; } - Result OnUnreachableExpr(UnreachableExpr*) override { return Result::Ok; } - Result BeginTryExpr(TryExpr*) override { return Result::Ok; } - Result OnCatchExpr(TryExpr*, Catch*) override { return Result::Ok; } - Result OnDelegateExpr(TryExpr*) override { return Result::Ok; } - Result EndTryExpr(TryExpr*) override { return Result::Ok; } - Result OnThrowExpr(ThrowExpr*) override { return Result::Ok; } - Result OnRethrowExpr(RethrowExpr*) override { return Result::Ok; } - Result OnAtomicWaitExpr(AtomicWaitExpr*) override { return Result::Ok; } - Result OnAtomicFenceExpr(AtomicFenceExpr*) override { return Result::Ok; } - Result OnAtomicNotifyExpr(AtomicNotifyExpr*) override { return Result::Ok; } - Result OnAtomicLoadExpr(AtomicLoadExpr*) override { return Result::Ok; } - Result OnAtomicStoreExpr(AtomicStoreExpr*) override { return Result::Ok; } - Result OnAtomicRmwExpr(AtomicRmwExpr*) override { return Result::Ok; } - Result OnAtomicRmwCmpxchgExpr(AtomicRmwCmpxchgExpr*) override { - return Result::Ok; - } - Result OnTernaryExpr(TernaryExpr*) override { return Result::Ok; } - Result OnSimdLaneOpExpr(SimdLaneOpExpr*) override { return Result::Ok; } - Result OnSimdLoadLaneExpr(SimdLoadLaneExpr*) override { return Result::Ok; } - Result OnSimdStoreLaneExpr(SimdStoreLaneExpr*) override { return Result::Ok; } - Result OnSimdShuffleOpExpr(SimdShuffleOpExpr*) override { return Result::Ok; } - Result OnLoadSplatExpr(LoadSplatExpr*) override { return Result::Ok; } - Result OnLoadZeroExpr(LoadZeroExpr*) override { return Result::Ok; } -}; - -} // namespace wabt - -#endif // WABT_EXPR_VISITOR_H_ |