xmos-ai-tools 1.3.2.dev80__py3-none-macosx_10_15_universal2.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- xmos_ai_tools/__init__.py +7 -0
- xmos_ai_tools/io_server/__init__.py +151 -0
- xmos_ai_tools/runtime/__init__.py +0 -0
- xmos_ai_tools/runtime/buildfiles/aitoolslib.cmake +13 -0
- xmos_ai_tools/runtime/buildfiles/aitoolslib.make +8 -0
- xmos_ai_tools/runtime/include/flash_server.h +74 -0
- xmos_ai_tools/runtime/include/flatbuffers/allocator.h +68 -0
- xmos_ai_tools/runtime/include/flatbuffers/array.h +243 -0
- xmos_ai_tools/runtime/include/flatbuffers/base.h +474 -0
- xmos_ai_tools/runtime/include/flatbuffers/bfbs_generator.h +43 -0
- xmos_ai_tools/runtime/include/flatbuffers/buffer.h +142 -0
- xmos_ai_tools/runtime/include/flatbuffers/buffer_ref.h +53 -0
- xmos_ai_tools/runtime/include/flatbuffers/code_generators.h +235 -0
- xmos_ai_tools/runtime/include/flatbuffers/default_allocator.h +64 -0
- xmos_ai_tools/runtime/include/flatbuffers/detached_buffer.h +114 -0
- xmos_ai_tools/runtime/include/flatbuffers/flatbuffer_builder.h +1197 -0
- xmos_ai_tools/runtime/include/flatbuffers/flatbuffers.h +270 -0
- xmos_ai_tools/runtime/include/flatbuffers/flatc.h +111 -0
- xmos_ai_tools/runtime/include/flatbuffers/flexbuffers.h +1897 -0
- xmos_ai_tools/runtime/include/flatbuffers/grpc.h +300 -0
- xmos_ai_tools/runtime/include/flatbuffers/hash.h +127 -0
- xmos_ai_tools/runtime/include/flatbuffers/idl.h +1232 -0
- xmos_ai_tools/runtime/include/flatbuffers/minireflect.h +419 -0
- xmos_ai_tools/runtime/include/flatbuffers/pch/flatc_pch.h +39 -0
- xmos_ai_tools/runtime/include/flatbuffers/pch/pch.h +38 -0
- xmos_ai_tools/runtime/include/flatbuffers/reflection.h +502 -0
- xmos_ai_tools/runtime/include/flatbuffers/reflection_generated.h +1449 -0
- xmos_ai_tools/runtime/include/flatbuffers/registry.h +128 -0
- xmos_ai_tools/runtime/include/flatbuffers/stl_emulation.h +509 -0
- xmos_ai_tools/runtime/include/flatbuffers/string.h +64 -0
- xmos_ai_tools/runtime/include/flatbuffers/struct.h +53 -0
- xmos_ai_tools/runtime/include/flatbuffers/table.h +168 -0
- xmos_ai_tools/runtime/include/flatbuffers/util.h +690 -0
- xmos_ai_tools/runtime/include/flatbuffers/vector.h +370 -0
- xmos_ai_tools/runtime/include/flatbuffers/vector_downward.h +271 -0
- xmos_ai_tools/runtime/include/flatbuffers/verifier.h +283 -0
- xmos_ai_tools/runtime/include/ioserver.h +44 -0
- xmos_ai_tools/runtime/include/lib_nn/api/TransposeConv.h +24 -0
- xmos_ai_tools/runtime/include/lib_nn/api/add_int16.h +27 -0
- xmos_ai_tools/runtime/include/lib_nn/api/add_int16_transform.h +42 -0
- xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16.h +22 -0
- xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16_transform.h +34 -0
- xmos_ai_tools/runtime/include/lib_nn/api/expand_8_to_16.h +8 -0
- xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16.h +42 -0
- xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16_transform.h +71 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_api.h +15 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_bin_types.h +14 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_config.h +287 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_conv2d_structs.h +72 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_image.h +26 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_layers.h +303 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_op_helper.h +132 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_op_utils.h +150 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_operator.h +18 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_pooling.h +551 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_types.h +83 -0
- xmos_ai_tools/runtime/include/lib_nn/api/nn_window_params.h +55 -0
- xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16.h +54 -0
- xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_kernel_transform.h +37 -0
- xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_mappings.h +13 -0
- xmos_ai_tools/runtime/include/lib_nn/api/quadratic_approximation.h +82 -0
- xmos_ai_tools/runtime/include/lib_nn/api/quadratic_interpolation.h +23 -0
- xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16.h +22 -0
- xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16_transform.h +33 -0
- xmos_ai_tools/runtime/include/lib_nn/api/version.h +13 -0
- xmos_ai_tools/runtime/include/lib_nn/api/vpu_memmove_word_aligned.h +15 -0
- xmos_ai_tools/runtime/include/lib_nn/api/vpu_memset_256.h +55 -0
- xmos_ai_tools/runtime/include/lib_nn/api/vpu_sim.h +118 -0
- xmos_ai_tools/runtime/include/lib_nn/api/xs3_vpu.h +216 -0
- xmos_ai_tools/runtime/include/lib_nn/api/xs3a_registers.h +2869 -0
- xmos_ai_tools/runtime/include/lib_nn/src/asm/asm_constants.h +41 -0
- xmos_ai_tools/runtime/include/lib_nn/src/asm/window_op_plan.h +25 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/fast_flash.h +47 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/inference_engine.h +218 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/memory_parallel_transport.h +52 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/version.h +13 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_config.h +17 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_device_memory.h +62 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_shared_config.h +31 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/conv2d_float.h +155 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_common.h +19 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_custom_options.h +28 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_error_reporter.h +32 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_interpreter.h +49 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_ops.h +71 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_profiler.h +49 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_utils.h +160 -0
- xmos_ai_tools/runtime/include/lib_tflite_micro/src/thread_call.h +119 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_defs.h +4 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_device.h +4 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_descriptors.h +4 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_requests.h +4 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud.h +518 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_conf_default.h +11 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_device.h +87 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_descriptors.h +191 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_requests.h +120 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/XUD_USB_Defines.h +70 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/hid.h +23 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio10.h +30 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio20.h +357 -0
- xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudiocommon.h +168 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/delay_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/energy_flexbuffers_generated_data.h +28 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/fft_flexbuffers_generated_data.h +37 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_log_flexbuffers_generated_data.h +27 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_spectral_subtraction_flexbuffers_generated_data.h +26 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/framer_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/irfft.h +31 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/overlap_add_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/pcan_flexbuffers_generated_data.h +7 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/rfft.h +31 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/stacker_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/micro/kernels/window_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/signal/src/circular_buffer.h +118 -0
- xmos_ai_tools/runtime/include/signal/src/complex.h +29 -0
- xmos_ai_tools/runtime/include/signal/src/energy.h +38 -0
- xmos_ai_tools/runtime/include/signal/src/fft_auto_scale.h +35 -0
- xmos_ai_tools/runtime/include/signal/src/filter_bank.h +69 -0
- xmos_ai_tools/runtime/include/signal/src/filter_bank_log.h +38 -0
- xmos_ai_tools/runtime/include/signal/src/filter_bank_spectral_subtraction.h +73 -0
- xmos_ai_tools/runtime/include/signal/src/filter_bank_square_root.h +34 -0
- xmos_ai_tools/runtime/include/signal/src/irfft.h +84 -0
- xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_common.h +49 -0
- xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_float.h +31 -0
- xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int16.h +30 -0
- xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int32.h +31 -0
- xmos_ai_tools/runtime/include/signal/src/log.h +30 -0
- xmos_ai_tools/runtime/include/signal/src/max_abs.h +31 -0
- xmos_ai_tools/runtime/include/signal/src/msb.h +32 -0
- xmos_ai_tools/runtime/include/signal/src/overlap_add.h +46 -0
- xmos_ai_tools/runtime/include/signal/src/pcan_argc_fixed.h +41 -0
- xmos_ai_tools/runtime/include/signal/src/rfft.h +85 -0
- xmos_ai_tools/runtime/include/signal/src/square_root.h +32 -0
- xmos_ai_tools/runtime/include/signal/src/window.h +31 -0
- xmos_ai_tools/runtime/include/signal/testdata/fft_test_data.h +48 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/array.h +156 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/builtin_op_data.h +22 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/builtin_ops.h +241 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/c/builtin_op_data.h +20 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/c/c_api_types.h +26 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/c/common.h +30 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/context_util.h +54 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/api/error_reporter.h +72 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/api/flatbuffer_conversions.h +440 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/api/tensor_utils.h +28 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/c/builtin_op_data.h +626 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/c/c_api_types.h +178 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/c/common.h +1496 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/core/macros.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/bits.h +102 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft.h +50 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_io.h +34 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_util.h +34 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank.h +63 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_io.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.h +50 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend.h +64 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_io.h +31 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_util.h +52 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_common.h +48 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_int16.h +33 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_lut.h +40 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale.h +39 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_io.h +33 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_util.h +45 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction.h +46 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_io.h +36 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_util.h +50 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control.h +47 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control_util.h +57 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window.h +49 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_io.h +34 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_util.h +45 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/common.h +1358 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/compatibility.h +122 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/cppmath.h +40 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/max.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/min.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/optimized/neon_check.h +20 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor.h +141 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor_utils.h +623 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/quantization_util.h +292 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add.h +561 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add_n.h +86 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/arg_min_max.h +88 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_matmul.h +275 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_to_space_nd.h +101 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/binary_function.h +91 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_args.h +56 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_to.h +97 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/ceil.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/comparisons.h +271 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/concatenation.h +141 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/conv.h +289 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/cumsum.h +175 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depth_to_space.h +79 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_float.h +100 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_uint8.h +319 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/dequantize.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/div.h +247 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/elu.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/exp.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fill.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor.h +39 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_div.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_mod.h +44 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fully_connected.h +323 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/hard_swish.h +168 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/add.h +250 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/conv.h +241 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/depthwise_conv.h +291 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/fully_connected.h +126 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/l2normalization.h +67 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/logistic.h +121 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mean.h +18 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mul.h +194 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h +264 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/tanh.h +117 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/transpose_conv.h +224 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/l2normalization.h +90 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/leaky_relu.h +69 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/log_softmax.h +256 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/logistic.h +132 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/lstm_cell.h +422 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/maximum_minimum.h +64 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/mul.h +267 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/neg.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pad.h +169 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pooling.h +303 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.h +333 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils_impl.h +244 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/prelu.h +111 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/process_broadcast_shapes.h +140 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/quantize.h +89 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/reduce.h +491 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/requantize.h +70 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_bilinear.h +233 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_nearest_neighbor.h +102 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/round.h +51 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/select.h +151 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/slice.h +80 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/softmax.h +233 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_batch_nd.h +109 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_depth.h +80 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/strided_slice.h +147 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/sub.h +465 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/tanh.h +129 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose.h +203 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose_conv.h +225 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/runtime_shape.h +168 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/strided_slice_logic.h +278 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/tensor_ctypes.h +42 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/types.h +1096 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/kernel_util.h +341 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/op_macros.h +49 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/kernels/padding.h +115 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h +100 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h +104 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h +58 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.h +63 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.h +144 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/benchmarks/micro_benchmark.h +95 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/compatibility.h +32 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/cortex_m_generic/debug_log_callback.h +49 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/debug_log.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/micro_speech/micro_model_settings.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/expected_output_data.h +47 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/input_data.h +108 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/network_model.h +166 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/detection_responder.h +32 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/image_provider.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/main_functions.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/model_settings.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/fake_micro_context.h +70 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/flatbuffer_utils.h +65 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activation_utils.h +57 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activations.h +64 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/add.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_function_specializations.h +141 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_interface.h +75 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_slicers.h +56 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_tf_utils.h +310 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buf_mgr.h +145 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buffers.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_common.h +24 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_tflm_lib.h +613 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/mcps_macros.h +115 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/types.h +1286 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer.h +45 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer_flexbuffers_generated_data.h +22 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv.h +117 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv_test.h +94 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/depthwise_conv.h +80 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/dequantize.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/detection_postprocess_flexbuffers_generated_data.h +25 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ethosu.h +28 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/fully_connected.h +112 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/hard_swish.h +30 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_runner.h +86 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_util.h +150 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/leaky_relu.h +43 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logical.h +35 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logistic.h +42 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval.h +541 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval_test.h +817 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_shared.h +150 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_ops.h +158 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_tensor_utils.h +56 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/mul.h +74 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pad.h +27 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pooling.h +142 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/prelu.h +39 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/quantize.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reduce.h +65 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reshape.h +26 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/softmax.h +67 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/strided_slice.h +40 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/sub.h +60 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/svdf.h +100 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/conv_test_data.h +37 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/lstm_test_data.h +579 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.h +47 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/hifimini/fixedpoint_utils.h +139 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_eval.h +216 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_shared.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_add.h +48 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_conv.h +89 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_depthwise_conv.h +74 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_fully_connected.h +78 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pad.h +49 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pooling.h +76 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reduce.h +47 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reshape.h +44 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_softmax.h +58 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_svdf.h +39 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_helpers.h +64 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/greedy_memory_planner.h +170 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/linear_memory_planner.h +53 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/memory_plan_struct.h +73 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/micro_memory_planner.h +95 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.h +133 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocation_info.h +138 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocator.h +351 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_arena_constants.h +28 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_common.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_context.h +176 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_graph.h +79 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter.h +189 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_context.h +125 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_graph.h +110 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_log.h +42 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_mutable_op_resolver.h +708 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_op_resolver.h +62 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler.h +140 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler_interface.h +38 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_resource_variable.h +89 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_time.h +36 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_utils.h +162 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/mock_micro_graph.h +60 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/interpreter/src/python_ops_resolver.h +21 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size.h +30 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size_wrapper.h +33 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_allocator.h +125 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_interpreter.h +69 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/system_setup.h +27 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helper_custom_ops.h +49 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helpers.h +334 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/micro_test.h +267 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/test_conv_model.h +23 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.h +45 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h +36 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/log_utils.h +273 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/metrics.h +41 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/op_resolver.h +127 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/portable_type_to_tflitetype.h +75 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_generated.h +24644 -0
- xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_utils.h +33 -0
- xmos_ai_tools/runtime/include/tile_ram_server.h +38 -0
- xmos_ai_tools/runtime/lib/libhost_xtflitemicro.a +0 -0
- xmos_ai_tools/runtime/lib/libxtflitemicro.a +0 -0
- xmos_ai_tools/xformer/__init__.py +60 -0
- xmos_ai_tools/xformer/flash.py +190 -0
- xmos_ai_tools/xinterpreters/__init__.py +1 -0
- xmos_ai_tools/xinterpreters/exceptions.py +38 -0
- xmos_ai_tools/xinterpreters/host_interpreter.py +652 -0
- xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.1.0.1.dylib +0 -0
- xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.dylib +0 -0
- xmos_ai_tools-1.3.2.dev80.data/data/bin/xcore-opt +0 -0
- xmos_ai_tools-1.3.2.dev80.dist-info/METADATA +33 -0
- xmos_ai_tools-1.3.2.dev80.dist-info/RECORD +395 -0
- xmos_ai_tools-1.3.2.dev80.dist-info/WHEEL +5 -0
- xmos_ai_tools-1.3.2.dev80.dist-info/top_level.txt +1 -0
@@ -0,0 +1,300 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2014 Google Inc. All rights reserved.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#ifndef FLATBUFFERS_GRPC_H_
|
18
|
+
#define FLATBUFFERS_GRPC_H_
|
19
|
+
|
20
|
+
// Helper functionality to glue FlatBuffers and GRPC.
|
21
|
+
|
22
|
+
#include "flatbuffers/flatbuffers.h"
|
23
|
+
#include "grpc/byte_buffer_reader.h"
|
24
|
+
#include "grpcpp/support/byte_buffer.h"
|
25
|
+
#include "grpcpp/support/slice.h"
|
26
|
+
|
27
|
+
namespace flatbuffers {
|
28
|
+
namespace grpc {
|
29
|
+
|
30
|
+
// Message is a typed wrapper around a buffer that manages the underlying
|
31
|
+
// `grpc_slice` and also provides flatbuffers-specific helpers such as `Verify`
|
32
|
+
// and `GetRoot`. Since it is backed by a `grpc_slice`, the underlying buffer
|
33
|
+
// is refcounted and ownership is be managed automatically.
|
34
|
+
template<class T> class Message {
|
35
|
+
public:
|
36
|
+
Message() {}
|
37
|
+
|
38
|
+
Message(::grpc::Slice slice) : slice_(slice) {}
|
39
|
+
|
40
|
+
Message &operator=(const Message &other) = delete;
|
41
|
+
|
42
|
+
Message(Message &&other) = default;
|
43
|
+
|
44
|
+
Message(const Message &other) = delete;
|
45
|
+
|
46
|
+
Message &operator=(Message &&other) = default;
|
47
|
+
|
48
|
+
const uint8_t *mutable_data() const { return slice_.begin(); }
|
49
|
+
|
50
|
+
const uint8_t *data() const { return slice_.begin(); }
|
51
|
+
|
52
|
+
size_t size() const { return slice_.size(); }
|
53
|
+
|
54
|
+
bool Verify() const {
|
55
|
+
Verifier verifier(data(), size());
|
56
|
+
return verifier.VerifyBuffer<T>(nullptr);
|
57
|
+
}
|
58
|
+
|
59
|
+
T *GetMutableRoot() { return flatbuffers::GetMutableRoot<T>(mutable_data()); }
|
60
|
+
|
61
|
+
const T *GetRoot() const { return flatbuffers::GetRoot<T>(data()); }
|
62
|
+
|
63
|
+
// This is only intended for serializer use, or if you know what you're doing
|
64
|
+
const ::grpc::Slice &BorrowSlice() const { return slice_; }
|
65
|
+
|
66
|
+
private:
|
67
|
+
::grpc::Slice slice_;
|
68
|
+
};
|
69
|
+
|
70
|
+
class MessageBuilder;
|
71
|
+
|
72
|
+
// SliceAllocator is a gRPC-specific allocator that uses the `grpc_slice`
|
73
|
+
// refcounted slices to manage memory ownership. This makes it easy and
|
74
|
+
// efficient to transfer buffers to gRPC.
|
75
|
+
class SliceAllocator : public Allocator {
|
76
|
+
public:
|
77
|
+
SliceAllocator() {}
|
78
|
+
|
79
|
+
SliceAllocator(const SliceAllocator &other) = delete;
|
80
|
+
SliceAllocator &operator=(const SliceAllocator &other) = delete;
|
81
|
+
|
82
|
+
SliceAllocator(SliceAllocator &&other) {
|
83
|
+
// default-construct and swap idiom
|
84
|
+
swap(other);
|
85
|
+
}
|
86
|
+
|
87
|
+
SliceAllocator &operator=(SliceAllocator &&other) {
|
88
|
+
// move-construct and swap idiom
|
89
|
+
SliceAllocator temp(std::move(other));
|
90
|
+
swap(temp);
|
91
|
+
return *this;
|
92
|
+
}
|
93
|
+
|
94
|
+
void swap(SliceAllocator &other) {
|
95
|
+
using std::swap;
|
96
|
+
swap(slice_, other.slice_);
|
97
|
+
}
|
98
|
+
|
99
|
+
virtual ~SliceAllocator() {}
|
100
|
+
|
101
|
+
virtual uint8_t *allocate(size_t size) override {
|
102
|
+
FLATBUFFERS_ASSERT(slice_.size() == 0);
|
103
|
+
slice_ = ::grpc::Slice(size);
|
104
|
+
return const_cast<uint8_t *>(slice_.begin());
|
105
|
+
}
|
106
|
+
|
107
|
+
virtual void deallocate(uint8_t *p, size_t size) override {
|
108
|
+
FLATBUFFERS_ASSERT(p == slice_.begin());
|
109
|
+
FLATBUFFERS_ASSERT(size == slice_.size());
|
110
|
+
slice_ = ::grpc::Slice();
|
111
|
+
}
|
112
|
+
|
113
|
+
virtual uint8_t *reallocate_downward(uint8_t *old_p, size_t old_size,
|
114
|
+
size_t new_size, size_t in_use_back,
|
115
|
+
size_t in_use_front) override {
|
116
|
+
FLATBUFFERS_ASSERT(old_p == slice_.begin());
|
117
|
+
FLATBUFFERS_ASSERT(old_size == slice_.size());
|
118
|
+
FLATBUFFERS_ASSERT(new_size > old_size);
|
119
|
+
::grpc::Slice old_slice = slice_;
|
120
|
+
::grpc::Slice new_slice = ::grpc::Slice(new_size);
|
121
|
+
uint8_t *new_p = const_cast<uint8_t *>(new_slice.begin());
|
122
|
+
memcpy_downward(old_p, old_size, new_p, new_size, in_use_back,
|
123
|
+
in_use_front);
|
124
|
+
slice_ = new_slice;
|
125
|
+
return new_p;
|
126
|
+
}
|
127
|
+
|
128
|
+
private:
|
129
|
+
::grpc::Slice &get_slice(uint8_t *p, size_t size) {
|
130
|
+
FLATBUFFERS_ASSERT(p == slice_.begin());
|
131
|
+
FLATBUFFERS_ASSERT(size == slice_.size());
|
132
|
+
return slice_;
|
133
|
+
}
|
134
|
+
|
135
|
+
::grpc::Slice slice_;
|
136
|
+
|
137
|
+
friend class MessageBuilder;
|
138
|
+
};
|
139
|
+
|
140
|
+
// SliceAllocatorMember is a hack to ensure that the MessageBuilder's
|
141
|
+
// slice_allocator_ member is constructed before the FlatBufferBuilder, since
|
142
|
+
// the allocator is used in the FlatBufferBuilder ctor.
|
143
|
+
namespace detail {
|
144
|
+
struct SliceAllocatorMember {
|
145
|
+
SliceAllocator slice_allocator_;
|
146
|
+
};
|
147
|
+
} // namespace detail
|
148
|
+
|
149
|
+
// MessageBuilder is a gRPC-specific FlatBufferBuilder that uses SliceAllocator
|
150
|
+
// to allocate gRPC buffers.
|
151
|
+
class MessageBuilder : private detail::SliceAllocatorMember,
|
152
|
+
public FlatBufferBuilder {
|
153
|
+
public:
|
154
|
+
explicit MessageBuilder(uoffset_t initial_size = 1024)
|
155
|
+
: FlatBufferBuilder(initial_size, &slice_allocator_, false) {}
|
156
|
+
|
157
|
+
MessageBuilder(const MessageBuilder &other) = delete;
|
158
|
+
MessageBuilder &operator=(const MessageBuilder &other) = delete;
|
159
|
+
|
160
|
+
MessageBuilder(MessageBuilder &&other)
|
161
|
+
: FlatBufferBuilder(1024, &slice_allocator_, false) {
|
162
|
+
// Default construct and swap idiom.
|
163
|
+
Swap(other);
|
164
|
+
}
|
165
|
+
|
166
|
+
/// Create a MessageBuilder from a FlatBufferBuilder.
|
167
|
+
explicit MessageBuilder(FlatBufferBuilder &&src,
|
168
|
+
void (*dealloc)(void *,
|
169
|
+
size_t) = &DefaultAllocator::dealloc)
|
170
|
+
: FlatBufferBuilder(1024, &slice_allocator_, false) {
|
171
|
+
src.Swap(*this);
|
172
|
+
src.SwapBufAllocator(*this);
|
173
|
+
if (buf_.capacity()) {
|
174
|
+
uint8_t *buf = buf_.scratch_data(); // pointer to memory
|
175
|
+
size_t capacity = buf_.capacity(); // size of memory
|
176
|
+
slice_allocator_.slice_ = ::grpc::Slice(buf, capacity, dealloc);
|
177
|
+
} else {
|
178
|
+
slice_allocator_.slice_ = ::grpc::Slice();
|
179
|
+
}
|
180
|
+
}
|
181
|
+
|
182
|
+
/// Move-assign a FlatBufferBuilder to a MessageBuilder.
|
183
|
+
/// Only FlatBufferBuilder with default allocator (basically, nullptr) is
|
184
|
+
/// supported.
|
185
|
+
MessageBuilder &operator=(FlatBufferBuilder &&src) {
|
186
|
+
// Move construct a temporary and swap
|
187
|
+
MessageBuilder temp(std::move(src));
|
188
|
+
Swap(temp);
|
189
|
+
return *this;
|
190
|
+
}
|
191
|
+
|
192
|
+
MessageBuilder &operator=(MessageBuilder &&other) {
|
193
|
+
// Move construct a temporary and swap
|
194
|
+
MessageBuilder temp(std::move(other));
|
195
|
+
Swap(temp);
|
196
|
+
return *this;
|
197
|
+
}
|
198
|
+
|
199
|
+
void Swap(MessageBuilder &other) {
|
200
|
+
slice_allocator_.swap(other.slice_allocator_);
|
201
|
+
FlatBufferBuilder::Swap(other);
|
202
|
+
// After swapping the FlatBufferBuilder, we swap back the allocator, which
|
203
|
+
// restores the original allocator back in place. This is necessary because
|
204
|
+
// MessageBuilder's allocator is its own member (SliceAllocatorMember). The
|
205
|
+
// allocator passed to FlatBufferBuilder::vector_downward must point to this
|
206
|
+
// member.
|
207
|
+
buf_.swap_allocator(other.buf_);
|
208
|
+
}
|
209
|
+
|
210
|
+
// Releases the ownership of the buffer pointer.
|
211
|
+
// Returns the size, offset, and the original grpc_slice that
|
212
|
+
// allocated the buffer. Also see grpc_slice_unref().
|
213
|
+
uint8_t *ReleaseRaw(size_t &size, size_t &offset, ::grpc::Slice &slice) {
|
214
|
+
uint8_t *buf = FlatBufferBuilder::ReleaseRaw(size, offset);
|
215
|
+
slice = slice_allocator_.slice_;
|
216
|
+
slice_allocator_.slice_ = ::grpc::Slice();
|
217
|
+
return buf;
|
218
|
+
}
|
219
|
+
|
220
|
+
~MessageBuilder() {}
|
221
|
+
|
222
|
+
// GetMessage extracts the subslice of the buffer corresponding to the
|
223
|
+
// flatbuffers-encoded region and wraps it in a `Message<T>` to handle buffer
|
224
|
+
// ownership.
|
225
|
+
template<class T> Message<T> GetMessage() {
|
226
|
+
auto buf_data = buf_.scratch_data(); // pointer to memory
|
227
|
+
auto buf_size = buf_.capacity(); // size of memory
|
228
|
+
auto msg_data = buf_.data(); // pointer to msg
|
229
|
+
auto msg_size = buf_.size(); // size of msg
|
230
|
+
// Do some sanity checks on data/size
|
231
|
+
FLATBUFFERS_ASSERT(msg_data);
|
232
|
+
FLATBUFFERS_ASSERT(msg_size);
|
233
|
+
FLATBUFFERS_ASSERT(msg_data >= buf_data);
|
234
|
+
FLATBUFFERS_ASSERT(msg_data + msg_size <= buf_data + buf_size);
|
235
|
+
// Calculate offsets from the buffer start
|
236
|
+
auto begin = msg_data - buf_data;
|
237
|
+
auto end = begin + msg_size;
|
238
|
+
// Get the slice we are working with (no refcount change)
|
239
|
+
::grpc::Slice slice = slice_allocator_.get_slice(buf_data, buf_size);
|
240
|
+
// Extract a subslice of the existing slice (increment refcount)
|
241
|
+
::grpc::Slice subslice = slice.sub(begin, end);
|
242
|
+
// Wrap the subslice in a `Message<T>`, but don't increment refcount
|
243
|
+
Message<T> msg(subslice);
|
244
|
+
return msg;
|
245
|
+
}
|
246
|
+
|
247
|
+
template<class T> Message<T> ReleaseMessage() {
|
248
|
+
Message<T> msg = GetMessage<T>();
|
249
|
+
Reset();
|
250
|
+
return msg;
|
251
|
+
}
|
252
|
+
|
253
|
+
private:
|
254
|
+
// SliceAllocator slice_allocator_; // part of SliceAllocatorMember
|
255
|
+
};
|
256
|
+
|
257
|
+
} // namespace grpc
|
258
|
+
} // namespace flatbuffers
|
259
|
+
|
260
|
+
namespace grpc {
|
261
|
+
|
262
|
+
template<class T> class SerializationTraits<flatbuffers::grpc::Message<T>> {
|
263
|
+
public:
|
264
|
+
static grpc::Status Serialize(const flatbuffers::grpc::Message<T> &msg,
|
265
|
+
ByteBuffer *buffer, bool *own_buffer) {
|
266
|
+
// Package the single slice into a `ByteBuffer`,
|
267
|
+
// incrementing the refcount in the process.
|
268
|
+
*buffer = ByteBuffer(&msg.BorrowSlice(), 1);
|
269
|
+
*own_buffer = true;
|
270
|
+
return grpc::Status::OK;
|
271
|
+
}
|
272
|
+
|
273
|
+
// Deserialize by pulling the
|
274
|
+
static grpc::Status Deserialize(ByteBuffer *buf,
|
275
|
+
flatbuffers::grpc::Message<T> *msg) {
|
276
|
+
Slice slice;
|
277
|
+
if (!buf->TrySingleSlice(&slice).ok()) {
|
278
|
+
if (!buf->DumpToSingleSlice(&slice).ok()) {
|
279
|
+
buf->Clear();
|
280
|
+
return ::grpc::Status(::grpc::StatusCode::INTERNAL, "No payload");
|
281
|
+
}
|
282
|
+
}
|
283
|
+
*msg = flatbuffers::grpc::Message<T>(slice);
|
284
|
+
buf->Clear();
|
285
|
+
#if FLATBUFFERS_GRPC_DISABLE_AUTO_VERIFICATION
|
286
|
+
return ::grpc::Status::OK;
|
287
|
+
#else
|
288
|
+
if (msg->Verify()) {
|
289
|
+
return ::grpc::Status::OK;
|
290
|
+
} else {
|
291
|
+
return ::grpc::Status(::grpc::StatusCode::INTERNAL,
|
292
|
+
"Message verification failed");
|
293
|
+
}
|
294
|
+
#endif
|
295
|
+
}
|
296
|
+
};
|
297
|
+
|
298
|
+
} // namespace grpc
|
299
|
+
|
300
|
+
#endif // FLATBUFFERS_GRPC_H_
|
@@ -0,0 +1,127 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2015 Google Inc. All rights reserved.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#ifndef FLATBUFFERS_HASH_H_
|
18
|
+
#define FLATBUFFERS_HASH_H_
|
19
|
+
|
20
|
+
#include <cstdint>
|
21
|
+
#include <cstring>
|
22
|
+
|
23
|
+
#include "flatbuffers/flatbuffers.h"
|
24
|
+
|
25
|
+
namespace flatbuffers {
|
26
|
+
|
27
|
+
template<typename T> struct FnvTraits {
|
28
|
+
static const T kFnvPrime;
|
29
|
+
static const T kOffsetBasis;
|
30
|
+
};
|
31
|
+
|
32
|
+
template<> struct FnvTraits<uint32_t> {
|
33
|
+
static const uint32_t kFnvPrime = 0x01000193;
|
34
|
+
static const uint32_t kOffsetBasis = 0x811C9DC5;
|
35
|
+
};
|
36
|
+
|
37
|
+
template<> struct FnvTraits<uint64_t> {
|
38
|
+
static const uint64_t kFnvPrime = 0x00000100000001b3ULL;
|
39
|
+
static const uint64_t kOffsetBasis = 0xcbf29ce484222645ULL;
|
40
|
+
};
|
41
|
+
|
42
|
+
template<typename T> T HashFnv1(const char *input) {
|
43
|
+
T hash = FnvTraits<T>::kOffsetBasis;
|
44
|
+
for (const char *c = input; *c; ++c) {
|
45
|
+
hash *= FnvTraits<T>::kFnvPrime;
|
46
|
+
hash ^= static_cast<unsigned char>(*c);
|
47
|
+
}
|
48
|
+
return hash;
|
49
|
+
}
|
50
|
+
|
51
|
+
template<typename T> T HashFnv1a(const char *input) {
|
52
|
+
T hash = FnvTraits<T>::kOffsetBasis;
|
53
|
+
for (const char *c = input; *c; ++c) {
|
54
|
+
hash ^= static_cast<unsigned char>(*c);
|
55
|
+
hash *= FnvTraits<T>::kFnvPrime;
|
56
|
+
}
|
57
|
+
return hash;
|
58
|
+
}
|
59
|
+
|
60
|
+
template<> inline uint16_t HashFnv1<uint16_t>(const char *input) {
|
61
|
+
uint32_t hash = HashFnv1<uint32_t>(input);
|
62
|
+
return (hash >> 16) ^ (hash & 0xffff);
|
63
|
+
}
|
64
|
+
|
65
|
+
template<> inline uint16_t HashFnv1a<uint16_t>(const char *input) {
|
66
|
+
uint32_t hash = HashFnv1a<uint32_t>(input);
|
67
|
+
return (hash >> 16) ^ (hash & 0xffff);
|
68
|
+
}
|
69
|
+
|
70
|
+
template<typename T> struct NamedHashFunction {
|
71
|
+
const char *name;
|
72
|
+
|
73
|
+
typedef T (*HashFunction)(const char *);
|
74
|
+
HashFunction function;
|
75
|
+
};
|
76
|
+
|
77
|
+
const NamedHashFunction<uint16_t> kHashFunctions16[] = {
|
78
|
+
{ "fnv1_16", HashFnv1<uint16_t> },
|
79
|
+
{ "fnv1a_16", HashFnv1a<uint16_t> },
|
80
|
+
};
|
81
|
+
|
82
|
+
const NamedHashFunction<uint32_t> kHashFunctions32[] = {
|
83
|
+
{ "fnv1_32", HashFnv1<uint32_t> },
|
84
|
+
{ "fnv1a_32", HashFnv1a<uint32_t> },
|
85
|
+
};
|
86
|
+
|
87
|
+
const NamedHashFunction<uint64_t> kHashFunctions64[] = {
|
88
|
+
{ "fnv1_64", HashFnv1<uint64_t> },
|
89
|
+
{ "fnv1a_64", HashFnv1a<uint64_t> },
|
90
|
+
};
|
91
|
+
|
92
|
+
inline NamedHashFunction<uint16_t>::HashFunction FindHashFunction16(
|
93
|
+
const char *name) {
|
94
|
+
std::size_t size = sizeof(kHashFunctions16) / sizeof(kHashFunctions16[0]);
|
95
|
+
for (std::size_t i = 0; i < size; ++i) {
|
96
|
+
if (std::strcmp(name, kHashFunctions16[i].name) == 0) {
|
97
|
+
return kHashFunctions16[i].function;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
return nullptr;
|
101
|
+
}
|
102
|
+
|
103
|
+
inline NamedHashFunction<uint32_t>::HashFunction FindHashFunction32(
|
104
|
+
const char *name) {
|
105
|
+
std::size_t size = sizeof(kHashFunctions32) / sizeof(kHashFunctions32[0]);
|
106
|
+
for (std::size_t i = 0; i < size; ++i) {
|
107
|
+
if (std::strcmp(name, kHashFunctions32[i].name) == 0) {
|
108
|
+
return kHashFunctions32[i].function;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
return nullptr;
|
112
|
+
}
|
113
|
+
|
114
|
+
inline NamedHashFunction<uint64_t>::HashFunction FindHashFunction64(
|
115
|
+
const char *name) {
|
116
|
+
std::size_t size = sizeof(kHashFunctions64) / sizeof(kHashFunctions64[0]);
|
117
|
+
for (std::size_t i = 0; i < size; ++i) {
|
118
|
+
if (std::strcmp(name, kHashFunctions64[i].name) == 0) {
|
119
|
+
return kHashFunctions64[i].function;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
return nullptr;
|
123
|
+
}
|
124
|
+
|
125
|
+
} // namespace flatbuffers
|
126
|
+
|
127
|
+
#endif // FLATBUFFERS_HASH_H_
|