added code documentation for BASE, SampleLib, TPCLib and build system
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLT_C_Component_WrapperInterface.h
1 // @(#) $Id$
2
3 #ifndef ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
4 #define ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 /** @file   AliHLT_C_Component_WrapperInterface.h
9     @author Matthias Richter, Timm Steinbeck
10     @date   
11     @brief  Pure C interface to the AliRoot HLT component handler
12     @note   Utilized by the HLT Online (PubSub) framework
13 */
14
15 /** 
16  * @defgroup alihlt_wrapper_interface The HLT wrapper interface
17  * The wrapper interface is a pure C interface which allows to use the 
18  * analysis components in external applications. The interface is utilized
19  * to bind the analysis code to the PubSub framework. 
20  *
21  * \image html PubSub_WrapperComponent.png "Wrapper interface"
22  *
23  */
24
25 #include <AliHLTDataTypes.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 /**
32  * 
33  * @ingroup alihlt_wrapper_interface
34  */
35 typedef void* AliHLTComponentHandle;
36
37 /**
38  * 
39  * @ingroup alihlt_wrapper_interface
40  */
41 const AliHLTComponentHandle kEmptyHLTComponentHandle = 0;
42
43 /**
44  * 
45  * @ingroup alihlt_wrapper_interface
46  */
47 int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ );
48
49 /**
50  * 
51  * @ingroup alihlt_wrapper_interface
52  */
53 int AliHLT_C_Component_DeinitSystem();
54
55 /**
56  * 
57  * @ingroup alihlt_wrapper_interface
58  */
59 int AliHLT_C_Component_LoadLibrary( const char* libraryPath );
60
61 /**
62  * 
63  * @ingroup alihlt_wrapper_interface
64  */
65 int AliHLT_C_Component_UnloadLibrary( const char* libraryPath );
66
67 /**
68  * 
69  * @ingroup alihlt_wrapper_interface
70  */
71 int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle );
72
73 /**
74  * 
75  * @ingroup alihlt_wrapper_interface
76  */
77 void AliHLT_C_DestroyComponent( AliHLTComponentHandle );
78
79 /**
80  * 
81  * @ingroup alihlt_wrapper_interface
82  */
83 int AliHLT_C_ProcessEvent( AliHLTComponentHandle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks, 
84                            AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
85                            AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt, 
86                            AliHLTComponent_BlockData** outputBlocks,
87                            AliHLTComponent_EventDoneData** edd );
88
89 /**
90  * 
91  * @ingroup alihlt_wrapper_interface
92  */
93 int AliHLT_C_GetOutputDataType( AliHLTComponentHandle, AliHLTComponent_DataType* dataType );
94
95 /**
96  * 
97  * @ingroup alihlt_wrapper_interface
98  */
99 int AliHLT_C_GetOutputSize( AliHLTComponentHandle, unsigned long* constBase, double* inputMultiplier );
100
101 #ifdef __cplusplus
102 }
103 #endif
104
105 #endif //ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H