]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLT_C_Component_WrapperInterface.cxx
adaption to new logging class, added functionality to AliHLTSystem to build a task...
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLT_C_Component_WrapperInterface.cxx
CommitLineData
f23a6e1a 1// $Id$
2
3/**************************************************************************
4 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * *
6 * Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
7 * Timm Steinbeck <timm@kip.uni-heidelberg.de> *
8 * Artur Szostak <artursz@iafrica.com> *
9 * for The ALICE Off-line Project. *
10 * *
11 * Permission to use, copy, modify and distribute this software and its *
12 * documentation strictly for non-commercial purposes is hereby granted *
13 * without fee, provided that the above copyright notice appears in all *
14 * copies and that both the copyright notice and this permission notice *
15 * appear in the supporting documentation. The authors make no claims *
16 * about the suitability of this software for any purpose. It is *
17 * provided "as is" without express or implied warranty. *
18 **************************************************************************/
19
20///////////////////////////////////////////////////////////////////////////////
21// //
22// pure C interface to the AliRoot HLT component handler //
23// //
24///////////////////////////////////////////////////////////////////////////////
25
26#if __GNUC__== 3
27using namespace std;
28#endif
29
30#include "AliHLT_C_Component_WrapperInterface.h"
31#include "AliHLTComponentHandler.h"
32#include "AliHLTComponent.h"
33#include <errno.h>
34
35static AliHLTComponentHandler *gComponentHandler_C = NULL;
36
37
38int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ )
39{
40 if ( gComponentHandler_C )
41 {
42 return EINPROGRESS;
43 }
44 gComponentHandler_C = new AliHLTComponentHandler();
45 if ( !gComponentHandler_C )
46 return EFAULT;
47 gComponentHandler_C->SetEnvironment( environ );
48 return 0;
49}
50
51int AliHLT_C_Component_DeinitSystem()
52{
53 if ( gComponentHandler_C )
54 {
55 delete gComponentHandler_C;
56 gComponentHandler_C = NULL;
57 }
58 return 0;
59}
60
61int AliHLT_C_Component_LoadLibrary( const char* libraryPath )
62{
63 if ( !gComponentHandler_C )
64 return ENXIO;
65 return gComponentHandler_C->LoadLibrary( libraryPath );
66}
67
68int AliHLT_C_Component_UnloadLibrary( const char* libraryPath )
69{
70 if ( !gComponentHandler_C )
71 return ENXIO;
72 return gComponentHandler_C->UnloadLibrary( libraryPath );
73}
74
75int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle )
76{
77 if ( !gComponentHandler_C )
78 return ENXIO;
79 AliHLTComponent* comp;
80 int ret = gComponentHandler_C->CreateComponent( componentType, environ_param, argc, argv, comp );
81 *handle = reinterpret_cast<AliHLTComponentHandle>( comp );
82 return ret;
83}
84
85void AliHLT_C_DestroyComponent( AliHLTComponentHandle handle )
86{
87 if ( !handle )
88 return;
89 delete reinterpret_cast<AliHLTComponent*>( handle );
90}
91
71d7c760 92int AliHLT_C_ProcessEvent( AliHLTComponentHandle handle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks,
93 AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
f23a6e1a 94 AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt,
95 AliHLTComponent_BlockData** outputBlocks,
96 AliHLTComponent_EventDoneData** edd )
97{
98 if ( !handle )
99 return ENXIO;
100 AliHLTComponent* comp = reinterpret_cast<AliHLTComponent*>( handle );
71d7c760 101 return comp->ProcessEvent( *evtData, blocks, *trigData, outputPtr, *size, *outputBlockCnt, *outputBlocks, *edd );
102}
103
104int AliHLT_C_GetOutputDataType( AliHLTComponentHandle handle, AliHLTComponent_DataType* dataType )
105{
106 if ( !handle )
107 return ENXIO;
108 AliHLTComponent* comp = reinterpret_cast<AliHLTComponent*>( handle );
109 *dataType = comp->GetOutputDataType();
110 return 0;
111}
112
113int AliHLT_C_GetOutputSize( AliHLTComponentHandle handle, unsigned long* constBase, double* inputMultiplier )
114{
115 if ( !handle )
116 return ENXIO;
117 AliHLTComponent* comp = reinterpret_cast<AliHLTComponent*>( handle );
118 comp->GetOutputDataSize( *constBase, *inputMultiplier );
119 return 0;
f23a6e1a 120}