00001
00002 #include "CPPFORT/lcrnv.h"
00003 #include "UTIL/LCRelationNavigator.h"
00004
00005 #include "lcio.h"
00006 #include "IMPL/LCRelationImpl.h"
00007 #include "EVENT/LCCollection.h"
00008 #include "EVENT/LCObject.h"
00009 #include "LCIOSTLTypes.h"
00010
00011 #include <iostream>
00012
00013 using namespace lcio ;
00014
00015 PTRTYPE lcrnvcreate( const char* fromType, const char* toType ){
00016 LCRelationNavigator* relation = new LCRelationNavigator( fromType, toType ) ;
00017 return reinterpret_cast<PTRTYPE>( relation ) ;
00018
00019 }
00020
00021 int lcrnvdelete( PTRTYPE relation ){
00022 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00023 delete rel ;
00024 return LCIO::SUCCESS ;
00025
00026 }
00027
00028 PTRTYPE lcrnvcreatefromcollection( PTRTYPE collection ){
00029 LCCollection* col = reinterpret_cast<LCCollection*>( collection ) ;
00030 LCRelationNavigator* relation = new LCRelationNavigator( col ) ;
00031 return reinterpret_cast<PTRTYPE>( relation ) ;
00032
00033 }
00034
00035 char* lcrnvgetfromtype( PTRTYPE relation ){
00036 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00037 return const_cast<char*>(rel->getFromType().c_str() ) ;
00038 }
00039
00040 char* lcrnvgettotype( PTRTYPE relation ){
00041 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00042 return const_cast<char*>(rel->getToType().c_str() ) ;
00043 }
00044
00045 PTRTYPE lcrnvgetrelatedtoobjects( PTRTYPE relation, PTRTYPE object ){
00046 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00047 LCObject* obj = f2c_pointer<LCObject,LCObject>( object ) ;
00048 const LCObjectVec& vec = rel->getRelatedToObjects( obj ) ;
00049 return reinterpret_cast<PTRTYPE>( &vec ) ;
00050 }
00051
00052 PTRTYPE lcrnvgetrelatedfromobjects( PTRTYPE relation, PTRTYPE object ){
00053 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00054 LCObject* obj = f2c_pointer<LCObject,LCObject>( object ) ;
00055 const LCObjectVec& vec = rel->getRelatedFromObjects( obj ) ;
00056 return reinterpret_cast<PTRTYPE>( &vec ) ;
00057 }
00058
00059 PTRTYPE lcrnvgetrelatedtoweights ( PTRTYPE relation, PTRTYPE object ){
00060 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00061 LCObject* obj = f2c_pointer<LCObject,LCObject>( object ) ;
00062 const FloatVec & vec = rel->getRelatedToWeights( obj ) ;
00063 return reinterpret_cast<PTRTYPE>( &vec ) ;
00064 }
00065
00066 PTRTYPE lcrnvgetrelatedfromweights ( PTRTYPE relation, PTRTYPE object ){
00067 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00068 LCObject* obj = f2c_pointer<LCObject,LCObject>( object ) ;
00069 const FloatVec & vec = rel->getRelatedFromWeights( obj ) ;
00070 return reinterpret_cast<PTRTYPE>( &vec ) ;
00071 }
00072
00073 int lcrnvgaddrelation(PTRTYPE relation, PTRTYPE objectfrom, PTRTYPE objectto, float weight ){
00074 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00075 LCObject* objf = f2c_pointer<LCObject,LCObject>( objectfrom ) ;
00076 LCObject* objt = f2c_pointer<LCObject,LCObject>( objectto ) ;
00077 rel->addRelation( objf, objt, weight ) ;
00078 return LCIO::SUCCESS ;
00079 }
00080
00081 int lcrnvgremoverelation(PTRTYPE relation, PTRTYPE objectfrom, PTRTYPE objectto ){
00082 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00083 LCObject* objf = f2c_pointer<LCObject,LCObject>( objectfrom ) ;
00084 LCObject* objt = f2c_pointer<LCObject,LCObject>( objectto ) ;
00085 rel->removeRelation( objf, objt ) ;
00086 return LCIO::SUCCESS ;
00087 }
00088
00089 PTRTYPE lcrnvcreatecollection(PTRTYPE relation ){
00090 LCRelationNavigator* rel = reinterpret_cast<LCRelationNavigator*>( relation ) ;
00091 LCCollection* col = rel->createLCCollection() ;
00092 return reinterpret_cast<PTRTYPE>( col ) ;
00093
00094 }
00095
00096