6 Commits

Author SHA1 Message Date
372b09651a makefile 2025-10-06 11:43:38 +02:00
7b2a786739 README 2025-10-06 11:33:17 +02:00
9b455dfefb prepating for epics 7.0.9 2025-10-01 15:33:44 +02:00
a2d636e215 README 2025-10-01 12:16:33 +02:00
e50115776d cafe-1.19.3 2024-02-08 14:26:03 +01:00
fdd124905b cafe-1.19.0-py38-gcc-7.5.0 2023-06-19 11:18:24 +02:00
39 changed files with 781355 additions and 20160 deletions

8038
#PyCafe.pyx# Normal file

File diff suppressed because it is too large Load Diff

9
.gitignore vendored
View File

@@ -1,10 +1,15 @@
build
#*#
.#.#
*.*~
*.*-*
*.*+*
python3.5
python3.5-sf
python3.5-sls2
python3.7
python3.7-sf
python3.7-sls2
z_python-3.5-old
z_python-3.7-old
python3.10
python3.10-sf
python3.10-sls2

126384
PyCafe Normal file

File diff suppressed because it is too large Load Diff

23811
PyCafe.cpp

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,8 @@
/* Generated by Cython 0.29.24 */
/* Generated by Cython 0.29.2 */
#ifndef __PYX_HAVE__PyCafe
#define __PYX_HAVE__PyCafe
#include "Python.h"
#ifndef __PYX_HAVE_API__PyCafe

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<!-- Generated by Cython 0.29.24 -->
<!-- Generated by Cython 0.29.2 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
@@ -286,13 +286,8 @@ body.cython { font-family: courier; font-size: 12; }
.cython.score-252 {background-color: #FFFF09;}
.cython.score-253 {background-color: #FFFF09;}
.cython.score-254 {background-color: #FFFF09;}
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.cython .hll { background-color: #ffffcc }
.cython { background: #f8f8f8; }
.cython { background: #f8f8f8; }
.cython .c { color: #408080; font-style: italic } /* Comment */
.cython .err { border: 1px solid #FF0000 } /* Error */
.cython .k { color: #008000; font-weight: bold } /* Keyword */
@@ -363,7 +358,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
</style>
</head>
<body class="cython">
<p><span style="border-bottom: solid 1px grey;">Generated by Cython 0.29.24</span></p>
<p><span style="border-bottom: solid 1px grey;">Generated by Cython 0.29.2</span></p>
<p>
<span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
@@ -480,8 +475,6 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">018</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_data_event_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
<pre class='cython code score-13 '>void cy_data_event_handler_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle, std::string __pyx_v_pvname, PVDataHolder __pyx_v_pvd) {
struct __pyx_obj_6PyCafe_pvdata *__pyx_v_data = 0;
HandleHelper __pyx_v_hh;
CYTHON_UNUSED unsigned int __pyx_v_mpid;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
#endif
@@ -492,11 +485,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
goto __pyx_L0;
__pyx_L1_error:;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10);
<span class='pyx_c_api'>__Pyx_WriteUnraisable</span>("PyCafe.cy_data_event_handler_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>((PyObject *)__pyx_v_data);
@@ -510,91 +503,129 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<pre class="cython line score-0">&#xA0;<span class="">021</span>: <span class="n">PVDataHolder</span> <span class="n">pvd</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">022</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">023</span>: <span class="k">global</span> <span class="n">py_cb</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">024</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(1)= Handle/PVNAME :&quot;, handle, pvname) </span></pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">025</span>: <span class="k">cdef</span> <span class="kt">pvdata</span> <span class="nf">data</span> <span class="o">=</span> <span class="n">PVDataHolderToStruct</span><span class="p">(</span><span class="n">pvd</span><span class="p">)</span></pre>
<pre class='cython code score-0 '> __pyx_t_1 = ((PyObject *)__pyx_f_6PyCafe_PVDataHolderToStruct(__pyx_v_pvd, NULL));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 25, __pyx_L1_error)</span>
<pre class="cython line score-0">&#xA0;<span class="">024</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">025</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(1)= Handle/PVNAME :&quot;, handle, pvname) </span></pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">026</span>: <span class="k">cdef</span> <span class="kt">pvdata</span> <span class="nf">data</span> <span class="o">=</span> <span class="n">PVDataHolderToStruct</span><span class="p">(</span><span class="n">pvd</span><span class="p">)</span></pre>
<pre class='cython code score-0 '> __pyx_t_1 = ((PyObject *)__pyx_f_6PyCafe_PVDataHolderToStruct(__pyx_v_pvd, NULL));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 26, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
__pyx_v_data = ((struct __pyx_obj_6PyCafe_pvdata *)__pyx_t_1);
__pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">026</span>: <span class="c">#data.show() </span></pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">027</span>: <span class="n">py_cb</span> <span class="o">=</span> <span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
<pre class='cython code score-7 '> __pyx_t_1 = ((PyObject *)((void *)__pyx_v_callback));
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_py_cb, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(3, 27, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">028</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(2)= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">029</span>: <span class="k">cdef</span> <span class="kt">HandleHelper</span> <span class="nf">hh</span></pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">030</span>: <span class="n">mpid</span> <span class="o">=</span> <span class="n">hh</span><span class="o">.</span><span class="n">getUsrArgsAsUInt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-0 '> __pyx_v_mpid = __pyx_v_hh.getUsrArgsAsUInt(__pyx_v_handle);
</pre><pre class="cython line score-0">&#xA0;<span class="">031</span>: <span class="c">#print(&quot;monitorId&quot;, mpid)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">032</span>: <span class="c">#monDictGlobal[mpid](handle, pvname, data)</span></pre>
<pre class="cython line score-48" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">033</span>: <span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span><span class="n">py_cb</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></pre>
<pre class='cython code score-48 '> <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_2, __pyx_n_s_py_cb);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
__pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
__pyx_t_4 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
__pyx_t_5 = NULL;
__pyx_t_6 = 0;
if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
__pyx_t_5 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
if (likely(__pyx_t_5)) {
PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
<span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
__pyx_t_6 = 1;
</pre><pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">027</span>: <span class="k">try</span><span class="p">:</span></pre>
<pre class='cython code score-13 '> {
/*try:*/ {
/* … */
}
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
/* … */
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_2);
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
<span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_2);
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_3);
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_t_4);
<span class='pyx_c_api'>__Pyx_ExceptionReset</span>(__pyx_t_2, __pyx_t_3, __pyx_t_4);
__pyx_L8_try_end:;
}
#if CYTHON_FAST_PYCALL
if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_2)) {
PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
__pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
if (__pyx_t_5) {
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
</pre><pre class="cython line score-0">&#xA0;<span class="">028</span>: <span class="c">#data.show() </span></pre>
<pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">029</span>: <span class="n">py_cb</span> <span class="o">=</span> <span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
<pre class='cython code score-7 '> __pyx_t_1 = ((PyObject *)((void *)__pyx_v_callback));
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_py_cb, __pyx_t_1) &lt; 0) <span class='error_goto'>__PYX_ERR(3, 29, __pyx_L3_error)</span>
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">030</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(2)= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">031</span>: <span class="c">##cdef HandleHelper hh</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">032</span>: <span class="c">## mpid = hh.getUsrArgsAsUInt(handle)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">033</span>: <span class="c">#print(&quot;monitorId&quot;, mpid)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">034</span>: <span class="c">#monDictGlobal[mpid](handle, pvname, data)</span></pre>
<pre class="cython line score-48" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">035</span>: <span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span><span class="n">py_cb</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></pre>
<pre class='cython code score-48 '> <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_5, __pyx_n_s_py_cb);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
__pyx_t_6 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_6);
__pyx_t_7 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
__pyx_t_8 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS &amp;&amp; unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_5))) {
__pyx_t_8 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_5);
if (likely(__pyx_t_8)) {
PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_5);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_8);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
<span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_5, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_5)) {
PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_5)) {
PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_6, __pyx_t_7, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
{
__pyx_t_10 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_9);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
if (__pyx_t_8) {
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_8); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
}
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_6);
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_10, 0+__pyx_t_9, __pyx_t_6);
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_7);
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_data));
<span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_data));
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_10, 2+__pyx_t_9, ((PyObject *)__pyx_v_data));
__pyx_t_6 = 0;
__pyx_t_7 = 0;
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_5, __pyx_t_10, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 35, __pyx_L3_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
}
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
(void)(((PyObject *)__pyx_t_1));
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">036</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">037</span>: <span class="c">#if monDictGlobal[mpid] != &lt;object&gt;py_cb:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">038</span>: <span class="c"># print( monDictGlobal[mpid])</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">039</span>: <span class="c"># print( &lt;object&gt;py_cb)</span></pre>
<pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">040</span>: <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span></pre>
<pre class='cython code score-4 '> __pyx_t_9 = <span class='pyx_c_api'>__Pyx_PyErr_ExceptionMatches</span>(__pyx_builtin_TypeError);
if (__pyx_t_9) {
<span class='pyx_c_api'>__Pyx_ErrRestore</span>(0,0,0);
goto __pyx_L4_exception_handled;
}
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_3);
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(((PyObject *)__pyx_v_data));
<span class='refnanny'>__Pyx_GIVEREF</span>(((PyObject *)__pyx_v_data));
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_data));
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 33, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
}
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
(void)(((PyObject *)__pyx_t_1));
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">034</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">035</span>: <span class="c">#if monDictGlobal[mpid] != &lt;object&gt;py_cb:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">036</span>: <span class="c"># print( monDictGlobal[mpid])</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">037</span>: <span class="c"># print( &lt;object&gt;py_cb)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">038</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">039</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
</pre><pre class="cython line score-0">&#xA0;<span class="">041</span>: <span class="k">pass</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">042</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">043</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -609,24 +640,24 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_FastGIL_Forget</span>();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
goto __pyx_L11;
}
__pyx_L3_return: {
__pyx_L9_return: {
#ifdef WITH_THREAD
<span class='pyx_c_api'>__Pyx_FastGIL_Forget</span>();
Py_BLOCK_THREADS
#endif
goto __pyx_L0;
}
__pyx_L5:;
__pyx_L11:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">040</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">044</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L9_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">041</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">042</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">043</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_ctrl_event_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">045</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">046</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">047</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_ctrl_event_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
<pre class='cython code score-14 '>void cy_ctrl_event_handler_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle, std::string __pyx_v_pvname, PVCtrlHolder __pyx_v_pvc) {
struct __pyx_obj_6PyCafe_pvctrl *__pyx_v_data = 0;
PyObject *__pyx_v_cbobjt = NULL;
@@ -654,25 +685,25 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-0">&#xA0;<span class="">044</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">045</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">046</span>: <span class="n">PVCtrlHolder</span> <span class="n">pvc</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">047</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">048</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVCTRL++++++= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">049</span>: <span class="k">cdef</span> <span class="kt">pvctrl</span> <span class="nf">data</span> <span class="o">=</span> <span class="n">PVCtrlHolderToStruct</span><span class="p">(</span><span class="n">pvc</span><span class="p">)</span></pre>
<pre class='cython code score-0 '> __pyx_t_1 = ((PyObject *)__pyx_f_6PyCafe_PVCtrlHolderToStruct(__pyx_v_pvc, NULL));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 49, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">048</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">049</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">050</span>: <span class="n">PVCtrlHolder</span> <span class="n">pvc</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">051</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">052</span>: <span class="c">#print(&quot; cy_data_event_handler_wrapper=====+++++++++++++++PVCTRL++++++= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">053</span>: <span class="k">cdef</span> <span class="kt">pvctrl</span> <span class="nf">data</span> <span class="o">=</span> <span class="n">PVCtrlHolderToStruct</span><span class="p">(</span><span class="n">pvc</span><span class="p">)</span></pre>
<pre class='cython code score-0 '> __pyx_t_1 = ((PyObject *)__pyx_f_6PyCafe_PVCtrlHolderToStruct(__pyx_v_pvc, NULL));<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 53, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
__pyx_v_data = ((struct __pyx_obj_6PyCafe_pvctrl *)__pyx_t_1);
__pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">050</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">054</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
<pre class='cython code score-1 '> __pyx_t_1 = ((PyObject *)((void *)__pyx_v_callback));
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
__pyx_v_cbobjt = __pyx_t_1;
__pyx_t_1 = 0;
</pre><pre class="cython line score-47" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">051</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></pre>
<pre class='cython code score-47 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
</pre><pre class="cython line score-47" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">055</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></pre>
<pre class='cython code score-47 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
__pyx_t_3 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
__pyx_t_3 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_4 = __pyx_v_cbobjt; __pyx_t_5 = NULL;
@@ -690,7 +721,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCALL
if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_4)) {
PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
@@ -700,7 +731,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCCALL
if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_4)) {
PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_data)};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
@@ -708,7 +739,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
} else
#endif
{
__pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
__pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
if (__pyx_t_5) {
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -722,13 +753,13 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_data));
__pyx_t_2 = 0;
__pyx_t_3 = 0;
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 51, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
}
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">052</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">056</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -755,12 +786,12 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L5:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">053</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">057</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">054</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">055</span>: </pre>
<pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">056</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_event_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">058</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">059</span>: </pre>
<pre class="cython line score-13" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">060</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_event_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
<pre class='cython code score-13 '>void cy_event_handler_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle, std::string __pyx_v_pvname) {
PyObject *__pyx_v_cbobjt = NULL;
#ifdef WITH_THREAD
@@ -786,20 +817,20 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-0">&#xA0;<span class="">057</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">058</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">059</span>: <span class="c">#print(&quot; cy_event_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">060</span>: <span class="c">#(&lt;object&gt;args[0])(&lt;int&gt;args[1], &lt;string&gt;args[2]) </span></pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">061</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">061</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">062</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">063</span>: <span class="c">#print(&quot; cy_event_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle/PVNAME :&quot;, handle, pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">064</span>: <span class="c">#(&lt;object&gt;args[0])(&lt;int&gt;args[1], &lt;string&gt;args[2]) </span></pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">065</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
<pre class='cython code score-1 '> __pyx_t_1 = ((PyObject *)__pyx_v_callback);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
__pyx_v_cbobjt = __pyx_t_1;
__pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">062</span>: <span class="c">#cbobjt=&lt;object&gt;args[0]</span></pre>
<pre class="cython line score-45" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">063</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">)</span></pre>
<pre class='cython code score-45 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
</pre><pre class="cython line score-0">&#xA0;<span class="">066</span>: <span class="c">#cbobjt=&lt;object&gt;args[0]</span></pre>
<pre class="cython line score-45" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">067</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">)</span></pre>
<pre class='cython code score-45 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
__pyx_t_3 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
__pyx_t_3 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_4 = __pyx_v_cbobjt; __pyx_t_5 = NULL;
@@ -817,7 +848,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCALL
if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_3};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
@@ -827,7 +858,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCCALL
if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_3};
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
@@ -835,7 +866,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
} else
#endif
{
__pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
__pyx_t_7 = <span class='py_c_api'>PyTuple_New</span>(2+__pyx_t_6);<span class='error_goto'> if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_7);
if (__pyx_t_5) {
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_5); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -846,15 +877,15 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
__pyx_t_2 = 0;
__pyx_t_3 = 0;
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 63, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_t_7, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
}
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">064</span>: <span class="c">#cbobjt=&lt;object&gt;(&lt;int&gt;args[0], pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">065</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">066</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">068</span>: <span class="c">#cbobjt=&lt;object&gt;(&lt;int&gt;args[0], pvname)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">069</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">070</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -881,11 +912,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L5:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">067</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">071</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">068</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">069</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_handle_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">072</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">073</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_handle_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
<pre class='cython code score-11 '>void cy_handle_handler_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle) {
PyObject *__pyx_v_cbobjt = NULL;
#ifdef WITH_THREAD
@@ -909,16 +940,16 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-0">&#xA0;<span class="">070</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">071</span>: <span class="c">#print(&quot; cy_handle_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle:&quot;, handle)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">072</span>: </pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">073</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">074</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">075</span>: <span class="c">#print(&quot; cy_handle_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle:&quot;, handle)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">076</span>: </pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">077</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
<pre class='cython code score-1 '> __pyx_t_1 = ((PyObject *)__pyx_v_callback);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
__pyx_v_cbobjt = __pyx_t_1;
__pyx_t_1 = 0;
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">074</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 74, __pyx_L1_error)</span>
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">078</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 78, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_3 = __pyx_v_cbobjt; __pyx_t_4 = NULL;
@@ -934,11 +965,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_3, __pyx_t_2);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 74, __pyx_L1_error)</span>
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 78, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">075</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">079</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -965,11 +996,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L5:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">076</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">080</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">077</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">078</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_connect_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">081</span>: </pre>
<pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">082</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_connect_handler_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span></pre>
<pre class='cython code score-14 '>void cy_connect_handler_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle, std::string __pyx_v_pvname, int __pyx_v_status) {
PyObject *__pyx_v_cbobjt = NULL;
#ifdef WITH_THREAD
@@ -996,28 +1027,28 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-0">&#xA0;<span class="">079</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">080</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">081</span>: <span class="nb">int</span> <span class="n">status</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">082</span>: <span class="c">#print(&quot; cy_connect_handler_wrapper ====+++CONNECT++++++++++= Handle/PV/Status:&quot;, handle, pvname, status)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">083</span>: <span class="c">#print(&quot; callback is &quot;, &lt;object&gt; callback)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">084</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">085</span>: <span class="k">if</span> <span class="n">callback</span><span class="p">:</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">083</span>: <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">084</span>: <span class="n">string</span> <span class="n">pvname</span><span class="p">,</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">085</span>: <span class="nb">int</span> <span class="n">status</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">086</span>: <span class="c">#print(&quot; cy_connect_handler_wrapper ====+++CONNECT++++++++++= Handle/PV/Status:&quot;, handle, pvname, status)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">087</span>: <span class="c">#print(&quot; callback is &quot;, &lt;object&gt; callback)</span></pre>
<pre class="cython line score-0">&#xA0;<span class="">088</span>: </pre>
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">089</span>: <span class="k">if</span> <span class="n">callback</span><span class="p">:</span></pre>
<pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_callback != 0);
if (__pyx_t_1) {
/* … */
}
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">086</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">090</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="n">callback</span></pre>
<pre class='cython code score-1 '> __pyx_t_2 = ((PyObject *)__pyx_v_callback);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2);
__pyx_v_cbobjt = __pyx_t_2;
__pyx_t_2 = 0;
</pre><pre class="cython line score-50" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">087</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">status</span><span class="p">)</span></pre>
<pre class='cython code score-50 '> __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
</pre><pre class="cython line score-50" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">091</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">pvname</span><span class="p">,</span> <span class="n">status</span><span class="p">)</span></pre>
<pre class='cython code score-50 '> __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
__pyx_t_4 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_4 = <span class='pyx_c_api'>__pyx_convert_PyStr_string_to_py_std__in_string</span>(__pyx_v_pvname);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
__pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyInt_From_int</span>(__pyx_v_status);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyInt_From_int</span>(__pyx_v_status);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_6 = __pyx_v_cbobjt; __pyx_t_7 = NULL;
@@ -1035,7 +1066,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCALL
if (<span class='py_c_api'>PyFunction_Check</span>(__pyx_t_6)) {
PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5};
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyFunction_FastCall</span>(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
@@ -1046,7 +1077,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
#if CYTHON_FAST_PYCCALL
if (<span class='pyx_c_api'>__Pyx_PyFastCFunction_Check</span>(__pyx_t_6)) {
PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5};
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyCFunction_FastCall</span>(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_7); __pyx_t_7 = 0;
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
@@ -1055,7 +1086,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
} else
#endif
{
__pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(3+__pyx_t_8);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
if (__pyx_t_7) {
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_7); <span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
@@ -1069,14 +1100,14 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_6, __pyx_t_9, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 87, __pyx_L1_error)</span>
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_6, __pyx_t_9, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 91, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
}
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_6); __pyx_t_6 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
</pre><pre class="cython line score-0">&#xA0;<span class="">088</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">089</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">092</span>: </pre>
<pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">093</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -1103,12 +1134,12 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L6:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">090</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">094</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L4_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">091</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">092</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">093</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_cb_handle_get_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span> <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">095</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">096</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">097</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_cb_handle_get_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span> <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class='cython code score-11 '>void cy_cb_handle_get_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle) {
PyObject *__pyx_v_cbobjt = NULL;
#ifdef WITH_THREAD
@@ -1132,10 +1163,10 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">094</span>: <span class="k">print</span><span class="p">(</span><span class="s">&quot; py_cb_handle_get_wrapper+++++++++++++GET++++++++++= Handle:&quot;</span><span class="p">,</span> <span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-14 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 94, __pyx_L1_error)</span>
</pre><pre class="cython line score-14" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">098</span>: <span class="k">print</span><span class="p">(</span><span class="s">&quot; py_cb_handle_get_wrapper+++++++++++++GET++++++++++= Handle:&quot;</span><span class="p">,</span> <span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-14 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 98, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
__pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 94, __pyx_L1_error)</span>
__pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 98, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_kp_u_py_cb_handle_get_wrapper_GET_Ha);
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_kp_u_py_cb_handle_get_wrapper_GET_Ha);
@@ -1143,17 +1174,17 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
<span class='py_macro_api'>PyTuple_SET_ITEM</span>(__pyx_t_2, 1, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_print, __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 94, __pyx_L1_error)</span>
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_print, __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 98, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">095</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
</pre><pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">099</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
<pre class='cython code score-1 '> __pyx_t_1 = ((PyObject *)((void *)__pyx_v_callback));
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
__pyx_v_cbobjt = __pyx_t_1;
__pyx_t_1 = 0;
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">096</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 96, __pyx_L1_error)</span>
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">100</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 100, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_3 = __pyx_v_cbobjt; __pyx_t_4 = NULL;
@@ -1169,11 +1200,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_3, __pyx_t_2);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 96, __pyx_L1_error)</span>
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 100, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">097</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">101</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -1200,12 +1231,12 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L5:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">098</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">102</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">099</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">100</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">101</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_cb_handle_put_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span> <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">103</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">104</span>: </pre>
<pre class="cython line score-11" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">105</span>: <span class="k">cdef</span> <span class="kr">public</span> <span class="kt">void</span> <span class="nf">cy_cb_handle_put_wrapper</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span> <span class="n">callback</span><span class="p">,</span> <span class="nb">unsigned</span> <span class="nb">int</span> <span class="n">handle</span><span class="p">)</span> <span class="k">with</span> <span class="k">gil</span><span class="p">:</span></pre>
<pre class='cython code score-11 '>void cy_cb_handle_put_wrapper(void *__pyx_v_callback, unsigned int __pyx_v_handle) {
PyObject *__pyx_v_cbobjt = NULL;
#ifdef WITH_THREAD
@@ -1229,14 +1260,14 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
<span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
#endif
}
</pre><pre class="cython line score-0">&#xA0;<span class="">102</span>: <span class="c">#print(&quot; py_cb_handle_put_wrapper+++++++++++++PUT++++++++++= Handle:&quot;, handle)</span></pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">103</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">106</span>: <span class="c">#print(&quot; py_cb_handle_put_wrapper+++++++++++++PUT++++++++++= Handle:&quot;, handle)</span></pre>
<pre class="cython line score-1" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">107</span>: <span class="n">cbobjt</span><span class="o">=</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">void</span> <span class="o">*&gt;</span> <span class="n">callback</span><span class="p">)</span></pre>
<pre class='cython code score-1 '> __pyx_t_1 = ((PyObject *)((void *)__pyx_v_callback));
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_1);
__pyx_v_cbobjt = __pyx_t_1;
__pyx_t_1 = 0;
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">104</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 104, __pyx_L1_error)</span>
</pre><pre class="cython line score-19" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">108</span>: <span class="n">cbobjt</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></pre>
<pre class='cython code score-19 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyInt_From_unsigned_int</span>(__pyx_v_handle);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 108, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_cbobjt);
__pyx_t_3 = __pyx_v_cbobjt; __pyx_t_4 = NULL;
@@ -1252,11 +1283,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : <span class='pyx_c_api'>__Pyx_PyObject_CallOneArg</span>(__pyx_t_3, __pyx_t_2);
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 104, __pyx_L1_error)</span>
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(3, 108, __pyx_L1_error)</span>
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">105</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
</pre><pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">109</span>: <span class="k">with</span> <span class="k">nogil</span><span class="p">:</span></pre>
<pre class='cython code score-6 '> {
#ifdef WITH_THREAD
PyThreadState *_save;
@@ -1283,10 +1314,10 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
__pyx_L5:;
}
}
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">106</span>: <span class="k">return</span></pre>
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">110</span>: <span class="k">return</span></pre>
<pre class='cython code score-0 '> goto __pyx_L3_return;
}
</pre><pre class="cython line score-0">&#xA0;<span class="">107</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">108</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">109</span>: <span class="c"># ***********public***************</span></pre>
</pre><pre class="cython line score-0">&#xA0;<span class="">111</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">112</span>: </pre>
<pre class="cython line score-0">&#xA0;<span class="">113</span>: <span class="c"># ***********public***************</span></pre>
</div></body></html>

