blob: 2dd9adcc4694b4844443bcf62c541deda627cd9e [file] [log] [blame]
John McCutchand695d702016-03-01 09:42:21 -08001// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TONIC_DART_DEPENDENCY_CATCHER_H_
6#define TONIC_DART_DEPENDENCY_CATCHER_H_
7
8#include <unordered_set>
9
10#include "base/macros.h"
11
12namespace tonic {
13class DartLibraryLoader;
14
15// A base class to represent a dependency.
16class DartDependency {};
17
18// To catch the dependencies for a library, put a DartDependencyCatcher on the
19// stack during the call to Dart_LoadLibrary.
20class DartDependencyCatcher {
21 public:
22 explicit DartDependencyCatcher(DartLibraryLoader& loader);
23 ~DartDependencyCatcher();
24
25 void AddDependency(DartDependency* dependency);
26 const std::unordered_set<DartDependency*>& dependencies() const {
27 return dependencies_;
28 }
29
30 private:
31 DartLibraryLoader& loader_;
32 std::unordered_set<DartDependency*> dependencies_;
33
34 DISALLOW_COPY_AND_ASSIGN(DartDependencyCatcher);
35};
36
37} // namespace tonic
38
39#endif // TONIC_DART_DEPENDENCY_CATCHER_H_