- changes according to coding conventions and documentation
[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 /* Matthias Dec 2006
27  * The names have been changed for Aliroot's coding conventions sake
28  * The old names are defined for backward compatibility with the 
29  * PublisherSubscriber framework
30  */
31 typedef AliHLTComponentLogSeverity AliHLTComponent_LogSeverity;
32 typedef AliHLTComponentEventData AliHLTComponent_EventData;
33 typedef AliHLTComponentShmData AliHLTComponent_ShmData;
34 typedef AliHLTComponentDataType AliHLTComponent_DataType;
35 typedef AliHLTComponentBlockData AliHLTComponent_BlockData;
36 typedef AliHLTComponentTriggerData AliHLTComponent_TriggerData;
37 typedef AliHLTComponentEventDoneData AliHLTComponent_EventDoneData;
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /**
44  * 
45  * @ingroup alihlt_wrapper_interface
46  */
47 typedef void* AliHLTComponentHandle;
48
49 /**
50  * 
51  * @ingroup alihlt_wrapper_interface
52  */
53 const AliHLTComponentHandle kEmptyHLTComponentHandle = 0;
54
55 /**
56  * 
57  * @ingroup alihlt_wrapper_interface
58  */
59 int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ );
60
61 /**
62  * 
63  * @ingroup alihlt_wrapper_interface
64  */
65 int AliHLT_C_Component_DeinitSystem();
66
67 /**
68  * 
69  * @ingroup alihlt_wrapper_interface
70  */
71 int AliHLT_C_Component_LoadLibrary( const char* libraryPath );
72
73 /**
74  * 
75  * @ingroup alihlt_wrapper_interface
76  */
77 int AliHLT_C_Component_UnloadLibrary( const char* libraryPath );
78
79 /**
80  * 
81  * @ingroup alihlt_wrapper_interface
82  */
83 int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle );
84
85 /**
86  * 
87  * @ingroup alihlt_wrapper_interface
88  */
89 void AliHLT_C_DestroyComponent( AliHLTComponentHandle );
90
91 /**
92  * 
93  * @ingroup alihlt_wrapper_interface
94  */
95 int AliHLT_C_ProcessEvent( AliHLTComponentHandle handle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks, 
96                            AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
97                            AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt, 
98                            AliHLTComponent_BlockData** outputBlocks,
99                            AliHLTComponent_EventDoneData** edd );
100
101 /**
102  * 
103  * @ingroup alihlt_wrapper_interface
104  */
105 int AliHLT_C_GetOutputDataType( AliHLTComponentHandle, AliHLTComponent_DataType* dataType );
106
107 /**
108  * 
109  * @ingroup alihlt_wrapper_interface
110  */
111 int AliHLT_C_GetOutputSize( AliHLTComponentHandle, unsigned long* constBase, double* inputMultiplier );
112
113 #ifdef __cplusplus
114 }
115 #endif
116
117 #endif //ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H