#pragma once #include <stdlib.h> #include <stdbool.h> #include <toolbox/stream/stream.h> #ifdef __cplusplus extern "C" { #endif typedef enum { FlipperStreamValueIgnore, FlipperStreamValueStr, FlipperStreamValueHex, FlipperStreamValueFloat, FlipperStreamValueInt32, FlipperStreamValueUint32, FlipperStreamValueHexUint64, FlipperStreamValueBool, } FlipperStreamValue; typedef struct { const char* key; FlipperStreamValue type; const void* data; size_t data_size; } FlipperStreamWriteData; /** * Writes a key/value pair to the stream. * @param stream * @param write_data * @return true * @return false */ bool flipper_format_stream_write_value_line(Stream* stream, FlipperStreamWriteData* write_data); /** * Reads a value by key from a stream. * @param stream * @param key * @param type * @param _data * @param data_size * @param strict_mode * @return true * @return false */ bool flipper_format_stream_read_value_line( Stream* stream, const char* key, FlipperStreamValue type, void* _data, size_t data_size, bool strict_mode); /** * Get the count of values by key from a stream. * @param stream * @param key * @param count * @param strict_mode * @return true * @return false */ bool flipper_format_stream_get_value_count( Stream* stream, const char* key, uint32_t* count, bool strict_mode); /** * Removes a key and the corresponding value string from the stream and inserts a new key/value pair. * @param stream * @param write_data * @param strict_mode * @return true * @return false */ bool flipper_format_stream_delete_key_and_write( Stream* stream, FlipperStreamWriteData* write_data, bool strict_mode); /** * Writes a comment string to the stream. * @param stream * @param data * @return true * @return false */ bool flipper_format_stream_write_comment_cstr(Stream* stream, const char* data); #ifdef __cplusplus } #endif