blob: 9fd63bc344d8240ea4f826f6a0af2435e4332b53 [file] [log] [blame]
# Copyright 2014 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.
# distutils: language = c++
from cpython.buffer cimport PyBUF_CONTIG
from cpython.buffer cimport PyBUF_CONTIG_RO
from cpython.buffer cimport Py_buffer
from cpython.buffer cimport PyBuffer_FillInfo
from cpython.buffer cimport PyBuffer_Release
from cpython.buffer cimport PyObject_GetBuffer
from cpython.mem cimport PyMem_Malloc, PyMem_Free
from libc.stdint cimport int32_t, int64_t, uint32_t, uint64_t, uintptr_t
cdef extern from "mojo/result.h" nogil:
ctypedef int32_t MojoResult
const MojoResult MOJO_RESULT_OK
const MojoResult MOJO_RESULT_CANCELLED
const MojoResult MOJO_RESULT_UNKNOWN
const MojoResult MOJO_RESULT_INVALID_ARGUMENT
const MojoResult MOJO_RESULT_DEADLINE_EXCEEDED
const MojoResult MOJO_RESULT_NOT_FOUND
const MojoResult MOJO_RESULT_ALREADY_EXISTS
const MojoResult MOJO_RESULT_PERMISSION_DENIED
const MojoResult MOJO_RESULT_RESOURCE_EXHAUSTED
const MojoResult MOJO_RESULT_FAILED_PRECONDITION
const MojoResult MOJO_RESULT_ABORTED
const MojoResult MOJO_RESULT_OUT_OF_RANGE
const MojoResult MOJO_RESULT_UNIMPLEMENTED
const MojoResult MOJO_RESULT_INTERNAL
const MojoResult MOJO_RESULT_UNAVAILABLE
const MojoResult MOJO_RESULT_DATA_LOSS
const MojoResult MOJO_RESULT_BUSY
const MojoResult MOJO_RESULT_SHOULD_WAIT
cdef extern from "mojo/system/handle.h" nogil:
ctypedef uint32_t MojoHandle
const MojoHandle MOJO_HANDLE_INVALID
ctypedef uint32_t MojoHandleSignals
const MojoHandleSignals MOJO_HANDLE_SIGNAL_NONE
const MojoHandleSignals MOJO_HANDLE_SIGNAL_READABLE
const MojoHandleSignals MOJO_HANDLE_SIGNAL_WRITABLE
const MojoHandleSignals MOJO_HANDLE_SIGNAL_PEER_CLOSED
cdef struct MojoHandleSignalsState:
MojoHandleSignals satisfied_signals
MojoHandleSignals satisfiable_signals
MojoResult MojoClose(MojoHandle handle)
cdef extern from "mojo/system/time.h" nogil:
ctypedef int64_t MojoTimeTicks
ctypedef uint64_t MojoDeadline
const MojoDeadline MOJO_DEADLINE_INDEFINITE
MojoTimeTicks MojoGetTimeTicksNow()
cdef extern from "mojo/system/wait.h" nogil:
MojoResult MojoWait "MojoWait"(MojoHandle handle,
MojoHandleSignals signals,
MojoDeadline deadline,
MojoHandleSignalsState* signals_state)
MojoResult MojoWaitMany "MojoWaitMany"(const MojoHandle* handles,
const MojoHandleSignals* signals,
uint32_t num_handles,
MojoDeadline deadline,
uint32_t* result_index,
MojoHandleSignalsState* signals_states)
cdef extern from "mojo/system/message_pipe.h" nogil:
ctypedef uint32_t MojoCreateMessagePipeOptionsFlags
const MojoCreateMessagePipeOptionsFlags MOJO_CREATE_MESSAGE_PIPE_OPTIONS_FLAG_NONE
ctypedef uint32_t MojoWriteMessageFlags
const MojoWriteMessageFlags MOJO_WRITE_MESSAGE_FLAG_NONE
ctypedef uint32_t MojoReadMessageFlags
const MojoReadMessageFlags MOJO_READ_MESSAGE_FLAG_NONE
const MojoReadMessageFlags MOJO_READ_MESSAGE_FLAG_MAY_DISCARD
cdef struct MojoCreateMessagePipeOptions:
uint32_t struct_size
MojoCreateMessagePipeOptionsFlags flags
MojoResult MojoCreateMessagePipe(
const MojoCreateMessagePipeOptions* options,
MojoHandle* message_pipe_handle0,
MojoHandle* message_pipe_handle1)
MojoResult MojoWriteMessage(
MojoHandle message_pipe_handle,
const void* bytes,
uint32_t num_bytes,
const MojoHandle* handles,
uint32_t num_handles,
MojoWriteMessageFlags flags)
MojoResult MojoReadMessage(
MojoHandle message_pipe_handle,
void* bytes,
uint32_t* num_bytes,
MojoHandle* handles,
uint32_t* num_handles,
MojoReadMessageFlags flags)
cdef extern from "mojo/system/data_pipe.h" nogil:
ctypedef uint32_t MojoCreateDataPipeOptionsFlags
const MojoCreateDataPipeOptionsFlags MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE
cdef struct MojoCreateDataPipeOptions:
uint32_t struct_size
MojoCreateDataPipeOptionsFlags flags
uint32_t element_num_bytes
uint32_t capacity_num_bytes
ctypedef uint32_t MojoWriteDataFlags
const MojoWriteDataFlags MOJO_WRITE_DATA_FLAG_NONE
const MojoWriteDataFlags MOJO_WRITE_DATA_FLAG_ALL_OR_NONE
ctypedef uint32_t MojoReadDataFlags
const MojoReadDataFlags MOJO_READ_DATA_FLAG_NONE
const MojoReadDataFlags MOJO_READ_DATA_FLAG_ALL_OR_NONE
const MojoReadDataFlags MOJO_READ_DATA_FLAG_DISCARD
const MojoReadDataFlags MOJO_READ_DATA_FLAG_QUERY
const MojoReadDataFlags MOJO_READ_DATA_FLAG_PEEK
MojoResult MojoCreateDataPipe(
const MojoCreateDataPipeOptions* options,
MojoHandle* data_pipe_producer_handle,
MojoHandle* data_pipe_consumer_handle)
MojoResult MojoWriteData(
MojoHandle data_pipe_producer_handle,
const void* elements,
uint32_t* num_bytes,
MojoWriteDataFlags flags)
MojoResult MojoBeginWriteData(
MojoHandle data_pipe_producer_handle,
void** buffer,
uint32_t* buffer_num_bytes,
MojoWriteDataFlags flags)
MojoResult MojoEndWriteData(
MojoHandle data_pipe_producer_handle,
uint32_t num_bytes_written)
MojoResult MojoReadData(
MojoHandle data_pipe_consumer_handle,
void* elements,
uint32_t* num_bytes,
MojoReadDataFlags flags)
MojoResult MojoBeginReadData(
MojoHandle data_pipe_consumer_handle,
const void** buffer,
uint32_t* buffer_num_bytes,
MojoReadDataFlags flags)
MojoResult MojoEndReadData(
MojoHandle data_pipe_consumer_handle,
uint32_t num_bytes_read)
cdef extern from "mojo/system/buffer.h" nogil:
ctypedef uint32_t MojoCreateSharedBufferOptionsFlags
const MojoCreateSharedBufferOptionsFlags MOJO_CREATE_SHARED_BUFFER_OPTIONS_FLAG_NONE
cdef struct MojoCreateSharedBufferOptions:
uint32_t struct_size
MojoCreateSharedBufferOptionsFlags flags
ctypedef uint32_t MojoDuplicateBufferHandleOptionsFlags
const MojoDuplicateBufferHandleOptionsFlags MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE
cdef struct MojoDuplicateBufferHandleOptions:
uint32_t struct_size
MojoDuplicateBufferHandleOptionsFlags flags
ctypedef uint32_t MojoMapBufferFlags
const MojoMapBufferFlags MOJO_MAP_BUFFER_FLAG_NONE
MojoResult MojoCreateSharedBuffer(
const MojoCreateSharedBufferOptions* options,
uint64_t num_bytes,
MojoHandle* shared_buffer_handle)
MojoResult MojoDuplicateBufferHandle(
MojoHandle buffer_handle,
const MojoDuplicateBufferHandleOptions* options,
MojoHandle* new_buffer_handle)
MojoResult MojoMapBuffer(MojoHandle buffer_handle,
uint64_t offset,
uint64_t num_bytes,
void** buffer,
MojoMapBufferFlags flags)
MojoResult MojoUnmapBuffer(void* buffer)