python: make all _get_ref/_put_ref proper static methods
[babeltrace.git] / src / bindings / python / bt2 / bt2 / packet.py
1 # SPDX-License-Identifier: MIT
2 #
3 # Copyright (c) 2016-2017 Philippe Proulx <pproulx@efficios.com>
4
5 from bt2 import native_bt, object
6 from bt2 import field as bt2_field
7
8
9 def _bt2_stream():
10 from bt2 import stream as bt2_stream
11
12 return bt2_stream
13
14
15 class _PacketConst(object._SharedObject):
16 @staticmethod
17 def _get_ref(ptr):
18 native_bt.packet_get_ref(ptr)
19
20 @staticmethod
21 def _put_ref(ptr):
22 native_bt.packet_put_ref(ptr)
23
24 _borrow_stream_ptr = staticmethod(native_bt.packet_borrow_stream_const)
25 _borrow_context_field_ptr = staticmethod(
26 native_bt.packet_borrow_context_field_const
27 )
28 _stream_pycls = property(lambda _: _bt2_stream()._StreamConst)
29 _create_field_from_ptr = staticmethod(bt2_field._create_field_from_const_ptr)
30
31 @property
32 def stream(self):
33 stream_ptr = self._borrow_stream_ptr(self._ptr)
34 assert stream_ptr is not None
35 return self._stream_pycls._create_from_ptr_and_get_ref(stream_ptr)
36
37 @property
38 def context_field(self):
39 field_ptr = self._borrow_context_field_ptr(self._ptr)
40
41 if field_ptr is None:
42 return
43
44 return self._create_field_from_ptr(
45 field_ptr, self._ptr, self._get_ref, self._put_ref
46 )
47
48
49 class _Packet(_PacketConst):
50 _borrow_stream_ptr = staticmethod(native_bt.packet_borrow_stream)
51 _borrow_context_field_ptr = staticmethod(native_bt.packet_borrow_context_field)
52 _stream_pycls = property(lambda _: _bt2_stream()._Stream)
53 _create_field_from_ptr = staticmethod(bt2_field._create_field_from_ptr)
This page took 0.030992 seconds and 4 git commands to generate.