1 # The MIT License (MIT)
3 # Copyright (c) 2015-2020 Philippe Proulx <pproulx@efficios.com>
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
13 # The above copyright notice and this permission notice shall be
14 # included in all copies or substantial portions of the Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 class ByteOrder(enum
.Enum
):
37 class Encoding(enum
.Enum
):
57 class PropertyMapping
:
58 def __init__(self
, object, prop
):
72 def __init__(self
, size
, byte_order
, align
=None, signed
=False,
73 base
=10, encoding
=Encoding
.NONE
, property_mappings
=None):
75 self
._byte
_order
= byte_order
87 self
._encoding
= encoding
89 if property_mappings
is None:
90 self
._property
_mappings
= []
92 self
._property
_mappings
= property_mappings
100 return self
._byte
_order
108 return self
._encoding
119 def property_mappings(self
):
120 return self
._property
_mappings
123 class FloatingPoint(Type
):
124 def __init__(self
, exp_size
, mant_size
, byte_order
, align
=8):
125 self
._exp
_size
= exp_size
126 self
._mant
_size
= mant_size
127 self
._byte
_order
= byte_order
132 return self
._exp
_size
136 return self
._mant
_size
140 return self
._exp
_size
+ self
._mant
_size
143 def byte_order(self
):
144 return self
._byte
_order
152 def __init__(self
, value_type
, members
=None):
153 self
._value
_type
= value_type
156 self
._members
= collections
.OrderedDict()
158 self
._members
= members
162 return self
._value
_type
.align
166 return self
._value
_type
.size
169 def value_type(self
):
170 return self
._value
_type
177 def last_value(self
):
178 if len(self
._members
) == 0:
181 return list(self
._members
.values())[-1][1]
183 def value_of(self
, label
):
184 return self
._members
[label
]
186 def label_of(self
, value
):
187 for label
, vrange
in self
._members
.items():
188 if value
>= vrange
[0] and value
<= vrange
[1]:
191 def __getitem__(self
, key
):
193 return self
.value_of(key
)
194 elif type(key
) is int:
195 return self
.label_of(key
)
197 raise TypeError('Wrong subscript type')
201 def __init__(self
, encoding
=Encoding
.UTF8
):
202 self
._encoding
= encoding
.UTF8
210 return self
._encoding
213 def is_dynamic(self
):
218 def __init__(self
, element_type
, length
):
219 self
._element
_type
= element_type
220 self
._length
= length
224 return self
._element
_type
.align
227 def element_type(self
):
228 return self
._element
_type
236 def __init__(self
, min_align
=1, fields
=None):
237 self
._min
_align
= min_align
240 self
._fields
= collections
.OrderedDict()
242 self
._fields
= fields
244 self
._align
= self
.min_align
246 for field
in self
.fields
.values():
247 if field
.align
is None:
250 if field
.align
> self
._align
:
251 self
._align
= field
.align
255 return self
._min
_align
265 def __getitem__(self
, key
):
266 return self
.fields
[key
]
269 return len(self
._fields
)
273 def __init__(self
, byte_order
, uuid
=None, packet_header_type
=None):
274 self
._byte
_order
= byte_order
276 self
._packet
_header
_type
= packet_header_type
283 def byte_order(self
):
284 return self
._byte
_order
287 def packet_header_type(self
):
288 return self
._packet
_header
_type
292 def __init__(self
, name
, uuid
=None, description
=None, freq
=int(1e9
),
293 error_cycles
=0, offset_seconds
=0, offset_cycles
=0,
294 absolute
=False, return_ctype
='uint32_t'):
297 self
._description
= description
299 self
._error
_cycles
= error_cycles
300 self
._offset
_seconds
= offset_seconds
301 self
._offset
_cycles
= offset_cycles
302 self
._absolute
= absolute
303 self
._return
_ctype
= return_ctype
314 def description(self
):
315 return self
._description
318 def error_cycles(self
):
319 return self
._error
_cycles
326 def offset_seconds(self
):
327 return self
._offset
_seconds
330 def offset_cycles(self
):
331 return self
._offset
_cycles
335 return self
._absolute
338 def return_ctype(self
):
339 return self
._return
_ctype
342 LogLevel
= collections
.namedtuple('LogLevel', ['name', 'value'])
346 def __init__(self
, id, name
, log_level
=None, payload_type
=None,
350 self
._payload
_type
= payload_type
351 self
._log
_level
= log_level
352 self
._context
_type
= context_type
364 return self
._log
_level
367 def context_type(self
):
368 return self
._context
_type
371 def payload_type(self
):
372 return self
._payload
_type
374 def __getitem__(self
, key
):
375 if self
.payload_type
is None:
378 return self
.payload_type
[key
]
382 def __init__(self
, id, name
=None, packet_context_type
=None,
383 event_header_type
=None, event_context_type
=None,
387 self
._packet
_context
_type
= packet_context_type
388 self
._event
_header
_type
= event_header_type
389 self
._event
_context
_type
= event_context_type
392 self
._events
= collections
.OrderedDict()
394 self
._events
= events
405 def packet_context_type(self
):
406 return self
._packet
_context
_type
409 def event_header_type(self
):
410 return self
._event
_header
_type
413 def event_context_type(self
):
414 return self
._event
_context
_type
422 def __init__(self
, trace
, env
=None, clocks
=None, streams
=None,
423 default_stream_name
=None):
425 version_tuple
= barectf
.get_version_tuple()
426 self
._env
= collections
.OrderedDict([
428 ('tracer_name', 'barectf'),
429 ('tracer_major', version_tuple
[0]),
430 ('tracer_minor', version_tuple
[1]),
431 ('tracer_patch', version_tuple
[2]),
432 ('barectf_gen_date', str(datetime
.datetime
.now().isoformat())),
436 self
._env
.update(env
)
439 self
._clocks
= collections
.OrderedDict()
441 self
._clocks
= clocks
444 self
._streams
= collections
.OrderedDict()
446 self
._streams
= streams
448 self
._default
_stream
_name
= default_stream_name
467 def default_stream_name(self
):
468 return self
._default
_stream
_name
471 def default_stream(self
):
472 if self
._default
_stream
_name
in self
._streams
:
473 return self
._streams
[self
._default
_stream
_name
]
This page took 0.090273 seconds and 4 git commands to generate.