1// Copyright 2013 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 GIN_PUBLIC_WRAPPER_INFO_H_
6#define GIN_PUBLIC_WRAPPER_INFO_H_
7
8#include "gin/gin_export.h"
9#include "gin/public/gin_embedders.h"
10#include "v8/include/v8.h"
11
12namespace gin {
13
14// Gin embedder that use their own WrapperInfo-like structs must ensure that
15// the first field is of type GinEmbedderId and has the correct id set. They
16// also should use kWrapperInfoIndex to start their WrapperInfo-like struct
17// and ensure that all objects have kNumberOfInternalFields internal fields.
18
19enum InternalFields {
20  kWrapperInfoIndex,
21  kEncodedValueIndex,
22  kNumberOfInternalFields,
23};
24
25struct GIN_EXPORT WrapperInfo {
26  static WrapperInfo* From(v8::Handle<v8::Object> object);
27  const GinEmbedder embedder;
28};
29
30}  // namespace gin
31
32#endif  // GIN_PUBLIC_WRAPPER_INFO_H_
33