// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SKY_TOOLS_SKY_SNAPSHOT_SCOPE_H_
#define SKY_TOOLS_SKY_SNAPSHOT_SCOPE_H_

#include "base/basictypes.h"
#include "base/logging.h"
#include "dart/runtime/include/dart_api.h"

class DartIsolateScope {
 public:
  explicit DartIsolateScope(Dart_Isolate isolate) {
    CHECK(!Dart_CurrentIsolate());
    Dart_EnterIsolate(isolate);
  }
  ~DartIsolateScope() { Dart_ExitIsolate(); }

 private:
  DISALLOW_COPY_AND_ASSIGN(DartIsolateScope);
};

class DartApiScope {
 public:
  DartApiScope() { Dart_EnterScope(); }
  ~DartApiScope() { Dart_ExitScope(); }

 private:
  DISALLOW_COPY_AND_ASSIGN(DartApiScope);
};

#endif  // SKY_TOOLS_SKY_SNAPSHOT_SCOPE_H_
