Chromium Code Reviews| Index: runtime/vm/program_visitor.h |
| diff --git a/runtime/vm/program_visitor.h b/runtime/vm/program_visitor.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5ac81308622799902692944f32bed8a640e0f925 |
| --- /dev/null |
| +++ b/runtime/vm/program_visitor.h |
| @@ -0,0 +1,33 @@ |
| +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +#ifndef RUNTIME_VM_PROGRAM_VISITOR_H_ |
| +#define RUNTIME_VM_PROGRAM_VISITOR_H_ |
| + |
| +#include "vm/allocation.h" |
| + |
| +namespace dart { |
| + |
| +class Function; |
| +class Class; |
| + |
| +template <typename T> |
| +class Visitor : public ValueObject { |
| + public: |
| + virtual ~Visitor() {} |
| + virtual void Visit(const T& obj) = 0; |
| +}; |
| + |
| +typedef Visitor<Function> FunctionVisitor; |
| +typedef Visitor<Class> ClassVisitor; |
| + |
| +class ProgramVisitor : public AllStatic { |
| + public: |
| + static void VisitFunctions(FunctionVisitor* visitor); |
|
Florian Schneider
2016/12/15 19:09:35
Can we make these two top-level functions?
rmacnak
2016/12/15 21:27:19
I think with a class the friend declarations are e
|
| + static void VisitClasses(ClassVisitor* visitor); |
| +}; |
| + |
| +} // namespace dart |
| + |
| +#endif // RUNTIME_VM_PROGRAM_VISITOR_H_ |