| 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); | 
| +  static void VisitClasses(ClassVisitor* visitor); | 
| +}; | 
| + | 
| +}  // namespace dart | 
| + | 
| +#endif  // RUNTIME_VM_PROGRAM_VISITOR_H_ | 
|  |