11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# distutils: language = c++
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom libc.stdint cimport uintptr_t
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom mojo import system
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "third_party/cython/python_export.h":
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  pass
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "base/memory/scoped_ptr.h":
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef cppclass scoped_ptr[T]:
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scoped_ptr(T*)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "mojo/embedder/platform_support.h" \
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    namespace "mojo::embedder" nogil:
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef cppclass PlatformSupport:
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    pass
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "mojo/embedder/simple_platform_support.h" \
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    namespace "mojo::embedder" nogil:
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef cppclass SimplePlatformSupport(PlatformSupport):
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SimplePlatformSupport()
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "mojo/embedder/embedder.h" nogil:
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef void InitCEmbedder "mojo::embedder::Init"(
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      scoped_ptr[PlatformSupport] platform_support)
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicdef extern from "mojo/public/platform/native/system_thunks.h" nogil:
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef struct MojoSystemThunks:
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    pass
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef MojoSystemThunks MojoMakeSystemThunks()
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidef Init():
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InitCEmbedder(scoped_ptr[PlatformSupport](
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new SimplePlatformSupport()))
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cdef MojoSystemThunks thunks = MojoMakeSystemThunks()
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  system.SetSystemThunks(<uintptr_t>(&thunks))
42