wlmaker
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
decode.h File Reference
#include <inttypes.h>
#include <stdbool.h>
#include <stddef.h>
#include "model.h"
Include dependency graph for decode.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  wlmcfg_enum_desc_t
 
struct  wlmcfg_desc_int64_t
 
struct  wlmcfg_desc_uint64_t
 
struct  wlmcfg_desc_double_t
 
struct  wlmcfg_desc_argb32_t
 
struct  wlmcfg_desc_bool_t
 
struct  wlmcfg_desc_enum_t
 
struct  wlmcfg_desc_string_t
 
struct  wlmcfg_desc_charbuf_t
 
struct  wlmcfg_desc_custom_t
 
struct  _wlmcfg_desc_t
 

Macros

#define WLMCFG_ENUM_SENTINEL()   { .name_ptr = NULL }
 
#define WLMCFG_ENUM(_name, _value)   { .name_ptr = (_name), .value = (_value) }
 
#define WLMCFG_DESC_SENTINEL()   { .key_ptr = NULL }
 
#define WLMCFG_DESC_UINT64(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_INT64(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_DOUBLE(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_ARGB32(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_BOOL(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_ENUM(_key, _required, _base, _field, _default, _desc_ptr)
 
#define WLMCFG_DESC_STRING(_key, _required, _base, _field, _default)
 
#define WLMCFG_DESC_CHARBUF(_key, _required, _base, _field, _len, _default)
 
#define WLMCFG_DESC_DICT(_key, _required, _base, _field, _desc)
 
#define WLMCFG_DESC_CUSTOM(_key, _required, _base, _field, _d, _i, _f)
 

Typedefs

typedef struct _wlmcfg_desc_t wlmcfg_desc_t
 

Enumerations

enum  wlmcfg_decode_type_t {
  WLMCFG_TYPE_UINT64 , WLMCFG_TYPE_INT64 , WLMCFG_TYPE_DOUBLE , WLMCFG_TYPE_ARGB32 ,
  WLMCFG_TYPE_BOOL , WLMCFG_TYPE_ENUM , WLMCFG_TYPE_STRING , WLMCFG_TYPE_CHARBUF ,
  WLMCFG_TYPE_DICT , WLMCFG_TYPE_CUSTOM
}
 

Functions

bool wlmcfg_decode_dict (wlmcfg_dict_t *dict_ptr, const wlmcfg_desc_t *desc_ptr, void *dest_ptr)
 
void wlmcfg_decoded_destroy (const wlmcfg_desc_t *desc_ptr, void *dest_ptr)
 
bool wlmcfg_enum_name_to_value (const wlmcfg_enum_desc_t *enum_desc_ptr, const char *name_ptr, int *value_ptr)
 
bool wlmcfg_enum_value_to_name (const wlmcfg_enum_desc_t *enum_desc_ptr, int value, const char **name_ptr_ptr)
 

Variables

const bs_test_case_t wlmcfg_decode_test_cases []
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Configurables for wlmaker. Currently, this file lists hardcoded entities, and mainly serves as a catalog about which entities should be dynamically configurable.

Macro Definition Documentation

◆ WLMCFG_DESC_ARGB32

#define WLMCFG_DESC_ARGB32 ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_ARGB32, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_argb32.default_value = _default \
}

Descriptor for an ARGB32 value.

◆ WLMCFG_DESC_BOOL

#define WLMCFG_DESC_BOOL ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_BOOL, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_bool.default_value = _default \
}

Descriptor for a bool value.

◆ WLMCFG_DESC_CHARBUF

#define WLMCFG_DESC_CHARBUF ( _key,
_required,
_base,
_field,
_len,
_default )
Value:
{ \
.type = WLMCFG_TYPE_CHARBUF, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_charbuf.len = _len, \
.v.v_charbuf.default_value_ptr = _default, \
}

Descriptor for a char buffer.

◆ WLMCFG_DESC_CUSTOM

#define WLMCFG_DESC_CUSTOM ( _key,
_required,
_base,
_field,
_d,
_i,
_f )
Value:
{ \
.type = WLMCFG_TYPE_CUSTOM, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_custom.decode = _d, \
.v.v_custom.init = _i, \
.v.v_custom.fini = _f, \
}

