mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
361f3ea9ee
New modules: failtest, list, time, read_write_all and tlist. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
64 lines
1.3 KiB
Plaintext
64 lines
1.3 KiB
Plaintext
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "config.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 register_timer(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);
|
|
* }
|
|
*
|
|
* int main(void)
|
|
* {
|
|
* struct info info = { .my_stuff = 1 };
|
|
*
|
|
* register_timer(&info.timer);
|
|
* // ...
|
|
* return 0;
|
|
* }
|
|
*
|
|
* License: 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;
|
|
}
|