Add SWAP for string
This commit is contained in:
1 parent
c5bc77b801
commit
29d3439900
2 files changed
+19
No files matched your search
+13
@@ -215,6 +215,18 @@ string_init_move(string_t v1, string_t v2)
|
||||
STRING_CONTRACT (v1);
|
||||
}
|
||||
|
||||
static inline void
|
||||
string_swap(string_t v1, string_t v2)
|
||||
{
|
||||
STRING_CONTRACT (v1);
|
||||
STRING_CONTRACT (v2);
|
||||
M_SWAP (size_t, v1->size, v2->size);
|
||||
M_SWAP (size_t, v1->alloc, v2->alloc);
|
||||
M_SWAP (char *, v1->ptr, v2->ptr);
|
||||
STRING_CONTRACT (v1);
|
||||
STRING_CONTRACT (v2);
|
||||
}
|
||||
|
||||
static inline void
|
||||
string_move(string_t v1, string_t v2)
|
||||
{
|
||||
@@ -677,6 +689,7 @@ string_in_str(string_t v, FILE *f)
|
||||
#define STRING_OPLIST \
|
||||
(INIT(string_init),INIT_SET(string_init_set), SET(string_set), \
|
||||
INIT_MOVE(string_init_move), MOVE(string_move), \
|
||||
SWAP(string_swap), \
|
||||
CLEAR(string_clear), HASH(string_hash), EQUAL(string_equal_p), \
|
||||
CMP(string_cmp), TYPE(string_t), GET_STR(string_get_str), \
|
||||
OUT_STR(string_out_str), IN_STR(string_in_str), \
|
||||
|
||||
@@ -191,6 +191,12 @@ int main(void)
|
||||
fclose(f);
|
||||
assert (string_equal_p(s1, s2));
|
||||
|
||||
string_set_str(s1, "AZERTY");
|
||||
string_set_str(s2, "QWERTY");
|
||||
string_swap (s1, s2);
|
||||
assert(string_equal_str_p (s1, "QWERTY"));
|
||||
assert(string_equal_str_p (s2, "AZERTY"));
|
||||
|
||||
string_clear (s1);
|
||||
exit(0);
|
||||
}
|
||||
Reference in new issue
Block a user