42 lines
891 B
C
Executable file
42 lines
891 B
C
Executable file
/****************************************************************************
|
|
*
|
|
* Copyright (c) 2014 - 2016 Samsung Electronics Co., Ltd. All rights reserved
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef __FUNCTOR_H
|
|
#define __FUNCTOR_H
|
|
|
|
/**
|
|
* Minimal Functor (no returns, no args other than self).
|
|
*/
|
|
struct functor {
|
|
/**
|
|
* The callback invoked by functor_call().
|
|
*
|
|
* A pointer to the functor itself is passed to the call.
|
|
*
|
|
* Typically the implementation wil upcast this (container_of)
|
|
* to access a container context.
|
|
*/
|
|
void (*call)(struct functor *f);
|
|
};
|
|
|
|
/**
|
|
* Initialise this functor.
|
|
*/
|
|
static inline void functor_init(struct functor *f, void (*call)(struct functor *f))
|
|
{
|
|
f->call = call;
|
|
}
|
|
|
|
/**
|
|
* Invoke this functor.
|
|
*/
|
|
static inline void functor_call(struct functor *f)
|
|
{
|
|
f->call(f);
|
|
}
|
|
|
|
#endif /* __FUNCTOR_H */
|
|
|