Skip to content

LVAL_AS

Description

Creates a fresh l-value of type T initialized from expression x. Uses compound-literal initialization rather than a cast so it works for structs as well as scalars (MSVC C2440 rejects struct-to-same-struct casts).

Parameters

Name Direction Description
T in Target type of the produced l-value.
x in Source expression. Must be convertible to T via initialization.

Success

Returns an addressable l-value of type T.

Failure

Compile error when x is not initialization-compatible with T.

Usage example (Cross-references)

Usage examples (Cross-references)
         map_insert_r_impl(                                                                                                \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             sizeof(MAP_VALUE_TYPE(m)),                                                                                    \
             sizeof(MAP_ENTRY_TYPE(m)),                                                                                    \
         map_set_first_l_impl(                                                                                             \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             &(in_value),                                                                                                  \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
         map_set_first_r_impl(                                                                                             \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             sizeof(MAP_VALUE_TYPE(m)),                                                                                    \
         map_set_only_r_impl(                                                                                              \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             &LVAL_AS(MAP_KEY_TYPE(m), in_key),                                                                            \
             sizeof(MAP_KEY_TYPE(m)),                                                                                      \
             &LVAL_AS(MAP_VALUE_TYPE(m), in_value),                                                                        \
             sizeof(MAP_VALUE_TYPE(m)),                                                                                    \
             sizeof(MAP_ENTRY_TYPE(m)),                                                                                    \
         (MAP_VALUE_TYPE(m) *)map_ensure_value_ptr(                                                                        \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), lookup_key),                                                                        \
             &LVAL_AS(MAP_VALUE_TYPE(m), default_value),                                                                   \
             sizeof(MAP_ENTRY_TYPE(m)),                                                                                    \
             GENERIC_MAP(m),                                                                                               \
             &LVAL_AS(MAP_KEY_TYPE(m), lookup_key),                                                                        \
             &LVAL_AS(MAP_VALUE_TYPE(m), default_value),                                                                   \
             sizeof(MAP_ENTRY_TYPE(m)),                                                                                    \
             offsetof(MAP_ENTRY_TYPE(m), key),                                                                             \
        (ValidateVec(v),                                                                                                   \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(lval), VEC_DATATYPE(v)),                                                           \
         vec_insert_one_l(GENERIC_VEC(v), &LVAL_AS(VEC_DATATYPE(v), lval), &(lval), sizeof(VEC_DATATYPE(v)), (idx), true))
    
    ///
        (ValidateVec(v),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(VEC_DATATYPE(v), rval),                                                                    \
         vec_insert_one_r(GENERIC_VEC(v), &LVAL_AS(VEC_DATATYPE(v), rval), sizeof(VEC_DATATYPE(v)), (idx), true))
    
    ///
         vec_insert_one_l(                                                                                                 \
             GENERIC_VEC(v),                                                                                               \
             &LVAL_AS(VEC_DATATYPE(v), lval),                                                                              \
             &(lval),                                                                                                      \
             sizeof(VEC_DATATYPE(v)),                                                                                      \
        (ValidateVec(v),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(VEC_DATATYPE(v), rval),                                                                    \
         vec_insert_one_r(GENERIC_VEC(v), &LVAL_AS(VEC_DATATYPE(v), rval), sizeof(VEC_DATATYPE(v)), (idx), false))
    
    ///
        (ValidateList(l),                                                                                                  \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(lval), LIST_DATA_TYPE(l)),                                                         \
         list_insert_one_l(GENERIC_LIST(l), &LVAL_AS(LIST_DATA_TYPE(l), lval), &(lval), sizeof(LIST_DATA_TYPE(l)), (idx)))
    
    ///
        (ValidateList(l),                                                                                                  \
         CHECK_TYPE_CONVERTIBLE(LIST_DATA_TYPE(l), rval),                                                                  \
         list_insert_one_r(GENERIC_LIST(l), &LVAL_AS(LIST_DATA_TYPE(l), rval), sizeof(LIST_DATA_TYPE(l)), (idx)))
    
    ///
        (ValidateGraph(g),                                                                                                 \
         CHECK_TYPE_CONVERTIBLE(GRAPH_NODE_TYPE(g), rval),                                                                 \
         graph_push_node(GENERIC_GRAPH(g), &LVAL_AS(GRAPH_NODE_TYPE(g), rval), sizeof(GRAPH_NODE_TYPE(g))))
    
    ///
Last updated on