View File

@@ -20,22 +20,26 @@ cdef public void cy_data_event_handler_wrapper(void * callback,
string pvname,
PVDataHolder pvd) with gil:
global py_cb
global py_cb
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(1)= Handle/PVNAME :", handle, pvname)
cdef pvdata data = PVDataHolderToStruct(pvd)
#data.show()
py_cb = <object>(<void *> callback)
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(2)= Handle/PVNAME :", handle, pvname)
cdef HandleHelper hh
mpid = hh.getUsrArgsAsUInt(handle)
#print("monitorId", mpid)
#monDictGlobal[mpid](handle, pvname, data)
<object>py_cb(handle, pvname, data)
try:
#data.show()
py_cb = <object>(<void *> callback)
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(2)= Handle/PVNAME :", handle, pvname)
##cdef HandleHelper hh
## mpid = hh.getUsrArgsAsUInt(handle)
#print("monitorId", mpid)
#monDictGlobal[mpid](handle, pvname, data)
<object>py_cb(handle, pvname, data)
#if monDictGlobal[mpid] != <object>py_cb:
# print( monDictGlobal[mpid])
# print( <object>py_cb)
#if monDictGlobal[mpid] != <object>py_cb:
# print( monDictGlobal[mpid])
# print( <object>py_cb)
except TypeError:
pass
with nogil:
return