Descriptor for a custom object decoder.

◆ WLMCFG_DESC_DICT

#define WLMCFG_DESC_DICT ( _key,
_required,
_base,
_field,
_desc )
Value:
{ \
.type = WLMCFG_TYPE_DICT, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_dict_desc_ptr = _desc \
}

Descriptor for a dict sub-value.

◆ WLMCFG_DESC_DOUBLE

#define WLMCFG_DESC_DOUBLE ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_DOUBLE, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_double.default_value = _default \
}

Descriptor for a floating point value.

◆ WLMCFG_DESC_ENUM

#define WLMCFG_DESC_ENUM ( _key,
_required,
_base,
_field,
_default,
_desc_ptr )
Value:
{ \
.type = WLMCFG_TYPE_ENUM, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_enum.default_value = _default, \
.v.v_enum.desc_ptr = _desc_ptr \
}

Descriptor for an enum value.

◆ WLMCFG_DESC_INT64

#define WLMCFG_DESC_INT64 ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_INT64, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_int64.default_value = _default \
}

Descriptor for an signed int64.

◆ WLMCFG_DESC_SENTINEL

#define WLMCFG_DESC_SENTINEL ( )    { .key_ptr = NULL }

Descriptor sentinel. Put at end of a wlmcfg_desc_t sequence.

◆ WLMCFG_DESC_STRING

#define WLMCFG_DESC_STRING ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_STRING, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_string.default_value_ptr = _default, \
}

Descriptor for a string value value.

◆ WLMCFG_DESC_UINT64

#define WLMCFG_DESC_UINT64 ( _key,
_required,
_base,
_field,
_default )
Value:
{ \
.type = WLMCFG_TYPE_UINT64, \
.key_ptr = (_key), \
.required = _required, \
.field_offset = offsetof(_base, _field), \
.v.v_uint64.default_value = _default \
}

Descriptor for an unsigned int64.

◆ WLMCFG_ENUM

#define WLMCFG_ENUM ( _name,
_value )   { .name_ptr = (_name), .value = (_value) }

Helper to define an enum descriptor.

◆ WLMCFG_ENUM_SENTINEL

#define WLMCFG_ENUM_SENTINEL ( )    { .name_ptr = NULL }

Sentinel for an enum descriptor sequence.

Typedef Documentation

◆ wlmcfg_desc_t

typedef struct _wlmcfg_desc_t wlmcfg_desc_t

Forward declaration: Descriptor.

Enumeration Type Documentation

◆ wlmcfg_decode_type_t

Supported types to decode from a plist dict.

Function Documentation

◆ wlmcfg_decode_dict()

bool wlmcfg_decode_dict ( wlmcfg_dict_t * dict_ptr,
const wlmcfg_desc_t * desc_ptr,
void * dest_ptr )

Decodes the plist dict_ptr into dest_ptr as described.

Parameters
dict_ptr
desc_ptr
dest_ptr
Returns
true on success.

◆ wlmcfg_decoded_destroy()

void wlmcfg_decoded_destroy ( const wlmcfg_desc_t * desc_ptr,
void * dest_ptr )

Destroys resources that were allocated during wlmcfg_decode_dict.

Parameters
desc_ptr
dest_ptr

◆ wlmcfg_enum_name_to_value()

bool wlmcfg_enum_name_to_value ( const wlmcfg_enum_desc_t * enum_desc_ptr,
const char * name_ptr,
int * value_ptr )

Translates from the given name of an enum to it's value.

Parameters
enum_desc_ptr
name_ptr
value_ptr
Returns
true if name_ptr was a valid enum name.

◆ wlmcfg_enum_value_to_name()

bool wlmcfg_enum_value_to_name ( const wlmcfg_enum_desc_t * enum_desc_ptr,
int value,
const char ** name_ptr_ptr )

Translates from the given value of an enum to it's name.

Parameters
enum_desc_ptr
value
name_ptr_ptr
Returns
true if name_ptr was a valid enum name.

Variable Documentation

◆ wlmcfg_decode_test_cases

const bs_test_case_t wlmcfg_decode_test_cases[]
extern

Unit tests.