slist.h (scrot-1.6.tar.bz2) | : | slist.h (scrot-1.7.tar.bz2) | ||
---|---|---|---|---|
/* slist.h | /* slist.h | |||
Copyright 2021 Christopher Nelson <christopher.nelson@languidnights.com> | Copyright 2021 Christopher Nelson <christopher.nelson@languidnights.com> | |||
Copyright 2021 Peter Wu <peterwu@hotmail.com> | ||||
Copyright 2021 Daniel T. Borelli <danieltborelli@gmail.com> | ||||
Permission is hereby granted, free of charge, to any person obtaining a copy | Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to | of this software and associated documentation files (the "Software"), to | |||
deal in the Software without restriction, including without limitation the | deal in the Software without restriction, including without limitation the | |||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |||
sell copies of the Software, and to permit persons to whom the Software is | sell copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in | The above copyright notice and this permission notice shall be included in | |||
all copies of the Software and its documentation and acknowledgment shall be | all copies of the Software and its documentation and acknowledgment shall be | |||
skipping to change at line 26 | skipping to change at line 28 | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | |||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
*/ | */ | |||
#ifndef SCROT_SLIST_H | #pragma once | |||
#define SCROT_SLIST_H | ||||
#include <Imlib2.h> | #include <sys/queue.h> | |||
#include <stdbool.h> | ||||
typedef struct Scrot_Imlib_List { | typedef struct ScrotListNode { | |||
Imlib_Image * data; | void* data; | |||
STAILQ_ENTRY(ScrotListNode) nodes; | ||||
} ScrotListNode; | ||||
struct Scrot_Imlib_List * next; | typedef STAILQ_HEAD(ScrotLists, ScrotListNode) ScrotList; | |||
} Scrot_Imlib_List; | ||||
Scrot_Imlib_List * append_to_scrot_imlib(Scrot_Imlib_List *head, Imlib_Image *da | #define initializeScrotList(name) \ | |||
ta); | ScrotList name = STAILQ_HEAD_INITIALIZER(name); \ | |||
Scrot_Imlib_List * walk_to_end_of_scrot_imlib_list(Scrot_Imlib_List *list); | STAILQ_INIT(&name); | |||
int is_scrot_imlib_list_empty(Scrot_Imlib_List *list); | ||||
#endif | #define appendToScrotList(name, newData) do { \ | |||
ScrotListNode* node = calloc(1, sizeof(*node)); \ | ||||
node->data = (void*)newData; \ | ||||
STAILQ_INSERT_TAIL(&name, node, nodes); \ | ||||
} while(0) | ||||
#define isEmptyScrotList(name) \ | ||||
STAILQ_EMPTY(name) | ||||
#define forEachScrotList(name, node) \ | ||||
STAILQ_FOREACH(node, name, nodes) | ||||
#define firstScrotList(name) \ | ||||
STAILQ_FIRST(name) | ||||
#define nextScrotList(name) \ | ||||
STAILQ_NEXT(name, nodes); | ||||
#define nextAndFreeScrotList(name) do { \ | ||||
ScrotListNode* next = nextScrotList(name); \ | ||||
free(name); \ | ||||
name = next; \ | ||||
} while(0) | ||||
End of changes. 7 change blocks. | ||||
13 lines changed or deleted | 13 lines changed or added |