// @(#) $Id$
#ifndef ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
#define ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/** @file AliHLT_C_Component_WrapperInterface.h
@author Matthias Richter, Timm Steinbeck
@date
@brief Pure C interface to the AliRoot HLT component handler
@note Utilized by the HLT Online (PubSub) framework
*/
/**
* @defgroup alihlt_wrapper_interface The HLT wrapper interface
* The wrapper interface is a pure C interface which allows to use the
* analysis components in external applications. The interface is utilized
* to bind the analysis code to the PubSub framework.
*
* \image html PubSub_WrapperComponent.png "Wrapper interface"
*
* CDB handling: The interface initializes the CDB from the path found
* in the environment variable ALIHLT_HCDBDIR. Default path is
* $ALICE_ROOT.
*/
#include
/* Matthias Dec 2006
* The names have been changed for Aliroot's coding conventions sake
* The old names are defined for backward compatibility with the
* PublisherSubscriber framework
*/
typedef AliHLTComponentLogSeverity AliHLTComponent_LogSeverity;
typedef AliHLTComponentEventData AliHLTComponent_EventData;
typedef AliHLTComponentShmData AliHLTComponent_ShmData;
typedef AliHLTComponentDataType AliHLTComponent_DataType;
typedef AliHLTComponentBlockData AliHLTComponent_BlockData;
typedef AliHLTComponentTriggerData AliHLTComponent_TriggerData;
typedef AliHLTComponentEventDoneData AliHLTComponent_EventDoneData;
const AliHLTUInt32_t gkAliHLTComponent_InvalidShmType = gkAliHLTComponentInvalidShmType;
const AliHLTUInt64_t gkAliHLTComponent_InvalidShmID = gkAliHLTComponentInvalidShmID;
#ifdef __cplusplus
extern "C" {
#endif
/**
*
* @ingroup alihlt_wrapper_interface
*/
typedef void* AliHLTComponentHandle;
/**
*
* @ingroup alihlt_wrapper_interface
*/
const AliHLTComponentHandle kEmptyHLTComponentHandle = 0;
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_Component_DeinitSystem();
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_Component_LoadLibrary( const char* libraryPath );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_Component_UnloadLibrary( const char* libraryPath );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle );
/**
*
* @ingroup alihlt_wrapper_interface
*/
void AliHLT_C_DestroyComponent( AliHLTComponentHandle );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_ProcessEvent( AliHLTComponentHandle handle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks,
AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt,
AliHLTComponent_BlockData** outputBlocks,
AliHLTComponent_EventDoneData** edd );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_GetOutputDataType( AliHLTComponentHandle, AliHLTComponent_DataType* dataType );
/**
*
* @ingroup alihlt_wrapper_interface
*/
int AliHLT_C_GetOutputSize( AliHLTComponentHandle, unsigned long* constBase, double* inputMultiplier );
#ifdef __cplusplus
}
#endif
#endif //ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H