void THANDLE_MOVE()

in common/inc/c_pal/thandle_ll.h [517:561]


void THANDLE_MOVE(C)(THANDLE(T) * t1, THANDLE(T) * t2)                                                                                                              \
{                                                                                                                                                                   \
    if (                                                                                                                                                            \
        /*Codes_SRS_THANDLE_02_033: [ If t1 is NULL then THANDLE_MOVE shall return. ]*/                                                                             \
        (t1 == NULL) ||                                                                                                                                             \
        /*Codes_SRS_THANDLE_02_034: [ If t2 is NULL then THANDLE_MOVE shall return. ]*/                                                                             \
        (t2 == NULL)                                                                                                                                                \
        )                                                                                                                                                           \
    {                                                                                                                                                               \
        LogError("invalid argument THANDLE(" MU_TOSTRING(T) ") * t1=%p, THANDLE(" MU_TOSTRING(T) ") t2=%p", t1, t2 );                                               \
    }                                                                                                                                                               \
    else                                                                                                                                                            \
    {                                                                                                                                                               \
        if (*t1 == NULL)                                                                                                                                            \
        {                                                                                                                                                           \
            if (*t2 == NULL)                                                                                                                                        \
            {                                                                                                                                                       \
                /*so nothing to do, leave them as they are*/                                                                                                        \
                /*Codes_SRS_THANDLE_02_035: [ If *t1 is NULL and *t2 is NULL then THANDLE_MOVE shall return. ]*/                                                    \
            }                                                                                                                                                       \
            else                                                                                                                                                    \
            {                                                                                                                                                       \
                /*Codes_SRS_THANDLE_02_036: [ If *t1 is NULL and *t2 is not NULL then THANDLE_MOVE shall move *t2 under t1, set *t2 to NULL and return. ]*/         \
                *(T const**)t1 = *t2;                                                                                                                               \
                *(T const**)t2 = NULL;                                                                                                                              \
            }                                                                                                                                                       \
        }                                                                                                                                                           \
        else                                                                                                                                                        \
        {                                                                                                                                                           \
            if (*t2 == NULL)                                                                                                                                        \
            {                                                                                                                                                       \
                /*Codes_SRS_THANDLE_02_037: [ If *t1 is not NULL and *t2 is NULL then THANDLE_MOVE shall THANDLE_DEC_REF *t1, set *t1 to NULL and return. ]*/       \
                THANDLE_DEC_REF(C)(*t1);                                                                                                                            \
                *(T const**)t1 = NULL;                                                                                                                              \
            }                                                                                                                                                       \
            else                                                                                                                                                    \
            {                                                                                                                                                       \
                /*Codes_SRS_THANDLE_02_038: [ If *t1 is not NULL and *t2 is not NULL then THANDLE_MOVE shall THANDLE_DEC_REF *t1, set *t1 to *t2, set *t2 to NULL and return. ]*/ \
                THANDLE_DEC_REF(C)(*t1);                                                                                                                            \
                *(T const**)t1 = *t2;                                                                                                                               \
                *(T const**)t2 = NULL;                                                                                                                              \
            }                                                                                                                                                       \
        }                                                                                                                                                           \
    }                                                                                                                                                               \
}                                                                                                                                                                   \