]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/AliHLT_C_Component_WrapperInterface.h
enhanced HOMER reader to work on normal buffer
[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 const AliHLTUInt32_t gkAliHLTComponent_InvalidShmType = gkAliHLTComponentInvalidShmType;
39 const AliHLTUInt64_t gkAliHLTComponent_InvalidShmID = gkAliHLTComponentInvalidShmID;
40
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
45 /**
46  * 
47  * @ingroup alihlt_wrapper_interface
48  */
49 typedef void* AliHLTComponentHandle;
50
51 /**
52  * 
53  * @ingroup alihlt_wrapper_interface
54  */
55 const AliHLTComponentHandle kEmptyHLTComponentHandle = 0;
56
57 /**
58  * 
59  * @ingroup alihlt_wrapper_interface
60  */
61 int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ );
62
63 /**
64  * 
65  * @ingroup alihlt_wrapper_interface
66  */
67 int AliHLT_C_Component_DeinitSystem();
68
69 /**
70  * 
71  * @ingroup alihlt_wrapper_interface
72  */
73 int AliHLT_C_Component_LoadLibrary( const char* libraryPath );
74
75 /**
76  * 
77  * @ingroup alihlt_wrapper_interface
78  */
79 int AliHLT_C_Component_UnloadLibrary( const char* libraryPath );
80
81 /**
82  * 
83  * @ingroup alihlt_wrapper_interface
84  */
85 int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle );
86
87 /**
88  * 
89  * @ingroup alihlt_wrapper_interface
90  */
91 void AliHLT_C_DestroyComponent( AliHLTComponentHandle );
92
93 /**
94  * 
95  * @ingroup alihlt_wrapper_interface
96  */
97 int AliHLT_C_ProcessEvent( AliHLTComponentHandle handle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks, 
98                            AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
99                            AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt, 
100                            AliHLTComponent_BlockData** outputBlocks,
101                            AliHLTComponent_EventDoneData** edd );
102
103 /**
104  * 
105  * @ingroup alihlt_wrapper_interface
106  */
107 int AliHLT_C_GetOutputDataType( AliHLTComponentHandle, AliHLTComponent_DataType* dataType );
108
109 /**
110  * 
111  * @ingroup alihlt_wrapper_interface
112  */
113 int AliHLT_C_GetOutputSize( AliHLTComponentHandle, unsigned long* constBase, double* inputMultiplier );
114
115 #ifdef __cplusplus
116 }
117 #endif
118
119 #endif //ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H