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