View File

@@ -0,0 +1,109 @@
cdef object py_cb_handle = None
cdef object py_cb_handle_open = None
cdef object cbobjt = None
# ***********public or api***************
# For when with pvdata
cdef public void cy_monitor_handler_wrapper(void * callback) with gil:
cbobjt=<object> (<void *> callback)
cbobjt()
with nogil:
return
cdef public void cy_data_event_handler_wrapper(void * callback,
unsigned int handle,
string pvname,
PVDataHolder pvd) with gil:
global py_cb
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(1)= Handle/PVNAME :", handle, pvname)
cdef pvdata data = PVDataHolderToStruct(pvd)
#data.show()
py_cb = <object>(<void *> callback)
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVDATA++++++(2)= Handle/PVNAME :", handle, pvname)
cdef HandleHelper hh
mpid = hh.getUsrArgsAsUInt(handle)
#print("monitorId", mpid)
#monDictGlobal[mpid](handle, pvname, data)
<object>py_cb(handle, pvname, data)
#if monDictGlobal[mpid] != <object>py_cb:
# print( monDictGlobal[mpid])
# print( <object>py_cb)
with nogil:
return
cdef public void cy_ctrl_event_handler_wrapper(void * callback,
unsigned int handle,
string pvname,
PVCtrlHolder pvc) with gil:
#print(" cy_data_event_handler_wrapper=====+++++++++++++++PVCTRL++++++= Handle/PVNAME :", handle, pvname)
cdef pvctrl data = PVCtrlHolderToStruct(pvc)
cbobjt=<object> (<void *> callback)
cbobjt(handle, pvname, data)
with nogil:
return
cdef public void cy_event_handler_wrapper(void * callback,
unsigned int handle,
string pvname) with gil:
#print(" cy_event_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle/PVNAME :", handle, pvname)
#(<object>args[0])(<int>args[1], <string>args[2])
cbobjt=<object> callback
#cbobjt=<object>args[0]
cbobjt(handle, pvname)
#cbobjt=<object>(<int>args[0], pvname)
with nogil:
return
cdef public void cy_handle_handler_wrapper(void * callback,
unsigned int handle) with gil:
#print(" cy_handle_handler_wrapper=====+++++++++++++++HANDLEPV++++++= Handle:", handle)
cbobjt=<object> callback
cbobjt(handle)
with nogil:
return
cdef public void cy_connect_handler_wrapper(void * callback,
unsigned int handle,
string pvname,
int status) with gil:
#print(" cy_connect_handler_wrapper ====+++CONNECT++++++++++= Handle/PV/Status:", handle, pvname, status)
#print(" callback is ", <object> callback)
if callback:
cbobjt=<object> callback
cbobjt(handle, pvname, status)
with nogil:
return
cdef public void cy_cb_handle_get_wrapper(void * callback, unsigned int handle) with gil:
print(" py_cb_handle_get_wrapper+++++++++++++GET++++++++++= Handle:", handle)
cbobjt=<object> (<void *> callback)
cbobjt(handle)
with nogil:
return
cdef public void cy_cb_handle_put_wrapper(void * callback, unsigned int handle) with gil:
#print(" py_cb_handle_put_wrapper+++++++++++++PUT++++++++++= Handle:", handle)
cbobjt=<object> (<void *> callback)
cbobjt(handle)
with nogil:
return
# ***********public***************

View File

