From 823df95bd73bf7195d9a9d3dacd418475c055bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 29 May 2012 16:13:14 +0200 Subject: documentation --- src/include/eiotas_board.h | 32 +++++++++++++++++++--- src/include/eiotas_door.h | 30 +++++++++++++++++++-- src/include/eiotas_iota.h | 33 +++++++++++++++++++---- src/include/eiotas_link.h | 13 +++++++++ src/include/eiotas_main.h | 31 +++++++++++++++++++++ src/include/eiotas_particle.h | 63 ++++++++++++++++++++++++++++++++++++------- src/include/eiotas_room.h | 31 ++++++++++++++++++--- src/include/eiotas_spin.h | 62 +++++++++++++++++++++++++++++++++++++++--- src/include/eiotas_userbits.h | 53 +++++++++++++++++++++++++++++++----- 9 files changed, 315 insertions(+), 33 deletions(-) diff --git a/src/include/eiotas_board.h b/src/include/eiotas_board.h index 4813808..6572faf 100644 --- a/src/include/eiotas_board.h +++ b/src/include/eiotas_board.h @@ -25,16 +25,42 @@ #include +/** + * @typedef Eiotas_Board + * Type for a Particle Merging Door. + */ typedef struct _Eiotas_Board Eiotas_Board; +/** + * @struct _Eiotas_Board + * Struct for a Particle Merging Door. + */ struct _Eiotas_Board { - Eiotas_Iota iota; /* structural info */ - Eiotas_User_Bits user_bits; /* user bits */ - Eina_Hash *postponed; /* TODO Particles */ + Eiotas_Iota iota; /**< structural info */ + Eiotas_User_Bits user_bits; /**< user bits */ + Eina_Hash *postponed; /**< TODO Particles */ }; +/** + * @brief Free allocated resources. + * + * @param board The Eiotas_Board to free. + * + * This function will free all it's user data using user_bits ... FIXME + */ void eiotas_board_free(Eiotas_Board *board); +/** + * @brief Allocate the resources. + * + * @param name The name of this door. + * @param parent The direct hierarchical parent Eiotas_Room. + * @param user_bits A Eiotas_User_Bits initilized with user side pointers. + * + * @return the new allocated Eiotas_Board @c NULL on failure + * + * @see Eiotas_User_Bits + */ EAPI Eiotas_Board* eiotas_board_add(const char* name, Eiotas_Room *parent, Eiotas_User_Bits *user_bits); #endif // __EIOTAS_BOARD_H__ diff --git a/src/include/eiotas_door.h b/src/include/eiotas_door.h index 05060c4..318779f 100644 --- a/src/include/eiotas_door.h +++ b/src/include/eiotas_door.h @@ -25,15 +25,41 @@ #include +/** + * @typedef Eiotas_Door + * Type for a basic Door. + */ typedef struct _Eiotas_Door Eiotas_Door; +/** + * @struct _Eiotas_Door + * Struct for a basic Door. + */ struct _Eiotas_Door { - Eiotas_Iota iota; /* structural info */ - Eiotas_User_Bits user_bits; /* user bits */ + Eiotas_Iota iota; /**< structural info */ + Eiotas_User_Bits user_bits; /**< user bits */ }; +/** + * @brief Free allocated resources. + * + * @param door The Eiotas_Door to free. + * + * This function will free all it's user data using user_bits ... FIXME + */ void eiotas_door_free(Eiotas_Door *door); +/** + * @brief Allocate the resources. + * + * @param name The name of this door. + * @param parent The direct hierarchical parent Eiotas_Room. + * @param user_bits A Eiotas_User_Bits initilized with user side pointers. + * + * @return the new allocated Eiotas_Door @c NULL on failure + * + * @see Eiotas_User_Bits + */ EAPI Eiotas_Door* eiotas_door_add(const char* name, Eiotas_Room *parent, Eiotas_User_Bits *user_bits); #endif // __EIOTAS_DOOR_H__ diff --git a/src/include/eiotas_iota.h b/src/include/eiotas_iota.h index 12f093b..d54ae61 100644 --- a/src/include/eiotas_iota.h +++ b/src/include/eiotas_iota.h @@ -21,6 +21,10 @@ #include +/** + * @enum _Eiotas_Type + * List of available Eiotas_Iota + */ typedef enum _Eiotas_Type { EIOTAS_TYPE_SPIN=0, @@ -30,18 +34,37 @@ typedef enum _Eiotas_Type EIOTAS_TYPE_COUNT } Eiotas_Type; +/** + * @typedef Eiotas_Iota + * Type for structural and hierachical info + */ typedef struct _Eiotas_Iota Eiotas_Iota; +/** + * @struct _Eiotas_Iota + * Struct for structural and hierachical info. + */ struct _Eiotas_Iota { - Eiotas_Type type; /* type of the iota */ - Eiotas_Iota *spin; /* top level iota which is a Eiotas_Spin */ - Eiotas_Iota *parent; /* direct parent in the hierarchy */ - Eina_Stringshare *name; /* iota's name */ - Eina_Stringshare *path; /* full path to this iota */ + Eiotas_Type type; /**< type of the iota */ + Eiotas_Iota *spin; /**< top level iota which is a Eiotas_Spin */ + Eiotas_Iota *parent; /**< direct parent in the hierarchy */ + Eina_Stringshare *name; /**< iota's name */ + Eina_Stringshare *path; /**< full path to this Eiotas_Iota */ }; +/** + * @brief Print iota information using EINA_LOG_DBG. + * + * @param iota The Eiotas_Iota to show. + */ EAPI void eiotas_iota_show(Eiotas_Iota *iota); +/** + * @brief Free allocated resources. + * + * @param iota The Eiotas_Iota to free. + * + */ void eiotas_iota_free(Eiotas_Iota *iota); #define eiotas_iota_require_particle(_iota) eiotas_spin_require_particle((Eiotas_Spin*)(_iota)->spin) diff --git a/src/include/eiotas_link.h b/src/include/eiotas_link.h index 4692641..4cc4e44 100644 --- a/src/include/eiotas_link.h +++ b/src/include/eiotas_link.h @@ -19,11 +19,24 @@ #ifndef __EIOTAS_LINK_H__ #define __EIOTAS_LINK_H__ +/** + * @typedef Eiotas_Link + * Type for a Link between Eiotas_Iotas. + */ typedef struct _Eiotas_Link Eiotas_Link; +/** + * @struct _Eiotas_Link + * Struct for a Link between Eiotas_Iotas. + */ struct _Eiotas_Link { }; +/** + * @brief Free allocated resources. + * + * @param link The Eiotas_Link to free. + */ void eiotas_link_free(Eiotas_Link *link); #endif // __EIOTAS_LINK_H__ diff --git a/src/include/eiotas_main.h b/src/include/eiotas_main.h index d7ef48c..d75ab96 100644 --- a/src/include/eiotas_main.h +++ b/src/include/eiotas_main.h @@ -21,6 +21,10 @@ #include +/** + * @typedef Eiotas_Version + * The version of Eiotas. + */ typedef struct _Eiotas_Version { int major; /**< Major component of the version */ @@ -32,8 +36,35 @@ EAPI extern Eiotas_Version *eiotas_version; EAPI extern int _eiotas_log_dom; +/** + * @brief Initialize the Eiotas library. + * + * @return 1 or greater on success, 0 on error. + * + * This function sets up all the eiotas modules. It returns 0 on + * failure (that is, when one of the module fails to initialize), + * otherwise it returns the number of times it has already been + * called. + * + * When Eiotas is not used anymore, call eiotas_shutdown() to shut down + * the Eiotaslibrary. + */ EAPI int eiotas_init(); +/** + * @brief Shut down the Eiotas library. + * + * @return 0 when all the modules are completely shut down, 1 or + * greater otherwise. + * + * This function shuts down the Eiotas library. It returns 0 when it has + * been called the same number of times than eiotas_init(). In that case + * it shut down all the Eiotas modules. + * + * Once this function succeeds (that is, @c 0 is returned), you must + * not call any of the Eiotas function anymore. You must call + * eiotas_init() again to use the Eiotas functions again. + */ EAPI int eiotas_shutdown(); #endif // __EIOTAS_MAIN_H__ diff --git a/src/include/eiotas_particle.h b/src/include/eiotas_particle.h index 6897d89..3f74040 100644 --- a/src/include/eiotas_particle.h +++ b/src/include/eiotas_particle.h @@ -27,30 +27,75 @@ #include "eiotas_iota.h" +/** + * @typedef Eiotas_Particle + * Type for a Particle, holding data and spinning from Iotas to Iotas. + */ typedef struct _Eiotas_Particle Eiotas_Particle; +/** + * @struct _Eiotas_Particle + * Struct for a Particle, holding data and spinning from Iotas to Iotas. + */ struct _Eiotas_Particle { - EINA_INLIST; - time_t ts; /* creation time */ - Eiotas_Iota *src; /* where it's born */ - Eiotas_Iota *dst; /* current destination */ - Eina_Array *dsts; /* array of destinatinon strings */ - Eina_Hash *payload; /* string data carried by this particle */ - Eina_Inlist *merged; /* list of merged particles */ - Eina_Array *link_fields; /* fields used to generate the link value */ - Eina_Stringshare *link_value; /* computed from link_fields and paylod, used for pearing particles */ + EINA_INLIST; /**< the Eina_Inlist info */ + time_t ts; /**< creation time */ + Eiotas_Iota *src; /**< where it's born */ + Eiotas_Iota *dst; /**< current destination */ + Eina_Array *dsts; /**< array of destinatinon strings */ + Eina_Hash *payload; /**< string data carried by this particle */ + Eina_Inlist *merged; /**< list of merged particles */ + Eina_Array *link_fields; /**< fields used to generate the link value */ + Eina_Stringshare *link_value; /**< computed from link_fields and paylod, used for pearing particles */ }; +/** + * @brief Free allocated resources. + * + * @param particle The Eiotas_Particle to free. + * + * This function will free all the merged Eiotas_Particle + */ void eiotas_particle_free(Eiotas_Particle *particle); +/** + * @brief Allocate the resources. + * + * @return the new allocated Eiotas_Particle @c NULL on failure + */ Eiotas_Particle* eiotas_particle_alloc(); +/** + * @brief Reset the Eiotas_Particle so that it can be required later. + * + * @param particle The Eiotas_Particle to reset + */ EAPI void eiotas_particle_reset(Eiotas_Particle *particle); +/** + * @brief Set @c src and @c ts timestamp. + * + * @param particle The Eiotas_Particle to init + * @param iota The Eiotas_Iota wich will be set as @c src + */ EAPI void eiotas_particle_init(Eiotas_Particle *particle, Eiotas_Iota *iota); +/** + * @brief Merge a particle into the other. + * + * @param particle The Eiotas_Particle to hold @p p + * @param p The Eiotas_Particle to be merged into @p particle + */ EAPI void eiotas_particle_merge(Eiotas_Particle *particle, Eiotas_Particle *p); +/** + * @brief Add destinations to the Eiotas_Particle + * + * @param particle The Eiotas_Particle to add destinations to + * @param destinations A comma separated list of destination "/room0/room1/.../doorx?action" + * + * This function will append each destination found to the destination list of the Eiotas_Particle. + */ EAPI void eiotas_particle_add_destinations(Eiotas_Particle *particle, char* destinations); #endif // __EIOTAS_PARTICLE_H__ diff --git a/src/include/eiotas_room.h b/src/include/eiotas_room.h index 877a91c..644dc0e 100644 --- a/src/include/eiotas_room.h +++ b/src/include/eiotas_room.h @@ -23,16 +23,41 @@ #include +/** + * @typedef Eiotas_Room + * Type for a Room, which holds other child Eiotas_Iotas. + */ typedef struct _Eiotas_Room Eiotas_Room; +/** + * @struct _Eiotas_Room + * Struct for a Room, which holds other child Eiotas_Iotas. + */ struct _Eiotas_Room { - Eiotas_Iota iota; /* structural info */ - Eina_Hash *links; /* TODO */ - Eina_Hash *children; /* stringshared values optimized hash table holding Rooms, Doors and Boards */ + Eiotas_Iota iota; /**< Eiotas_Iota structural info */ + Eina_Hash *links; /**< TODO */ + Eina_Hash *children; /**< stringshared values optimized hash table holding Eiotas_Iotas */ }; +/** + * @brief Free allocated resources. + * + * @param room The Eiotas_Room to free. + * + * This function will free all it's child Eiotas_Iotas. + */ void eiotas_room_free(Eiotas_Room *room); +/** + * @brief Print iota information using EINA_LOG_DBG. + * + * @param name The name of this Eiotas_Iota. + * @param parent The direct hierarchical parent Eiotas_Room. + * + * @return the new Eiotas_Room, @c NULL on failure + * + * This function will register the new room as a child of it's parent Eiotas_Room. + */ EAPI Eiotas_Room* eiotas_room_add(const char* name, Eiotas_Room *parent); #endif // __EIOTAS_ROOM_H__ diff --git a/src/include/eiotas_spin.h b/src/include/eiotas_spin.h index 5f7470b..3854878 100644 --- a/src/include/eiotas_spin.h +++ b/src/include/eiotas_spin.h @@ -26,23 +26,77 @@ #include #include +/** + * @typedef Eiotas_Spin + * Type for a Spin, the top level Room which holds Eiotas_Particle fifos and free Eiotas_Particles. + */ typedef struct _Eiotas_Spin Eiotas_Spin; +/** + * @struct _Eiotas_Spin + * Struct for a Spin, the top level Room which holds Eiotas_Particle fifos and free Eiotas_Particles. + */ struct _Eiotas_Spin { - Eiotas_Room room; /* higher level Room */ - Eina_Array *free_particles; /* lifo of free to reuse Particles TODO support different particle types, use an Eina_Hash */ - Eina_Inlist *app_fifo; /* fifo of application priority particles */ - Eina_Inlist *sys_fifo; /* fifo of system priority particles */ + Eiotas_Room room; /**< higher level Room */ + Eina_Array *free_particles; /**< lifo of free to reuse Eiotas_Particles TODO support different particle types, use an Eina_Hash */ + Eina_Inlist *app_fifo; /**< fifo of application priority particles */ + Eina_Inlist *sys_fifo; /**< fifo of system priority particles */ }; +/** + * @brief Free allocated resources. + * + * @param spin The Eiotas_Spin to free. + * + * This function will free all it's child Iotas, + * all the Eiotas_Particles holded in app_fifo, sys_fifo and free_particles. + */ EAPI void eiotas_spin_free(Eiotas_Spin *spin); +/** + * @brief Allocate the resources. + * + * @param name The name of this spin. + * @param step The count of pointers to add when increasing the fifo size. + * + * @return the new allocated Eiotas_Spin @c NULL on failure + * + * @see eina_array_new(). + */ EAPI Eiotas_Spin* eiotas_spin_add(const char* name, unsigned int step); +/** + * @brief Require a Eiotas_Particle from the free list. + * + * @param spin The Eiotas_Spin to require a Eiotas_Particle from. + * + * @return a ready to use Eiotas_Particle + * + * This function will allocate and initialize a new Eiotas_Particle if there is none in the free list. + */ EAPI Eiotas_Particle* eiotas_spin_require_particle(Eiotas_Spin *spin); +/** + * @brief Release a particle. + * + * @param spin The Eiotas_Spin to restore the particle to. + * @param particle The Eiotas_Particle to be restored. + * + * This function calls eiotas_particle_reset() before giving back the Eiotas_Particle. + * Each Eiotas_Particle merged in the first one are also released. + * + * @see eiotas_particle_reset(). + */ EAPI void eiotas_spin_release_particle(Eiotas_Spin *spin, Eiotas_Particle *particle); +/** + * @brief Appand the Eiotas_Particle to the app or sys fifo. + * + * @param spin The Eiotas_Spin to post the particle to. + * @param particle The Eiotas_Particle to be sent. + * @param system Post to the system fifo us true, otherwise to the application fifo. + * + */ EAPI void eiotas_spin_send_particle(Eiotas_Spin *spin, Eiotas_Particle *particle, Eina_Bool system); #define eiotas_require_particle(_iota) eiotas_spin_require_particle((Eiotas_Spin*)((Eiotas_Iota*)(_iota))->spin) diff --git a/src/include/eiotas_userbits.h b/src/include/eiotas_userbits.h index 4e33d1e..e4149b8 100644 --- a/src/include/eiotas_userbits.h +++ b/src/include/eiotas_userbits.h @@ -22,30 +22,69 @@ #include "eiotas_iota.h" #include "eiotas_particle.h" +/** + * @typedef Eiotas_User_Bits + * Type for a Eiotas_User_Bits. + */ typedef struct _Eiotas_User_Bits Eiotas_User_Bits; +/** + * @typedef Eiotas_User_Data + * Struct for user allocated data attached to a Eiotas_Door or a Eiotas_Board + */ typedef void Eiotas_User_Data; +/** + * @typedef Eiotas_User_Data + * Type for function called on resources free + * + * @see eiotas_door_free() + * @see eiotas_board_free() + */ typedef void (*Eiotas_User_Data_Free) (Eiotas_User_Data*); +/** + * @typedef Eiotas_Receive_Particle + * Type for function called on Eiotas_Particle receive + */ typedef void (*Eiotas_Receive_Particle) (Eiotas_Iota *iota, Eiotas_Particle *particle, Eiotas_User_Data *data); +/** + * @typedef Eiotas_Init + * Type for function called on systsem init + */ typedef void (*Eiotas_Init) (Eiotas_Iota *iota, Eiotas_User_Data *data); +/** + * @typedef Eiotas_Shutdown + * Type for function called on system shutdown + */ typedef void (*Eiotas_Shutdown) (Eiotas_Iota *iota, Eiotas_User_Data *data); +/** + * @typedef Eiotas_Suspend + * Type for function called on system suspend + */ typedef void (*Eiotas_Suspend) (Eiotas_Iota *iota, Eiotas_User_Data *data); +/** + * @typedef Eiotas_Resume + * Type for function called on system resume + */ typedef void (*Eiotas_Resume) (Eiotas_Iota *iota, Eiotas_User_Data *data); +/** + * @typedef _Eiotas_User_Bits + * Type for a Eiotas_User_Bits. + */ struct _Eiotas_User_Bits { - Eiotas_User_Data *data; /* user data */ - Eiotas_User_Data_Free free_fct; /* to free user data */ - Eiotas_Receive_Particle recv_fct; /* to receive and process a particle */ - Eiotas_Init init_fct; /* to initialize user data on system init */ - Eiotas_Shutdown shutdown_fct; /* to finalize user data on system shutdown */ - Eiotas_Suspend suspend_fct; /* to serialize user data on system shutdown */ - Eiotas_Resume resume_fct; /* to deserialize data on system resume */ + Eiotas_User_Data *data; /**< user data */ + Eiotas_User_Data_Free free_fct; /**< to free user data */ + Eiotas_Receive_Particle recv_fct; /**< to receive and process a Eiotas_Particle */ + Eiotas_Init init_fct; /**< to initialize user data on system init */ + Eiotas_Shutdown shutdown_fct; /**< to finalize user data on system shutdown */ + Eiotas_Suspend suspend_fct; /**< to serialize user data on system shutdown */ + Eiotas_Resume resume_fct; /**< to deserialize data on system resume */ }; #endif // __EIOTAS_USERBITS_H__ -- cgit v1.1-2-g2b99