| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include "toolbox/vptr.h"
- #include "toolbox/errno.h"
- #include "toolbox/log.h"
- #define true ((unsigned char) 1L)
- #define false ((unsigned char) 0L)
- #define DEREF(PTR, POS) (*(((unsigned char *) (PTR)) + POS))
- #define TEST_FOR_NULL(POINTER, RET) \
- if ( POINTER == NULL ) { \
- LOG_ERROR("Null Pointer Not Expected"); \
- toolbox_errno = RET_EVN; \
- return RET; \
- }
- _Bool
- vptr_equal(const struct vptr *restrict p_vptr1
- , const struct vptr *restrict p_vptr2) {
- toolbox_errno = RET_OK;
- TEST_FOR_NULL(p_vptr1, false);
- TEST_FOR_NULL(p_vptr2, false);
- TEST_FOR_NULL(p_vptr1->data, false);
- TEST_FOR_NULL(p_vptr2->data, false);
- if ( p_vptr1->size != p_vptr2->size )
- return false;
- for ( size_t z = 0; z < p_vptr1->size; ++z ) {
- if ( DEREF(p_vptr1->data, z) != DEREF(p_vptr2->data, z) )
- return false;
- }
- return true;
- }
- #undef TEST_FOR_NULL
- #undef DEREF
- #undef false
- #undef true
|