Adding upstream version 2.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
50aec1e4c5
commit
1b3a431c1d
521 changed files with 21541 additions and 21644 deletions
65
ccan/ccan/container_of/_info
Normal file
65
ccan/ccan/container_of/_info
Normal file
|
@ -0,0 +1,65 @@
|
|||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/**
|
||||
* container_of - routine for upcasting
|
||||
*
|
||||
* It is often convenient to create code where the caller registers a pointer
|
||||
* to a generic structure and a callback. The callback might know that the
|
||||
* pointer points to within a larger structure, and container_of gives a
|
||||
* convenient and fairly type-safe way of returning to the enclosing structure.
|
||||
*
|
||||
* This idiom is an alternative to providing a void * pointer for every
|
||||
* callback.
|
||||
*
|
||||
* Example:
|
||||
* #include <stdio.h>
|
||||
* #include <ccan/container_of/container_of.h>
|
||||
*
|
||||
* struct timer {
|
||||
* void *members;
|
||||
* };
|
||||
*
|
||||
* struct info {
|
||||
* int my_stuff;
|
||||
* struct timer timer;
|
||||
* };
|
||||
*
|
||||
* static void my_timer_callback(struct timer *timer)
|
||||
* {
|
||||
* struct info *info = container_of(timer, struct info, timer);
|
||||
* printf("my_stuff is %u\n", info->my_stuff);
|
||||
* }
|
||||
*
|
||||
* static void register_timer(struct timer *timer)
|
||||
* {
|
||||
* (void)timer;
|
||||
* (void)my_timer_callback;
|
||||
* //...
|
||||
* }
|
||||
*
|
||||
* int main(void)
|
||||
* {
|
||||
* struct info info = { .my_stuff = 1 };
|
||||
*
|
||||
* register_timer(&info.timer);
|
||||
* // ...
|
||||
* return 0;
|
||||
* }
|
||||
*
|
||||
* License: CC0 (Public domain)
|
||||
* Author: Rusty Russell <rusty@rustcorp.com.au>
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2)
|
||||
return 1;
|
||||
|
||||
if (strcmp(argv[1], "depends") == 0) {
|
||||
printf("ccan/check_type\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue