reactor-c
C Runtime for Lingua Franca
Loading...
Searching...
No Matches
impl.c File Reference
#include "modal_models/definitions.h"
#include "util.h"

Functions

PyObject * py_mode_capsule_new (PyTypeObject *type, PyObject *args, PyObject *kwds)
 
void py_mode_capsule_dealloc (mode_capsule_struct_t *self)
 
void initialize_mode_capsule_t (PyObject *current_module)
 Initialize mode_capsule_t in the current_module.
 
PyObject * convert_C_mode_to_py (reactor_mode_t *mode, self_base_t *lf_self, lf_mode_change_type_t change_type)
 

Variables

PyMemberDef py_mode_capsule_members []
 

Detailed Description

Author
Edward A. Lee (eal@b.nosp@m.erke.nosp@m.ley.e.nosp@m.du)
Soroush Bateni (sorou.nosp@m.sh@u.nosp@m.tdall.nosp@m.as.e.nosp@m.du)

LICENSE

Copyright (c) 2022, The University of California at Berkeley.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

DESCRIPTION

Implementation of modal models support in the Python target.

Function Documentation

◆ convert_C_mode_to_py()

PyObject * convert_C_mode_to_py ( reactor_mode_t * mode,
self_base_t * lf_self,
lf_mode_change_type_t change_type )

Convert a reactor_mode_t to a mode_capsule_t.

◆ initialize_mode_capsule_t()

void initialize_mode_capsule_t ( PyObject * current_module)

Initialize mode_capsule_t in the current_module.

◆ py_mode_capsule_dealloc()

void py_mode_capsule_dealloc ( mode_capsule_struct_t * self)

Called when an mode capsule in Python is deallocated (generally called by the Python grabage collector).

Parameters
self

◆ py_mode_capsule_new()

PyObject * py_mode_capsule_new ( PyTypeObject * type,
PyObject * args,
PyObject * kwds )

Called when an mode in Python is to be created. Note that this is not normally used because modes are not created in Python.

To initialize the mode_capsule, this function first calls the tp_alloc method of type mode_capsule_struct_t and then assign default values of NULL, NULL, 0 to the members of the generic_mode_capsule_struct.

Variable Documentation

◆ py_mode_capsule_members

PyMemberDef py_mode_capsule_members[]
Initial value:
= {
{"mode", T_OBJECT, offsetof(mode_capsule_struct_t, mode), 0, "The pointer to the C mode struct"},
{"lf_self", T_OBJECT, offsetof(mode_capsule_struct_t, lf_self), 0, "Pointer to LF self"},
{NULL}
}