chromium/gin/dictionary.h

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

#ifndef GIN_DICTIONARY_H_
#define GIN_DICTIONARY_H_

#include "base/memory/raw_ptr.h"
#include "gin/converter.h"
#include "gin/gin_export.h"

namespace gin {

// Dictionary is useful when writing bindings for a function that either
// receives an arbitrary JavaScript object as an argument or returns an
// arbitrary JavaScript object as a result. For example, Dictionary is useful
// when you might use the |dictionary| type in WebIDL:
//
//   https://webidl.spec.whatwg.org/#idl-dictionaries
//
// WARNING: You cannot retain a Dictionary object in the heap. The underlying
//          storage for Dictionary is tied to the closest enclosing
//          v8::HandleScope. Generally speaking, you should store a Dictionary
//          on the stack.
//
class GIN_EXPORT Dictionary {};

template<>
struct GIN_EXPORT Converter<Dictionary> {};

}  // namespace gin

#endif  // GIN_DICTIONARY_H_