@@ -33,319 +33,319 @@ cdef void set_base(cnp.ndarray arr, void * carr):
'''
cdef class CyCa:
cpdef readonly unsigned int CY_DBE_VALUE
cpdef readonly unsigned int CY_DBE_LOG
cpdef readonly unsigned int CY_DBE_ARCHIVE
cpdef readonly unsigned int CY_DBE_ALARM
cpdef readonly unsigned int CY_DBE_PROPERTY
cpdef readonly unsigned int CY_DBR_PRIMITIVE
cpdef readonly unsigned int CY_DBR_PLAIN
cpdef readonly unsigned int CY_DBR_STS
cpdef readonly unsigned int CY_DBR_TIME
cpdef readonly unsigned int CY_DBR_GR
cpdef readonly unsigned int CY_DBR_CTRL
cpdef readonly unsigned int CY_DBR_PUT
cpdef readonly unsigned int CY_DBR_STSACK
cpdef readonly unsigned int CY_DBR_CLASS
cpdef readonly unsigned int CY_DBR_NONE
cpdef readonly unsigned int CY_DBR_STRING # returns a NULL terminated string
cpdef readonly unsigned int CY_DBR_SHORT # returns an unsigned short
cpdef readonly unsigned int CY_DBR_INT # returns an unsigned short
cdef readonly unsigned int CY_DBE_VALUE
cdef readonly unsigned int CY_DBE_LOG
cdef readonly unsigned int CY_DBE_ARCHIVE
cdef readonly unsigned int CY_DBE_ALARM
cdef readonly unsigned int CY_DBE_PROPERTY
cdef readonly unsigned int CY_DBR_PRIMITIVE
cdef readonly unsigned int CY_DBR_PLAIN
cdef readonly unsigned int CY_DBR_STS
cdef readonly unsigned int CY_DBR_TIME
cdef readonly unsigned int CY_DBR_GR
cdef readonly unsigned int CY_DBR_CTRL
cdef readonly unsigned int CY_DBR_PUT
cdef readonly unsigned int CY_DBR_STSACK
cdef readonly unsigned int CY_DBR_CLASS
cdef readonly unsigned int CY_DBR_NONE
cdef readonly unsigned int CY_DBR_STRING # returns a NULL terminated string
cdef readonly unsigned int CY_DBR_SHORT # returns an unsigned short
cdef readonly unsigned int CY_DBR_INT # returns an unsigned short
# returns an IEEE floating point value
cpdef readonly unsigned int CY_DBR_FLOAT
cdef readonly unsigned int CY_DBR_FLOAT
# returns an unsigned short which is the enum item
cpdef readonly unsigned int CY_DBR_ENUM
cpdef readonly unsigned int CY_DBR_CHAR # returns an unsigned char
cpdef readonly unsigned int CY_DBR_LONG # returns an unsigned long
cdef readonly unsigned int CY_DBR_ENUM
cdef readonly unsigned int CY_DBR_CHAR # returns an unsigned char
cdef readonly unsigned int CY_DBR_LONG # returns an unsigned long
# returns a double precision floating point number
cpdef readonly unsigned int CY_DBR_DOUBLE
cdef readonly unsigned int CY_DBR_DOUBLE
# returns a string status structure (dbr_sts_string)
cpdef readonly unsigned int CY_DBR_STS_STRING
cdef readonly unsigned int CY_DBR_STS_STRING
# returns a short status structure (dbr_sts_short)
cpdef readonly unsigned int CY_DBR_STS_SHORT
cdef readonly unsigned int CY_DBR_STS_SHORT
# returns a short status structure (dbr_sts_int)
cpdef readonly unsigned int CY_DBR_STS_INT
cdef readonly unsigned int CY_DBR_STS_INT
# returns a float status structure (dbr_sts_float)
cpdef readonly unsigned int CY_DBR_STS_FLOAT
cdef readonly unsigned int CY_DBR_STS_FLOAT
# returns an enum status structure (dbr_sts_enum)
cpdef readonly unsigned int CY_DBR_STS_ENUM
cdef readonly unsigned int CY_DBR_STS_ENUM
# returns a char status structure (dbr_sts_char)
cpdef readonly unsigned int CY_DBR_STS_CHAR
cdef readonly unsigned int CY_DBR_STS_CHAR
# returns a long status structure (dbr_sts_long)
cpdef readonly unsigned int CY_DBR_STS_LONG
cdef readonly unsigned int CY_DBR_STS_LONG
# returns a double status structure (dbr_sts_double)
cpdef readonly unsigned int CY_DBR_STS_DOUBLE
cdef readonly unsigned int CY_DBR_STS_DOUBLE
# returns a string time structure (dbr_time_string)
cpdef readonly unsigned int CY_DBR_TIME_STRING
cdef readonly unsigned int CY_DBR_TIME_STRING
# returns a short time structure (dbr_time_short)
cpdef readonly unsigned int CY_DBR_TIME_SHORT
cdef readonly unsigned int CY_DBR_TIME_SHORT
# returns a short time structure (dbr_time_short)
cpdef readonly unsigned int CY_DBR_TIME_INT
cdef readonly unsigned int CY_DBR_TIME_INT
# returns a float time structure (dbr_time_float)
cpdef readonly unsigned int CY_DBR_TIME_FLOAT
cdef readonly unsigned int CY_DBR_TIME_FLOAT
# returns an enum time structure (dbr_time_enum)
cpdef readonly unsigned int CY_DBR_TIME_ENUM
cdef readonly unsigned int CY_DBR_TIME_ENUM
# returns a char time structure (dbr_time_char)
cpdef readonly unsigned int CY_DBR_TIME_CHAR
cdef readonly unsigned int CY_DBR_TIME_CHAR
# returns a long time structure (dbr_time_long)
cpdef readonly unsigned int CY_DBR_TIME_LONG
cdef readonly unsigned int CY_DBR_TIME_LONG
# returns a double time structure (dbr_time_double)
cpdef readonly unsigned int CY_DBR_TIME_DOUBLE
cdef readonly unsigned int CY_DBR_TIME_DOUBLE
# returns a graphic string structure (dbr_gr_string)
cpdef readonly unsigned int CY_DBR_GR_STRING
cdef readonly unsigned int CY_DBR_GR_STRING
# returns a graphic short structure (dbr_gr_short)
cpdef readonly unsigned int CY_DBR_GR_SHORT
cdef readonly unsigned int CY_DBR_GR_SHORT
# returns a graphic short structure (dbr_gr_int)
cpdef readonly unsigned int CY_DBR_GR_INT
cdef readonly unsigned int CY_DBR_GR_INT
# returns a graphic float structure (dbr_gr_float)
cpdef readonly unsigned int CY_DBR_GR_FLOAT
cdef readonly unsigned int CY_DBR_GR_FLOAT
# returns a graphic enum structure (dbr_gr_enum)
cpdef readonly unsigned int CY_DBR_GR_ENUM
cdef readonly unsigned int CY_DBR_GR_ENUM
# returns a graphic char structure (dbr_gr_char)
cpdef readonly unsigned int CY_DBR_GR_CHAR
cdef readonly unsigned int CY_DBR_GR_CHAR
# returns a graphic long structure (dbr_gr_long)
cpdef readonly unsigned int CY_DBR_GR_LONG
cdef readonly unsigned int CY_DBR_GR_LONG
# returns a graphic double structure (dbr_gr_double)
cpdef readonly unsigned int CY_DBR_GR_DOUBLE
cdef readonly unsigned int CY_DBR_GR_DOUBLE
# returns a control string structure (dbr_ctrl_int)
cpdef readonly unsigned int CY_DBR_CTRL_STRING
cdef readonly unsigned int CY_DBR_CTRL_STRING
# returns a control short structure (dbr_ctrl_short)
cpdef readonly unsigned int CY_DBR_CTRL_SHORT
cdef readonly unsigned int CY_DBR_CTRL_SHORT
# returns a control short structure (dbr_ctrl_int)
cpdef readonly unsigned int CY_DBR_CTRL_INT
cdef readonly unsigned int CY_DBR_CTRL_INT
# returns a control float structure (dbr_ctrl_float)
cpdef readonly unsigned int CY_DBR_CTRL_FLOAT
cdef readonly unsigned int CY_DBR_CTRL_FLOAT
# returns a control enum structure (dbr_ctrl_enum)
cpdef readonly unsigned int CY_DBR_CTRL_ENUM
cdef readonly unsigned int CY_DBR_CTRL_ENUM
# returns a control char structure (dbr_ctrl_char)
cpdef readonly unsigned int CY_DBR_CTRL_CHAR
cdef readonly unsigned int CY_DBR_CTRL_CHAR
# returns a control long structure (dbr_ctrl_long)
cpdef readonly unsigned int CY_DBR_CTRL_LONG
cdef readonly unsigned int CY_DBR_CTRL_LONG
# returns a control double structure (dbr_ctrl_double)
cpdef readonly unsigned int CY_DBR_CTRL_DOUBLE
cdef readonly unsigned int CY_DBR_CTRL_DOUBLE
# cpdef readonly int CY_ECA_TIMEOUT
# cdef readonly int CY_ECA_TIMEOUT
cpdef readonly int CY_ECA_NORMAL # 1
cpdef readonly int CY_ECA_ALLOCMEM # 48
cpdef readonly int CY_ECA_TOLARGE # 72
cpdef readonly int CY_ECA_TIMEOUT # 80
cpdef readonly int CY_ECA_BADTYPE # 114
cpdef readonly int CY_ECA_INTERNAL # 142
cpdef readonly int CY_ECA_GETFAIL # 152
cpdef readonly int CY_ECA_PUTFAIL # 160
cpdef readonly int CY_ECA_BADCOUNT # 176
cpdef readonly int CY_ECA_BADSTR # 186
cpdef readonly int CY_ECA_DISCONN # 192
cpdef readonly int CY_ECA_DBLCHNL # 200
cpdef readonly int CY_ECA_EVDISALLOW # 210
cpdef readonly int CY_ECA_BADMONID # 242
cpdef readonly int CY_ECA_BADMASK # 330
cpdef readonly int CY_ECA_IODONE # 339
cpdef readonly int CY_ECA_IOINPROGRESS # 347
cpdef readonly int CY_ECA_BADSYNCGRP # 354
cpdef readonly int CY_ECA_PUTCBINPROG # 362
cpdef readonly int CY_ECA_NORDACCESS # 368
cpdef readonly int CY_ECA_NOWTACCESS # 376
cpdef readonly int CY_ECA_ANACHRONISM # 386
cpdef readonly int CY_ECA_NOSEARCHADDR # 392
cpdef readonly int CY_ECA_NOCONVERT # 400
cpdef readonly int CY_ECA_BADCHID # 410
cpdef readonly int CY_ECA_BADFUNCPTR # 418
cpdef readonly int CY_ECA_ISATTACHED # 424
cpdef readonly int CY_ECA_UNAVAILINSERV # 432
cpdef readonly int CY_ECA_CHANDESTROY # 440
cpdef readonly int CY_ECA_BADPRIORITY # 450
cpdef readonly int CY_ECA_NOTTHREADED # 458
cpdef readonly int CY_ECA_16KARRAYCLIENT # 464
cpdef readonly int CY_ECA_CONNSEQTMO # 472
cpdef readonly int CY_ECA_UNRESPTMO # 480
cdef readonly int CY_ECA_NORMAL # 1
cdef readonly int CY_ECA_ALLOCMEM # 48
cdef readonly int CY_ECA_TOLARGE # 72
cdef readonly int CY_ECA_TIMEOUT # 80
cdef readonly int CY_ECA_BADTYPE # 114
cdef readonly int CY_ECA_INTERNAL # 142
cdef readonly int CY_ECA_GETFAIL # 152
cdef readonly int CY_ECA_PUTFAIL # 160
cdef readonly int CY_ECA_BADCOUNT # 176
cdef readonly int CY_ECA_BADSTR # 186
cdef readonly int CY_ECA_DISCONN # 192
cdef readonly int CY_ECA_DBLCHNL # 200
cdef readonly int CY_ECA_EVDISALLOW # 210
cdef readonly int CY_ECA_BADMONID # 242
cdef readonly int CY_ECA_BADMASK # 330
cdef readonly int CY_ECA_IODONE # 339
cdef readonly int CY_ECA_IOINPROGRESS # 347
cdef readonly int CY_ECA_BADSYNCGRP # 354
cdef readonly int CY_ECA_PUTCBINPROG # 362
cdef readonly int CY_ECA_NORDACCESS # 368
cdef readonly int CY_ECA_NOWTACCESS # 376
cdef readonly int CY_ECA_ANACHRONISM # 386
cdef readonly int CY_ECA_NOSEARCHADDR # 392
cdef readonly int CY_ECA_NOCONVERT # 400
cdef readonly int CY_ECA_BADCHID # 410
cdef readonly int CY_ECA_BADFUNCPTR # 418
cdef readonly int CY_ECA_ISATTACHED # 424
cdef readonly int CY_ECA_UNAVAILINSERV # 432
cdef readonly int CY_ECA_CHANDESTROY # 440
cdef readonly int CY_ECA_BADPRIORITY # 450
cdef readonly int CY_ECA_NOTTHREADED # 458
cdef readonly int CY_ECA_16KARRAYCLIENT # 464
cdef readonly int CY_ECA_CONNSEQTMO # 472
cdef readonly int CY_ECA_UNRESPTMO # 480
cpdef readonly int ICAFE_CS_NEVER_CONN
cpdef readonly int ICAFE_CS_PREV_CONN
cpdef readonly int ICAFE_CS_CONN
cpdef readonly int ICAFE_CS_CLOSED
cpdef readonly int ICAFE_CS_DISCONN
cpdef readonly int ICAFE_CS_UNKNOWN
cdef readonly int ICAFE_CS_NEVER_CONN
cdef readonly int ICAFE_CS_PREV_CONN
cdef readonly int ICAFE_CS_CONN
cdef readonly int ICAFE_CS_CLOSED
cdef readonly int ICAFE_CS_DISCONN
cdef readonly int ICAFE_CS_UNKNOWN
cpdef readonly int ICAFE_TYPENOTCONN
cpdef readonly int ICAFE_RULE_FALSE
cpdef readonly int ICAFE_BADCOUNT
cpdef readonly int ICAFE_CALLBACK_NOT_YET_INVOKED
cpdef readonly int ICAFE_WAITING_FOR_PREV_CALLBACK
cpdef readonly int ICAFE_CACHE_EMPTY
cpdef readonly int ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT
cpdef readonly int ICAFE_MONITOR_DELAYED_AS_CONN_DOWN
cpdef readonly int ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE
cpdef readonly int ICAFE_SET_AND_GET_MISMATCH
cdef readonly int ICAFE_TYPENOTCONN
cdef readonly int ICAFE_RULE_FALSE
cdef readonly int ICAFE_BADCOUNT
cdef readonly int ICAFE_CALLBACK_NOT_YET_INVOKED
cdef readonly int ICAFE_WAITING_FOR_PREV_CALLBACK
cdef readonly int ICAFE_CACHE_EMPTY
cdef readonly int ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT
cdef readonly int ICAFE_MONITOR_DELAYED_AS_CONN_DOWN
cdef readonly int ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE
cdef readonly int ICAFE_SET_AND_GET_MISMATCH
cpdef readonly int ICAFE_CA_OP_GET
cpdef readonly int ICAFE_CA_OP_PUT
cpdef readonly int ICAFE_CA_OP_CREATE_CHANNEL
cpdef readonly int ICAFE_CA_OP_ADD_EVENT
cpdef readonly int ICAFE_CA_OP_CLEAR_EVENT
cpdef readonly int ICAFE_CA_OP_OTHER
cpdef readonly int ICAFE_CA_OP_CONN_DOWN
cpdef readonly int ICAFE_CA_OP_CONN_UP
cdef readonly int ICAFE_CA_OP_GET
cdef readonly int ICAFE_CA_OP_PUT
cdef readonly int ICAFE_CA_OP_CREATE_CHANNEL
cdef readonly int ICAFE_CA_OP_ADD_EVENT
cdef readonly int ICAFE_CA_OP_CLEAR_EVENT
cdef readonly int ICAFE_CA_OP_OTHER
cdef readonly int ICAFE_CA_OP_CONN_DOWN
cdef readonly int ICAFE_CA_OP_CONN_UP
cpdef readonly int ICAFE_DAQ_RUN
cpdef readonly int ICAFE_DAQ_PAUSED
cpdef readonly int ICAFE_DAQ_STOPPED
cdef readonly int ICAFE_DAQ_RUN
cdef readonly int ICAFE_DAQ_PAUSED
cdef readonly int ICAFE_DAQ_STOPPED
cpdef readonly int ECAFE_LOAD_COLLECTION
cpdef readonly int ECAFE_LOAD_GROUP
cdef readonly int ECAFE_LOAD_COLLECTION
cdef readonly int ECAFE_LOAD_GROUP
cpdef readonly int ICAFE_NORMAL
cpdef readonly int ICAFE_SUCCESS
cdef readonly int ICAFE_NORMAL
cdef readonly int ICAFE_SUCCESS
cpdef readonly int ECAFE_NODATA
cpdef readonly int ECAFE_INVALID_TYPE
cpdef readonly int ECAFE_BADCOUNT
cpdef readonly int ECAFE_BADSTR
cpdef readonly int ECAFE_BADTYPE
cpdef readonly int ECAFE_NO_CONVERT
cpdef readonly int ECAFE_NULLCONTEXT
cpdef readonly int ECAFE_NULLCHID
cpdef readonly int ECAFE_NULLEVID
cpdef readonly int ECAFE_UNKNOWN_COLLECTION
cpdef readonly int ECAFE_EMPTY_COLLECTION
cpdef readonly int ECAFE_COLLECTION_PREV_DEF
cpdef readonly int ECAFE_COLLECTION_INVALID_MEMBER
cpdef readonly int ECAFE_RULE_FALSE
cpdef readonly int ECAFE_UNKNOWN_GROUP
cpdef readonly int ECAFE_EMPTY_GROUP
cpdef readonly int ECAFE_GROUP_PREV_DEF
cpdef readonly int ECAFE_INVALID_HANDLE
cpdef readonly int ECAFE_INVALID_GROUP_HANDLE
cpdef readonly int ECAFE_NORDACCESS
cpdef readonly int ECAFE_NOWTACCESS
cpdef readonly int ECAFE_TIMEOUT
cpdef readonly int ECAFE_CANNOT_OPEN_FILE
cpdef readonly int ECAFE_INVALID_SWITCH_CASE
cpdef readonly int ECAFE_PVALIAS_PREV_DEF
cpdef readonly int ECAFE_PVALIAS_INVALID
cpdef readonly int ECAFE_PVNAME_PREV_DEF_AS_PVALIAS
cpdef readonly int ECAFE_DEVICE_ATTRIB_NOT_FOUND
cpdef readonly int ECAFE_HASH_UNIQUEID_EXISTS
cpdef readonly int ECAFE_WRONG_CA_CONTEXT
cpdef readonly int ECAFE_INVALID_CAFENUM_POLICY_TYPE
cpdef readonly int ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED
cpdef readonly int ECAFE_INVALID_ENUM_INDEX
cpdef readonly int ECAFE_PVGROUP_GROUPHANDLE_MISMATCH
cpdef readonly int ECAFE_TIMEOUT_SET_AND_MATCH
cpdef readonly int ECAFE_HANDLE_MISMATCH_SET_AND_MATCH
cpdef readonly int ECAFE_INCONSISTENT_CONTAINER_CORRECTED
cdef readonly int ECAFE_NODATA
cdef readonly int ECAFE_INVALID_TYPE
cdef readonly int ECAFE_BADCOUNT
cdef readonly int ECAFE_BADSTR
cdef readonly int ECAFE_BADTYPE
cdef readonly int ECAFE_NO_CONVERT
cdef readonly int ECAFE_NULLCONTEXT
cdef readonly int ECAFE_NULLCHID
cdef readonly int ECAFE_NULLEVID
cdef readonly int ECAFE_UNKNOWN_COLLECTION
cdef readonly int ECAFE_EMPTY_COLLECTION
cdef readonly int ECAFE_COLLECTION_PREV_DEF
cdef readonly int ECAFE_COLLECTION_INVALID_MEMBER
cdef readonly int ECAFE_RULE_FALSE
cdef readonly int ECAFE_UNKNOWN_GROUP
cdef readonly int ECAFE_EMPTY_GROUP
cdef readonly int ECAFE_GROUP_PREV_DEF
cdef readonly int ECAFE_INVALID_HANDLE
cdef readonly int ECAFE_INVALID_GROUP_HANDLE
cdef readonly int ECAFE_NORDACCESS
cdef readonly int ECAFE_NOWTACCESS
cdef readonly int ECAFE_TIMEOUT
cdef readonly int ECAFE_CANNOT_OPEN_FILE
cdef readonly int ECAFE_INVALID_SWITCH_CASE
cdef readonly int ECAFE_PVALIAS_PREV_DEF
cdef readonly int ECAFE_PVALIAS_INVALID
cdef readonly int ECAFE_PVNAME_PREV_DEF_AS_PVALIAS
cdef readonly int ECAFE_DEVICE_ATTRIB_NOT_FOUND
cdef readonly int ECAFE_HASH_UNIQUEID_EXISTS
cdef readonly int ECAFE_WRONG_CA_CONTEXT
cdef readonly int ECAFE_INVALID_CAFENUM_POLICY_TYPE
cdef readonly int ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED
cdef readonly int ECAFE_INVALID_ENUM_INDEX
cdef readonly int ECAFE_PVGROUP_GROUPHANDLE_MISMATCH
cdef readonly int ECAFE_TIMEOUT_SET_AND_MATCH
cdef readonly int ECAFE_HANDLE_MISMATCH_SET_AND_MATCH
cdef readonly int ECAFE_INCONSISTENT_CONTAINER_CORRECTED
cpdef readonly int ECAFE_BPM_DATA_IS_INVALID
cdef readonly int ECAFE_BPM_DATA_IS_INVALID
cpdef readonly int ECAFE_BITSHUFF_DECOMPRESS
cpdef readonly int ECAFE_BITSHUFF_ALLOCMEM
cpdef readonly int ECAFE_BITSHUFF_REALLOCMEM
cpdef readonly int ECAFE_BITSHUFF_BADCOUNT
cdef readonly int ECAFE_BITSHUFF_DECOMPRESS
cdef readonly int ECAFE_BITSHUFF_ALLOCMEM
cdef readonly int ECAFE_BITSHUFF_REALLOCMEM
cdef readonly int ECAFE_BITSHUFF_BADCOUNT
cpdef readonly int ECAFE_BSREAD_MULTIPART_MESS_NODATA
cpdef readonly int ECAFE_BSREAD_PARSEFAIL_MAINHEADER
cpdef readonly int ECAFE_BSREAD_PARSEFAIL_DATAHEADER
cpdef readonly int ECAFE_BSREAD_ZMQSTREAM_NULL
cdef readonly int ECAFE_BSREAD_MULTIPART_MESS_NODATA
cdef readonly int ECAFE_BSREAD_PARSEFAIL_MAINHEADER
cdef readonly int ECAFE_BSREAD_PARSEFAIL_DATAHEADER
cdef readonly int ECAFE_BSREAD_ZMQSTREAM_NULL
cpdef readonly int ERRNO_EINTR
cpdef readonly int ERRNO_EAGAIN
cpdef readonly int ERRNO_EFAULT
cpdef readonly int ERRNO_EINVAL
cpdef readonly int ERRNO_ENOTSOCK
cpdef readonly int ERRNO_EPROTONOSUPPORT
cdef readonly int ERRNO_EINTR
cdef readonly int ERRNO_EAGAIN
cdef readonly int ERRNO_EFAULT
cdef readonly int ERRNO_EINVAL
cdef readonly int ERRNO_ENOTSOCK
cdef readonly int ERRNO_EPROTONOSUPPORT
cpdef readonly int SEV_NO_ALARM
cpdef readonly int SEV_MINOR
cpdef readonly int SEV_MAJOR
cpdef readonly int SEV_INVALID
cdef readonly int SEV_NO_ALARM
cdef readonly int SEV_MINOR
cdef readonly int SEV_MAJOR
cdef readonly int SEV_INVALID
cpdef readonly int STAT_NO_ALARM
cpdef readonly int STAT_READ
cpdef readonly int STAT_WRITE
cpdef readonly int STAT_HIHI
cpdef readonly int STAT_HIGH
cpdef readonly int STAT_LOLO
cpdef readonly int STAT_LOW
cpdef readonly int STAT_STATE
cpdef readonly int STAT_COS
cpdef readonly int STAT_COMM
cpdef readonly int STAT_TIMEOUT
cpdef readonly int STAT_HWLIMIT
cpdef readonly int STAT_CALC
cpdef readonly int STAT_SCAN
cpdef readonly int STAT_LINK
cpdef readonly int STAT_SOFT
cpdef readonly int STAT_BAD_SUB
cpdef readonly int STAT_UDF
cpdef readonly int STAT_DISABLE
cpdef readonly int STAT_SIMM
cpdef readonly int STAT_READ_ACCESS
cpdef readonly int STAT_WRITE_ACCESS
cdef readonly int STAT_NO_ALARM
cdef readonly int STAT_READ
cdef readonly int STAT_WRITE
cdef readonly int STAT_HIHI
cdef readonly int STAT_HIGH
cdef readonly int STAT_LOLO
cdef readonly int STAT_LOW
cdef readonly int STAT_STATE
cdef readonly int STAT_COS
cdef readonly int STAT_COMM
cdef readonly int STAT_TIMEOUT
cdef readonly int STAT_HWLIMIT
cdef readonly int STAT_CALC
cdef readonly int STAT_SCAN
cdef readonly int STAT_LINK
cdef readonly int STAT_SOFT
cdef readonly int STAT_BAD_SUB
cdef readonly int STAT_UDF
cdef readonly int STAT_DISABLE
cdef readonly int STAT_SIMM
cdef readonly int STAT_READ_ACCESS
cdef readonly int STAT_WRITE_ACCESS
# ctypedef enum ChannelRequestPolicyKind:
cpdef readonly unsigned int WITHOUT_CALLBACK
cpdef readonly unsigned int WITH_CALLBACK_DEFAULT
cpdef readonly unsigned int WITH_CALLBACK_USER_SUPPLIED
cdef readonly unsigned int WITHOUT_CALLBACK
cdef readonly unsigned int WITH_CALLBACK_DEFAULT
cdef readonly unsigned int WITH_CALLBACK_USER_SUPPLIED
# ChannelFlushSendBufferPolicyKind:
cpdef readonly unsigned int WITH_FLUSH_IO
cpdef readonly unsigned int WITH_PEND_IO
cpdef readonly unsigned int WITH_PEND_EVENT
cpdef readonly unsigned int WITH_POLL
cdef readonly unsigned int WITH_FLUSH_IO
cdef readonly unsigned int WITH_PEND_IO
cdef readonly unsigned int WITH_PEND_EVENT
cdef readonly unsigned int WITH_POLL
# ChannelWhenToFlushSendBufferPolicyKind:
cpdef readonly unsigned int FLUSH_AUTOMATIC
cpdef readonly unsigned int FLUSH_NOW
cpdef readonly unsigned int FLUSH_AFTER_EACH_CHANNEL_CREATION
cpdef readonly unsigned int FLUSH_AFTER_EACH_CHANNEL_SUBSCRIPTION
cpdef readonly unsigned int FLUSH_AFTER_EACH_MESSAGE
cpdef readonly unsigned int FLUSH_AFTER_EACH_GROUP_CREATION
cpdef readonly unsigned int FLUSH_DESIGNATED_TO_CLIENT
cdef readonly unsigned int FLUSH_AUTOMATIC
cdef readonly unsigned int FLUSH_NOW
cdef readonly unsigned int FLUSH_AFTER_EACH_CHANNEL_CREATION
cdef readonly unsigned int FLUSH_AFTER_EACH_CHANNEL_SUBSCRIPTION
cdef readonly unsigned int FLUSH_AFTER_EACH_MESSAGE
cdef readonly unsigned int FLUSH_AFTER_EACH_GROUP_CREATION
cdef readonly unsigned int FLUSH_DESIGNATED_TO_CLIENT
# ChannelGetCacheWaitPolicyKind:
cpdef readonly unsigned int GET_CACHE_NO_CHECK
cpdef readonly unsigned int GET_CACHE_NO_WAIT
cpdef readonly unsigned int GET_CACHE_NOW
cpdef readonly unsigned int GET_CACHE_WAIT
cdef readonly unsigned int GET_CACHE_NO_CHECK
cdef readonly unsigned int GET_CACHE_NO_WAIT
cdef readonly unsigned int GET_CACHE_NOW
cdef readonly unsigned int GET_CACHE_WAIT
# ChannelGetActionWhenMonitorPolicyKind:
cpdef readonly unsigned int GET_FROM_CACHE
cpdef readonly unsigned int GET_FROM_IOC
cdef readonly unsigned int GET_FROM_CACHE
cdef readonly unsigned int GET_FROM_IOC
# ChannelRequestDataTypePolicyKind:
cpdef readonly unsigned int NATIVE_DATATYPE
cdef readonly unsigned int NATIVE_DATATYPE
# The smaller in byte size of type requested and native datatype
cpdef readonly unsigned int LOWEST_DATATYPE
cdef readonly unsigned int LOWEST_DATATYPE
# ChannelWaitForResponsePolicyKind:
cpdef readonly unsigned int BLOCKING
cpdef readonly unsigned int WAIT
cpdef readonly unsigned int NON_BLOCKING
cpdef readonly unsigned int NO_WAIT
cdef readonly unsigned int BLOCKING
cdef readonly unsigned int WAIT
cdef readonly unsigned int NON_BLOCKING
cdef readonly unsigned int NO_WAIT
# StatusMessageKind:
cpdef readonly unsigned int NO_MESSAGE
cpdef readonly unsigned int PRE_REQUEST
cpdef readonly unsigned int FROM_REQUEST
cpdef readonly unsigned int FROM_PEND
cpdef readonly unsigned int FROM_CALLBACK
cpdef readonly unsigned int FROM_MESSAGE
cdef readonly unsigned int NO_MESSAGE
cdef readonly unsigned int PRE_REQUEST
cdef readonly unsigned int FROM_REQUEST
cdef readonly unsigned int FROM_PEND
cdef readonly unsigned int FROM_CALLBACK
cdef readonly unsigned int FROM_MESSAGE
# CallbackProgressKind:
cpdef readonly unsigned int NOT_INITIATED
cpdef readonly unsigned int PENDING
cpdef readonly unsigned int COMPLETE
cdef readonly unsigned int NOT_INITIATED
cdef readonly unsigned int PENDING
cdef readonly unsigned int COMPLETE
# deines.h:
cpdef readonly double DEFAULT_TIMEOUT_PEND_EVENT
cpdef readonly double DEFAULT_TIMEOUT_PEND_IO
cdef readonly double DEFAULT_TIMEOUT_PEND_EVENT
cdef readonly double DEFAULT_TIMEOUT_PEND_IO
cpdef readonly string INVALID_ENUM_RETURN_STRING
cpdef readonly short INVALID_ENUM_RETURN_VALUE
cdef readonly string INVALID_ENUM_RETURN_STRING
cdef readonly short INVALID_ENUM_RETURN_VALUE
cpdef readonly unsigned short BSREAD_ZEROMQ_HIGH_WATER_MARK
cpdef readonly short BSREAD_ZEROMQ_TIMEOUT_MS
cdef readonly unsigned short BSREAD_ZEROMQ_HIGH_WATER_MARK
cdef readonly short BSREAD_ZEROMQ_TIMEOUT_MS
def __cinit__(self):
@@ -1047,9 +1047,9 @@ cdef class pvgroup:
cdef public string name
cdef readonly int groupStatus
cdef public unsigned int groupHandle
cpdef public bint rule
cpdef public bint hasAlarm
cpdef public bint hasTS
cdef public bint rule
cdef public bint hasAlarm
cdef public bint hasTS
def __cinit__(self):
self.groupStatus = ICAFE_NORMAL
@@ -1301,14 +1301,14 @@ cdef pvdata PVDataHolderToStruct(PVDataHolder pvd, dt=None):
#print( p1.tsDateAsString, "//", p1.bsDateAsString)
pvd._etsNorm = pvd.getEpicsTimeStampAsUInt32()
cpdef ll = []
cdef ll = []
ll.append((pvd._etsNorm).secPastEpoch)
ll.append((pvd._etsNorm).nsec)
p1.ts = ll
pvd._etsDate = pvd.getEpicsTimeStampAsDate()
cpdef ld = []
cdef ld = []
ld.append((pvd._etsDate).year)
ld.append((pvd._etsDate).mon)
ld.append((pvd._etsDate).day)

File diff suppressed because it is too large Load Diff

View File

@@ -130,13 +130,26 @@ cdef extern from "time.h":
int tm_yday # days since January 1 0-365
int tm_isdst # Daylight Saving Time flag
#cdef extern from "epicsTime.h":
# ctypedef void throwError
#cdef extern from "epicsTime.h":
# ctypedef LIBCOM_API epicsTime
# cdef cppclass LIBCOM_API:
# ctypedef void throwError
cdef extern from "epicsTime.h":
cdef struct epicsTimeStamp:
unsigned int secPastEpoch # seconds since 0000 Jan 1, 1990
unsigned int nsec
cdef cppclass epicsTime:
epicsTime (const epicsTimeStamp &)
epicsTime & operator = (const epicsTimeStamp & )
#epicsTime (const epicsTimeStamp &)
#epicsTime & operator = (const epicsTimeStamp & )
void throwError (int)
epicsTime()
cdef struct local_tm_nano_sec:
tm ansi_tm
unsigned long nSec
@@ -1356,6 +1369,8 @@ cdef extern from "cafe.h":
int match(double, const unsigned int, double tolerance, double timeout, bint printFlag) nogil
int matchMany(vector[double], vector[unsigned int], double tolerance, double timeout, bint printFlag) nogil
int matchManyWithStatus(vector[double], vector[unsigned int], double tolerance, double timeout, bint printFlag, vector[int] &) nogil
#int readDBPMOffsets(DBPMKeeper &)
#int getDBPM(DBPMKeeper &) nogil

View File

@@ -1664,7 +1664,7 @@ cdef class CyCafe:
cdef HandleHelper hh
hh._etsNorm = self.hh.getEpicsTimeStampAsUInt32(handlePV)
cpdef ll = []
cdef ll = []
ll.append(hh._etsNorm.secPastEpoch)
ll.append(hh._etsNorm.nsec)
@@ -1675,7 +1675,7 @@ cdef class CyCafe:
def getTimeStampAsDate(self, handlePV):
cdef HandleHelper hh
cpdef ld = []
cdef ld = []
hh._etsDate = self.hh.getEpicsTimeStampAsDate(handlePV)
ld.append(hh._etsDate.year)
@@ -1690,7 +1690,7 @@ cdef class CyCafe:
############################################################################
### Allow user to choose whether or not to open #####
cpdef checkForHandle(self, str pv, bint force=True):
def checkForHandle(self, str pv, bint force=True):
cdef unsigned int _handle = 0
_handle = self.hh.getHandleFromPV(pv)
if _handle == 0:
@@ -1703,7 +1703,7 @@ cdef class CyCafe:
############################################################################
############################################################################
cpdef checkForHandleList(self, list pvList, bint force=True):
def checkForHandleList(self, list pvList, bint force=True):
cdef unsigned int nToOpen = 0
handleList = []
@@ -1724,7 +1724,7 @@ cdef class CyCafe:
############################################################################
############################################################################
cpdef checkForGroupHandle(self, str gName, bint force=True):
def checkForGroupHandle(self, str gName, bint force=True):
cdef unsigned int _ghandle = 0
_ghandle = self.hh.getGroupHandleFromGroupName(gName)
if _ghandle == 0:
@@ -3428,7 +3428,7 @@ cdef class CyCafe:
cdef CAFEDataTypeCode cdt
pvdList = []
cpdef pvdata p1
cdef pvdata p1
cdef bytes bytesVal
@@ -4069,7 +4069,7 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
nelemPrevious = []
print("<========getScalarList=====>")
for i in range(0, len(handleList)):
nelemPrevious.append(self._c_cafe.setNelemToOne(handleList[i]))
@@ -4103,7 +4103,7 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
with nogil:
status = self._c_cafe.getV(v, vStatus)
print("getScalarList")
#for i in range(0, len(vStatus)):
# print (vStatus[i])
# print("====")
@@ -4136,7 +4136,7 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
cdef unsigned int dtcheck = CAFE_NOT_REQUESTED # native type not yet know
dtcheck = getMatchedDataType(dt, dtcheck)
print ("dt=", dt, "dtcheck=", dtcheck)
#print ("dt=", dt, "dtcheck=", dtcheck)
if dtcheck in [CAFE_STRING]:
@@ -4240,11 +4240,11 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
cdef PVDataHolder * pvd = self._c_cafe.getPVData(v)
for i in range (0, len(handleList)):
print (pvd[i].getPVName(), pvd[i].getAsString(), " [",i,"]", pvd[i].getStatus())
#for i in range (0, len(handleList)):
# print (pvd[i].getPVName(), pvd[i].getAsString(), " [",i,"]", pvd[i].getStatus())
print ("-----------------------------------------------------------------")
# cdef PVDataHolder * pvd = \
# <PVDataHolder *>malloc( 100000000 + \
@@ -4303,7 +4303,7 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
dtn = pvd[i].getDataType()
dtcheck = getMatchedDataType(dt, dtn)
print ("dt=", dt, "dtn=", dtn, "dtcheck=", dtcheck)
#print ("dt=", dt, "dtn=", dtn, "dtcheck=", dtcheck)
#print (pvd[i].getAsString())
#print (pvd[i].getAsDouble())
@@ -4360,7 +4360,7 @@ First input argument, should be a 'list' of of type <class 'int'> if handles or
print("Entering 0 for element", i,
"as channel is not connected!")
print (" vstatus = ", vStatus[i] , " pvd[i].status ", pvd[i].getStatus() )
#print (" vstatus = ", vStatus[i] , " pvd[i].status ", pvd[i].getStatus() )
# free(pvd)
if (cacheFlag == True):
@@ -4782,7 +4782,7 @@ First input argument, should be of type <class 'int'> if group handle, else <cla
localListToStruct.append(p1)
cpdef pvgroup pg
cdef pvgroup pg
pg = pvgroup()
@@ -6382,7 +6382,7 @@ No of group members doe not match the length of callback object list")
#print(pvd[i].getAsString(0), " " , pvd[i].getStatus())
#print(pvd[i].getEpicsTimeStampAsUInt32().secPastEpoch, " ", pvd[i].getEpicsTimeStampAsUInt32().nsec)
localList.append(PVDataHolderToStruct(pvd[i], dt))
cpdef pvgroup pg
cdef pvgroup pg
pg = pvgroup()
@@ -6449,7 +6449,7 @@ No of group members doe not match the length of callback object list")
#print(pvd[i].getAsString(0), " " , pvd[i].getStatus())
#print(pvd[i].getEpicsTimeStampAsUInt32().secPastEpoch, " ", pvd[i].getEpicsTimeStampAsUInt32().nsec)
localList.append(PVDataHolderToStruct(pvd[i], dt))
cpdef pvgroup pg
cdef pvgroup pg
pg = pvgroup()
@@ -7858,6 +7858,53 @@ Lengths of first (handlePVSet) and third (handlePVMatch) input lists must match!
return status
############################################################################
def matchManyWithStatus(self, list valSet, list handlePVMatch, double tolerance, double timeout, bint printFlag):
cdef str _METHOD = "matchManyWithStatus(list valSet, list handlePVMatch, double tolerance, double timeout, bint printFlag)"
if (len(valSet) != len(handlePVMatch)):
raise Exception("EXCEPTION RAISED IN PyCafe def matchMany. \n\
Lengths of first (handlePVSet) and third (handlePVMatch) input lists must match!")
cdef vector[unsigned int] handleMatch
handleMatch.reserve(len(handlePVMatch))
cdef vector[double] valSetV
valSetV.reserve(len(valSet))
cdef vector[int] statusV
statusV.reserve(len(valSet))
for i in range(0, len(handlePVMatch)):
if isinstance(handlePVMatch[i], (int, long)):
handleMatch.push_back(handlePVMatch[i])
elif isinstance(handlePVMatch[i], (str)):
handleMatch.push_back(self.checkForHandle(handlePVMatch))
else:
_cafeException = CafeException(_type='CafeError', _source=_METHOD,
_error_info="First input argument, should be of type <class 'int'> if handle, else <class 'str'> if PV")
raise _cafeException
for i in range(0, len(valSet)):
valSetV.push_back(valSet[i])
cdef int status
with nogil:
status = self._c_cafe.matchManyWithStatus(
valSetV, handleMatch, tolerance, timeout, printFlag, statusV)
print("status from pxy", statusV)
if status != ICAFE_NORMAL:
if PYCAFE_PRINT_LEVEL >= PYCAFE_PRINT_LOW:
self._c_cafe.printStatusMessage(status)
return status, statusV
############################################################################
############################################################################
def match(self, double valSet, handlePVMatch, double tolerance, double timeout, bint printFlag):

29
README
View File

@@ -1,22 +1,25 @@
######
# Build for python 3.10:
# source build_py310_sls2.sh - links to epics7 gcc 7.5.0
# Build for python 3.8:
# source build_py38_sls2.sh - links to epics7 gcc 7.5.0
# Build for python 3.7:
# source build_py37.sh
# source build_py37_sls2.sh - links to epics7 gcc 7.3.0
#
# Special build for swissfel - with zmq libraries:
# source build_py37_sf.sh
#
# Special build for sls2 - links to epics7:
# source build_py37_sls2.sh
# Build for python 3.5:
# source build_py35.sh
# source build_py35_sls2.sh - links to epics7 gcc 7.3.0
#
# Special build for swissfel - with zmq libraries:
# source build_py35_sf.sh
# source build_py37_sf.sh - links to epics7 gcc 7.3.0
#
###
### Edit makefile to change INSTALL_PATH
### Install directory:
# ./python<version>/lib/${EPICS_HOST_ARCH}
# where <version> is 3.7, 3.7-sf, 3.7-sls2
# 3.5, 3.5-sf
# where <version> is 3.10-sls2, 3.9-sls2 3.8-sls2, 3.7-sls2
# 3.5-sls2, 3.7-sf
# make install_py37_sls
#

378
array- Normal file
View File

@@ -0,0 +1,378 @@
// <array> -*- C++ -*-
// Copyright (C) 2007-2017 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/** @file include/array
* This is a Standard C++ Library header.
*/
#ifndef _GLIBCXX_ARRAY
#define _GLIBCXX_ARRAY 1
#pragma GCC system_header
#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else
#include <utility>
#include <stdexcept>
#include <bits/stl_algobase.h>
#include <bits/range_access.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
template<typename _Tp, std::size_t _Nm>
struct __array_traits
{
typedef _Tp _Type[_Nm];
typedef __is_swappable<_Tp> _Is_swappable;
typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable;
static constexpr _Tp&
_S_ref(const _Type& __t, std::size_t __n) noexcept
{ return const_cast<_Tp&>(__t[__n]); }
static constexpr _Tp*
_S_ptr(const _Type& __t) noexcept
{ return const_cast<_Tp*>(__t); }
};
template<typename _Tp>
struct __array_traits<_Tp, 0>
{
struct _Type { };
typedef true_type _Is_swappable;
typedef true_type _Is_nothrow_swappable;
static constexpr _Tp&
_S_ref(const _Type&, std::size_t) noexcept
{ return *static_cast<_Tp*>(nullptr); }
static constexpr _Tp*
_S_ptr(const _Type&) noexcept
{ return nullptr; }
};
/**
* @brief A standard container for storing a fixed size sequence of elements.
*
* @ingroup sequences
*
* Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a
* <a href="tables.html#67">sequence</a>.
*
* Sets support random access iterators.
*
* @tparam Tp Type of element. Required to be a complete type.
* @tparam N Number of elements.
*/
template<typename _Tp, std::size_t _Nm>
struct array
{
typedef _Tp value_type;
typedef value_type* pointer;
typedef const value_type* const_pointer;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef value_type* iterator;
typedef const value_type* const_iterator;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
// Support for zero-sized arrays mandatory.
typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type;
typename _AT_Type::_Type _M_elems;
// No explicit construct/copy/destroy for aggregate type.
// DR 776.
void
fill(const value_type& __u)
{ std::fill_n(begin(), size(), __u); }
void
swap(array& __other)
noexcept(_AT_Type::_Is_nothrow_swappable::value)
{ std::swap_ranges(begin(), end(), __other.begin()); }
// Iterators.
_GLIBCXX17_CONSTEXPR iterator
begin() noexcept
{ return iterator(data()); }
_GLIBCXX17_CONSTEXPR const_iterator
begin() const noexcept
{ return const_iterator(data()); }
_GLIBCXX17_CONSTEXPR iterator
end() noexcept
{ return iterator(data() + _Nm); }
_GLIBCXX17_CONSTEXPR const_iterator
end() const noexcept
{ return const_iterator(data() + _Nm); }
_GLIBCXX17_CONSTEXPR reverse_iterator
rbegin() noexcept
{ return reverse_iterator(end()); }
_GLIBCXX17_CONSTEXPR const_reverse_iterator
rbegin() const noexcept
{ return const_reverse_iterator(end()); }
_GLIBCXX17_CONSTEXPR reverse_iterator
rend() noexcept
{ return reverse_iterator(begin()); }
_GLIBCXX17_CONSTEXPR const_reverse_iterator
rend() const noexcept
{ return const_reverse_iterator(begin()); }
_GLIBCXX17_CONSTEXPR const_iterator
cbegin() const noexcept
{ return const_iterator(data()); }
_GLIBCXX17_CONSTEXPR const_iterator
cend() const noexcept
{ return const_iterator(data() + _Nm); }
_GLIBCXX17_CONSTEXPR const_reverse_iterator
crbegin() const noexcept
{ return const_reverse_iterator(end()); }
_GLIBCXX17_CONSTEXPR const_reverse_iterator
crend() const noexcept
{ return const_reverse_iterator(begin()); }
// Capacity.
constexpr size_type
size() const noexcept { return _Nm; }
constexpr size_type
max_size() const noexcept { return _Nm; }
constexpr bool
empty() const noexcept { return size() == 0; }
// Element access.
_GLIBCXX17_CONSTEXPR reference
operator[](size_type __n) noexcept
{ return _AT_Type::_S_ref(_M_elems, __n); }
constexpr const_reference
operator[](size_type __n) const noexcept
{ return _AT_Type::_S_ref(_M_elems, __n); }
_GLIBCXX17_CONSTEXPR reference
at(size_type __n)
{
if (__n >= _Nm)
std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) "
">= _Nm (which is %zu)"),
__n, _Nm);
return _AT_Type::_S_ref(_M_elems, __n);
}
constexpr const_reference
at(size_type __n) const
{
// Result of conditional expression must be an lvalue so use
// boolean ? lvalue : (throw-expr, lvalue)
return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n)
: (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) "
">= _Nm (which is %zu)"),
__n, _Nm),
_AT_Type::_S_ref(_M_elems, 0));
}
_GLIBCXX17_CONSTEXPR reference
front() noexcept
{ return *begin(); }
constexpr const_reference
front() const noexcept
{ return _AT_Type::_S_ref(_M_elems, 0); }
_GLIBCXX17_CONSTEXPR reference
back() noexcept
{ return _Nm ? *(end() - 1) : *end(); }
constexpr const_reference
back() const noexcept
{
return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
: _AT_Type::_S_ref(_M_elems, 0);
}
_GLIBCXX17_CONSTEXPR pointer
data() noexcept
{ return _AT_Type::_S_ptr(_M_elems); }
_GLIBCXX17_CONSTEXPR const_pointer
data() const noexcept
{ return _AT_Type::_S_ptr(_M_elems); }
};
#if __cpp_deduction_guides >= 201606
template<typename _Tp, typename... _Up>
array(_Tp, _Up...)
-> array<enable_if_t<(is_same_v<_Tp, _Up> && ...), _Tp>,
1 + sizeof...(_Up)>;
#endif
// Array comparisons.
template<typename _Tp, std::size_t _Nm>
inline bool
operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
{ return std::equal(__one.begin(), __one.end(), __two.begin()); }
template<typename _Tp, std::size_t _Nm>
inline bool
operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
{ return !(__one == __two); }
template<typename _Tp, std::size_t _Nm>
inline bool
operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
{
return std::lexicographical_compare(__a.begin(), __a.end(),
__b.begin(), __b.end());
}
template<typename _Tp, std::size_t _Nm>
inline bool
operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
{ return __two < __one; }
template<typename _Tp, std::size_t _Nm>
inline bool
operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
{ return !(__one > __two); }
template<typename _Tp, std::size_t _Nm>
inline bool
operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
{ return !(__one < __two); }
// Specialized algorithms.
template<typename _Tp, std::size_t _Nm>
inline
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
// Constrained free swap overload, see p0185r1
typename enable_if<
_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value
>::type
#else
void
#endif
swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
noexcept(noexcept(__one.swap(__two)))
{ __one.swap(__two); }
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
template<typename _Tp, std::size_t _Nm>
typename enable_if<
!_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type
swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete;
#endif
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
constexpr _Tp&
get(array<_Tp, _Nm>& __arr) noexcept
{
static_assert(_Int < _Nm, "array index is within bounds");
return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
_S_ref(__arr._M_elems, _Int);
}
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
constexpr _Tp&&
get(array<_Tp, _Nm>&& __arr) noexcept
{
static_assert(_Int < _Nm, "array index is within bounds");
return std::move(_GLIBCXX_STD_C::get<_Int>(__arr));
}
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
constexpr const _Tp&
get(const array<_Tp, _Nm>& __arr) noexcept
{
static_assert(_Int < _Nm, "array index is within bounds");
return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
_S_ref(__arr._M_elems, _Int);
}
_GLIBCXX_END_NAMESPACE_CONTAINER
} // namespace std
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Tuple interface to class template array.
/// tuple_size
template<typename _Tp>
class tuple_size;
/// Partial specialization for std::array
template<typename _Tp, std::size_t _Nm>
struct tuple_size<_GLIBCXX_STD_C::array<_Tp, _Nm>>
: public integral_constant<std::size_t, _Nm> { };
/// tuple_element
template<std::size_t _Int, typename _Tp>
class tuple_element;
/// Partial specialization for std::array
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
struct tuple_element<_Int, _GLIBCXX_STD_C::array<_Tp, _Nm>>
{
static_assert(_Int < _Nm, "index is out of bounds");
typedef _Tp type;
};
template<typename _Tp, std::size_t _Nm>
struct __is_tuple_like_impl<_GLIBCXX_STD_C::array<_Tp, _Nm>> : true_type
{ };
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#ifdef _GLIBCXX_DEBUG
# include <debug/array>
#endif
#ifdef _GLIBCXX_PROFILE
# include <profile/array>
#endif
#endif // C++11
#endif // _GLIBCXX_ARRAY

21
build_py310_sls2.sh Normal file
View File

@@ -0,0 +1,21 @@
module unload gcc
module load gcc/7.5.0
#module load gcc/10.4.0
rm -f PyCafeDefs.pxi
ln -s PyCafeDefs_py37.pxi PyCafeDefs.pxi
rm -f PyCafe.cpp
rm -f PyCafe.h
rm -f PyCafe.pxd
ln -s PyCafe_sls.pxd PyCafe.pxd
rm -f PyCafe.pyx
ln -s PyCafe_sls.pyx PyCafe.pyx
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.9
source /opt/gfa/python 3.10
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
echo ${LD_PRELOAD}
python setup_py310_sls2.py build_ext -b ./python3.10-sls2/lib/${_EPICS_HOST_ARCH}
cp examples.py ./python3.10-sls2/lib/${_EPICS_HOST_ARCH}
unset LD_PRELOAD

View File

@@ -1,5 +1,5 @@
module unload gcc
module load gcc/7.3.0
module load gcc/6.3.0
#rm -f PyCafe.cpp
#rm -f PyCafe.h
#rm -f PyCafe.pxd

View File

@@ -1,11 +1,30 @@
module unload gcc
module load gcc/7.3.0
#SOURCE build_py37_sls2.sh first
#rm -f PyCafeDefs.pxi
#ln -s PyCafeDefs_py35.pxi PyCafeDefs.pxi
#rm -f PyCafe.cpp
#rm -f PyCafe.h
#rm -f PyCafe.pxd
#ln -s PyCafe_sls.pxd PyCafe.pxd
#rm -f PyCafe.pyx
#ln -s PyCafe_sls_py35.pyx PyCafe.pyx
#rm -f PyCafeDefs.pxi
#ln -s PyCafeDefs_py35.pxi PyCafeDefs.pxi
#rm -f PyCafe.cpp
#rm -f PyCafe.h
#rm -f PyCafe.pxd
#ln -s PyCafe_sls.pxd PyCafe.pxd
#rm -f PyCafe.pyx
#ln -s PyCafe_sls.pyx PyCafe.pyx
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.9
source /opt/gfa/python 3.5
python setup_py35_sls2.py build_ext -b ./python3.5-sls2/lib/${EPICS_HOST_ARCH}
cp examples.py ./python3.5-sls2/lib/${EPICS_HOST_ARCH}
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
echo ${LD_PRELOAD}
python setup_py35_sls2.py build_ext -b ./python3.5-sls2/lib/${_EPICS_HOST_ARCH}
cp examples.py ./python3.5-sls2/lib/${_EPICS_HOST_ARCH}
unset LD_PRELOAD

View File

@@ -6,6 +6,11 @@ rm -f PyCafe.pxd
ln -s PyCafe_sf.pxd PyCafe.pxd
rm -f PyCafe.pyx
ln -s PyCafe_sf.pyx PyCafe.pyx
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.9
source /opt/gfa/python 3.7
python setup_py37_sf.py build_ext -b ./python3.7-sf/lib/${EPICS_HOST_ARCH}
cp examples.py ./python3.7-sf/lib/${EPICS_HOST_ARCH}
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
echo ${LD_PRELOAD}
python setup_py37_sf.py build_ext -b ./python3.7-sf/lib/${_EPICS_HOST_ARCH}
cp examples.py ./python3.7-sf/lib/${_EPICS_HOST_ARCH}
unset LD_PRELOAD

View File

@@ -1,11 +1,20 @@
module unload gcc
module load gcc/7.3.0
rm -f PyCafeDefs.pxi
ln -s PyCafeDefs_py37.pxi PyCafeDefs.pxi
rm -f PyCafe.cpp
rm -f PyCafe.h
rm -f PyCafe.pxd
ln -s PyCafe_sls.pxd PyCafe.pxd
rm -f PyCafe.pyx
ln -s PyCafe_sls.pyx PyCafe.pyx
_EPICS_HOST_ARCH=${RHREL}-x86_64 #os.environ['EPICS_HOST_ARCH']
_EPICS_BASE=base-7.0.9
source /opt/gfa/python 3.7
python setup_py37_sls2.py build_ext -b ./python3.7-sls2/lib/${EPICS_HOST_ARCH}
cp examples.py ./python3.7-sls2/lib/${EPICS_HOST_ARCH}
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
echo ${LD_PRELOAD}
python setup_py37_sls2.py build_ext -b ./python3.7-sls2/lib/${_EPICS_HOST_ARCH}
cp examples.py ./python3.7-sls2/lib/${_EPICS_HOST_ARCH}
unset LD_PRELOAD

View File

@@ -1,11 +1,20 @@
module unload gcc
module load gcc/7.5.0
rm -f PyCafeDefs.pxi
ln -s PyCafeDefs_py37.pxi PyCafeDefs.pxi
rm -f PyCafe.cpp
rm -f PyCafe.h
rm -f PyCafe.pxd
ln -s PyCafe_sls.pxd PyCafe.pxd
rm -f PyCafe.pyx
ln -s PyCafe_sls.pyx PyCafe.pyx
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.9
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
echo ${LD_PRELOAD}
source /opt/gfa/python 3.8
python setup_py38_sls2.py build_ext -b ./python3.8-sls2/lib/${EPICS_HOST_ARCH}
cp examples.py ./python3.8-sls2/lib/${EPICS_HOST_ARCH}
python setup_py38_sls2.py build_ext -b ./python3.8-sls2/lib/${_EPICS_HOST_ARCH}
cp examples.py ./python3.8-sls2/lib/${_EPICS_HOST_ARCH}
unset LD_PRELOAD

47
examples.sh Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ]; then
echo "This shell is not interactive"
appName=$0
else
echo "This shell is interactive"
appName=$BASH_SOURCE
fi
# Select default Python Version here. Currently only 3.7 is supported
PYTHON_VERSION=3.7
if [ "$1" ]; then
if [ "$1" == "3.8" -o "$1" == "38" ]; then
echo "User requested python version $1 is not yet supported"
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
else
echo "User requested python version $1 is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
# For use if script is sourced rather than executed
appNameDefault="examples.sh"
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.9
. /opt/gfa/python $PYTHON_VERSION
export PYTHONPATH=.:
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
python examples.py
unset LD_PRELOAD

166242
inspect Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -5,11 +5,14 @@
##### CHANGE AS APPROPRIATE #################
#
_EPICS_HOST_ARCH=${RHREL}-x86_64
CAFE_CYCAFE_BASE=/opt/gfa/cafe/python/pycafe
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.15.1-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.15.1-sf-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.15.1-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-sf-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY35= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY37= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY38= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-gcc-7.5.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY310= $(CAFE_CYCAFE_BASE)/cafe-1.22.0-gcc-7.5.0/lib/${_EPICS_HOST_ARCH}
#############################################
.DEFAULT_GOAL := help
@@ -18,33 +21,44 @@ INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.15.1-gcc-7.3.0/lib/${EPICS_HOST_AR
help:
@echo "Options for make: install_py37 install_py37_sf install_py37_sls2 install_py35 install_py35_sf"
install_py37: python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
install_py37: python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_PY)
cp python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.7/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
install_py35: python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
install_py35: python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_PY)
cp python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
install_py37_sf: python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
install_py37_sf: python3.7-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
install_py35_sf: python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
install_py35_sf: python3.5-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SF)
cp python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.5-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
install_py37_sls2: python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
install_py35_sls2: python3.5-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2)
cp python3.5-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.5-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
install_py310_sls2: python3.10-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY310)
cp python3.10-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY310)
cp python3.10-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2_PY310)
install_py38_sls2: python3.8-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY38)
cp python3.8-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY38)
cp python3.8-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2_PY38)
install_py37_sls2: python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY37)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY37)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS_PY37)
install_py35_sls2: python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY35)
cp python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY35)
cp python3.5-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2_PY35)
clean:
rm -f *.o

View File

@@ -5,11 +5,13 @@
##### CHANGE AS APPROPRIATE #################
#
_EPICS_HOST_ARCH=${RHREL}-x86_64
CAFE_CYCAFE_BASE=/opt/gfa/cafe/python/pycafe
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sf-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sls2-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-1-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-1-sf-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-1-gcc-7.3.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY38= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-1-gcc-7.5.0/lib/${_EPICS_HOST_ARCH}
INSTALL_PATH_SLS2_PY310= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-1-gcc-7.5.0/lib/${_EPICS_HOST_ARCH}
#############################################
.DEFAULT_GOAL := help
@@ -18,30 +20,44 @@ INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sls2-gcc-7.3.0/lib/${EPICS_HO
help:
@echo "Options for make: install_py37 install_py37_sf install_py37_sls2 install_py35 install_py35_sf"
install_py37: python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
install_py37: python3.7/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_PY)
cp python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.7/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
cp python3.7/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.7/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
install_py35: python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
install_py35: python3.5/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_PY)
cp python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
cp python3.5/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
install_py37_sf: python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
install_py37_sf: python3.7-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.7-sf/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
install_py35_sf: python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
install_py35_sf: python3.5-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SF)
cp python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
cp python3.5-sf/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
install_py37_sls2: python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
install_py310_sls2: python3.10-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY310)
cp python3.10-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY310)
cp python3.10-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2_PY310)
install_py38_sls2: python3.8-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2_PY38)
cp python3.8-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2_PY38)
cp python3.8-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2_PY38)
install_py37_sls2: python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.7-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
install_py35_sls2: python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2)
cp python3.5-sls2/lib/${_EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.5-sls2/lib/${_EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
clean:
rm -f *.o

View File

@@ -7,9 +7,9 @@
CAFE_CYCAFE_BASE=/opt/gfa/cafe/python/pycafe
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.16.1-gcc-7.5.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.16.1-sf-gcc-7.5.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.16.1-gcc-7.5.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-gcc-7.5.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-sf-gcc-7.5.0/lib/${EPICS_HOST_ARCH}
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.21.0-gcc-10.4.0/lib/${EPICS_HOST_ARCH}
#############################################
.DEFAULT_GOAL := help
@@ -51,6 +51,11 @@ install_py38_sls2: python3.8-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_6
cp python3.8-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-38-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.8-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
install_py310_sls2: python3.10-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so
mkdir -p $(INSTALL_PATH_SLS2)
cp python3.10-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-310-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
cp python3.10-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
clean:
rm -f *.o

166242
operator Normal file

File diff suppressed because it is too large Load Diff

2533
out

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

64
setup_py310_sls2.py Normal file
View File

@@ -0,0 +1,64 @@
import os
import sys
from distutils.core import setup
from distutils.extension import Extension
from Cython.Compiler.Main import default_options
default_options['emit_linenums'] = True
from Cython.Build import cythonize
from numpy import get_include
#_GCC_VERSION='10.4.0'
#_CAFE_VERSION='1.20.1-py310-gcc-' + _GCC_VERSION
#_EPICS_VERSION='7.0.7'
_GCC_VERSION='7.5.0'
#_GCC_VERSION='10.4.0'
_CAFE_VERSION='1.22.0-py310-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.9'
_EPICS_HOST_ARCH =os.environ['RHREL'] + '-x86_64'
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
extra_objects = [ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libca.so',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libCom.so',
],
include_dirs=[ '/opt/gfa/python-3.10/latest/include/python3.10',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/os/Linux',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/compiler/gcc',
'/opt/gfa/cafe/boost/boost_1_61_0/include',
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/include',
'.', get_include()],
library_dirs=[ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH,
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib',
# '/opt/gfa/python-3.10/latest/lib'
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH,
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib'
],
libraries=['dl','cafe','Qt5Xml'])
], annotate=True,
compiler_directives={'embedsignature': False, 'language_level': 3,
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
'py2_import': False, 'warn.unreachable': False,
'remove_unreachable': False},
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
'PY_EXT_C': True, 'BS_CAFE': False,
'CAFE_VERSION': _CAFE_VERSION, 'EPICS_VERSION': _EPICS_VERSION }
)
)

View File

@@ -10,7 +10,7 @@ from numpy import get_include
_GCC_VERSION='7.3.0'
_CAFE_VERSION='1.16.0-epics3-py35-gcc-' + _GCC_VERSION
_EPICS_VERSION='3.14.12'
_EPICS_HOST_ARCH = os.environ['EPICS_HOST_ARCH'] #'SL6-x86_64' #os.environ['EPICS_HOST_ARCH']
_EPICS_HOST_ARCH=os.environ['RHREL'] +'-x86_64' #os.environ['EPICS_HOST_ARCH'] #'SL6-x86_64'
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],

View File

@@ -8,13 +8,18 @@ from Cython.Build import cythonize
from numpy import get_include
_GCC_VERSION='7.3.0'
_CAFE_VERSION='1.16.0-py35-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.6'
_EPICS_HOST_ARCH ='RHEL7-x86_64' #os.environ['EPICS_HOST_ARCH']
_CAFE_VERSION='1.22.0-py35-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.9'
_EPICS_HOST_ARCH=os.environ['RHREL'] +'-x86_64' #os.environ['EPICS_HOST_ARCH']
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
extra_objects = [ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libca.so',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libCom.so',
],
include_dirs=[ '/opt/gfa/python-3.5/latest/include/python3.5m',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/os/Linux',
@@ -29,8 +34,7 @@ setup(
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib',
'/opt/gfa/python-3.5/latest/lib'
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib'
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/'
@@ -40,7 +44,7 @@ setup(
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib'
],
libraries=['ca','Com','dl','cafe'])
libraries=['dl','cafe'])
], annotate=True,
compiler_directives={'embedsignature': False, 'language_level': 3,
'c_string_type': 'str', 'c_string_encoding' : 'ascii',

View File

@@ -7,46 +7,56 @@ default_options['emit_linenums'] = True
from Cython.Build import cythonize
from numpy import get_include
_CAFE_VERSION='1.14.5'
_EPICS_VERSION='3.14.12'
_GCC_VERSION='7.3.0'
_CAFE_VERSION='1.22.0-sf-py37-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.9'
_EPICS_HOST_ARCH =os.environ['RHREL'] + '-x86_64'
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
extra_objects = [ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libca.so',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libCom.so',
],
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
os.environ['EPICS'] + '/base/include',
os.environ['EPICS'] + '/base/include/os/Linux',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/os/Linux',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/compiler/gcc',
'/opt/gfa/cafe/boost/boost_1_61_0/include',
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py37-gcc-7.3.0/include',
'/include',
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/include',
'/opt/gfa/zmq/curl-7.54.1/include',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include',
'.', get_include()],
library_dirs=[ os.environ['EPICS'] + '/base/lib/' + os.environ['EPICS_HOST_ARCH'],
library_dirs=[ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH,
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py37-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'/lib/' + _EPICS_HOST_ARCH,
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
'/opt/gfa/zmq/curl-7.54.1/lib',
'/opt/gfa/python-3.7/latest/lib',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib'
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib',
'/opt/gfa/python-3.7/latest/lib'
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py37-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
'/opt/gfa/zmq/curl-7.54.1/lib',
'/opt/gfa/python-3.7/latest/lib',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib'
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH,
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/lib/' + _EPICS_HOST_ARCH,
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
'/opt/gfa/zmq/curl-7.54.1/lib',
'/opt/gfa/python-3.7/latest/lib',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib'
],
libraries=['ca','Com','dl','cafe'])
libraries=['dl','cafe','Qt5Xml'])
], annotate=True,
compiler_directives={'embedsignature': False, 'language_level': 3,
'c_string_type': 'str', 'c_string_encoding' : 'ascii',

View File

@@ -8,41 +8,41 @@ from Cython.Build import cythonize
from numpy import get_include
_CAFE_VERSION='1.14.4'
_CAFE_VERSION='1.14.5'
_EPICS_VERSION='3.14.12'
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
include_dirs=[ '/opt/gfa/python-3.8/latest/include/python3.8',
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
os.environ['EPICS'] + '/base/include',
os.environ['EPICS'] + '/base/include/os/Linux',
'/opt/gfa/cafe/boost/boost_1_61_0/include',
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py38-gcc-7.3.0/include',
'-sf-py37-gcc-7.3.0/include',
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/include',
'/opt/gfa/zmq/curl-7.54.1/include',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include',
'.', get_include()],
library_dirs=[ os.environ['EPICS'] + '/base/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py38-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'-sf-py37-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
'/opt/gfa/zmq/curl-7.54.1/lib',
'/opt/gfa/python-3.8/latest/lib',
'/opt/gfa/python-3.7/latest/lib',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib'
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'-sf-py38-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'-sf-py37-gcc-7.3.0/lib/' + os.environ['EPICS_HOST_ARCH'],
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
'/opt/gfa/zmq/curl-7.54.1/lib',
'/opt/gfa/python-3.8/latest/lib',
'/opt/gfa/python-3.7/latest/lib',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/7.3.0/lib'
],

View File

@@ -8,13 +8,20 @@ from Cython.Build import cythonize
from numpy import get_include
_GCC_VERSION='7.3.0'
_CAFE_VERSION='1.16.0-py37-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.6'
_EPICS_HOST_ARCH ='RHEL7-x86_64' #os.environ['EPICS_HOST_ARCH']
_CAFE_VERSION='1.22.0-py37-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.9'
_EPICS_HOST_ARCH=os.environ['RHREL'] + '-x86_64' #os.environ['EPICS_HOST_ARCH']
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
#extra_compile_args=['-fPIC'],
#extra_link_args=['-static'],
extra_objects = [ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libca.so',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libCom.so',
],
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/os/Linux',
@@ -30,7 +37,7 @@ setup(
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib',
'/opt/gfa/python-3.7/latest/lib'
#'/opt/gfa/python-3.7/latest/lib',
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
@@ -38,9 +45,10 @@ setup(
'/opt/gfa/cafe/cpp/cafe-' + _CAFE_VERSION +
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib'
],
libraries=['ca','Com','dl','cafe'])
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib',
#'/opt/gfa/python-3.7/latest/lib'
],
libraries=['dl','cafe', 'Qt5Xml'])
], annotate=True,
compiler_directives={'embedsignature': False, 'language_level': 3,
'c_string_type': 'str', 'c_string_encoding' : 'ascii',

View File

@@ -8,13 +8,18 @@ from Cython.Build import cythonize
from numpy import get_include
_GCC_VERSION='7.5.0'
_CAFE_VERSION='1.16.1-py38-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.6'
_EPICS_HOST_ARCH ='RHEL7-x86_64'
_CAFE_VERSION='1.22.0-py38-gcc-' + _GCC_VERSION
_EPICS_VERSION='7.0.9'
_EPICS_HOST_ARCH =os.environ['RHREL'] + '-x86_64'
setup(
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
language="c++",
extra_objects = [ os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libca.so',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
_EPICS_HOST_ARCH + '/libCom.so',
],
include_dirs=[ '/opt/gfa/python-3.8/latest/include/python3.8m',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include',
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/include/os/Linux',
@@ -30,7 +35,7 @@ setup(
'/lib/' + _EPICS_HOST_ARCH,
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib',
'/opt/gfa/python-3.8/latest/lib'
#'/opt/gfa/python-3.8/latest/lib'
],
runtime_library_dirs=[
os.environ['EPICS'] + '/base-' + _EPICS_VERSION + '/lib/' +
@@ -40,7 +45,7 @@ setup(
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib64',
os.environ['PSI_PREFIX'] + '/Programming/gcc/' + _GCC_VERSION + '/lib'
],
libraries=['ca','Com','dl','cafe', 'Qt5Xml', 'Qt5Core'])
libraries=['dl','cafe','Qt5Xml'])
], annotate=True,
compiler_directives={'embedsignature': False, 'language_level': 3,
'c_string_type': 'str', 'c_string_encoding' : 'ascii',

126384
sys Normal file

File diff suppressed because it is too large Load Diff

166242
timeit- Normal file

File diff suppressed because it is too large Load Diff