00001 #ifndef Impala_Core_Feature_VirtualFeatureTableMemory_h 00002 #define Impala_Core_Feature_VirtualFeatureTableMemory_h 00003 00004 #include "Core/Feature/VirtualFeatureTable.h" 00005 #include "Core/Feature/FeatureTable.h" 00006 00007 namespace Impala 00008 { 00009 namespace Core 00010 { 00011 namespace Feature 00012 { 00013 00014 00015 class VirtualFeatureTableMemory : public VirtualFeatureTable 00016 { 00017 public: 00018 00019 VirtualFeatureTableMemory(FeatureTable* features) 00020 { 00021 mFeatures = features; 00022 } 00023 00024 virtual 00025 ~VirtualFeatureTableMemory() 00026 { 00027 delete mFeatures; 00028 mFeatures = 0; 00029 } 00030 00031 virtual int 00032 Size() const 00033 { 00034 return mFeatures->Size(); 00035 } 00036 00037 virtual void 00038 GetQuids(Table::QuidTable* quids) 00039 { 00040 Copy(quids->GetColumn1(), mFeatures->GetColumn1(), Size(), 0, 0); 00041 quids->SetSize(Size()); 00042 } 00043 00044 virtual int 00045 GetVectorLength() const 00046 { 00047 return mFeatures->GetFeatureVectorLength(); 00048 } 00049 00050 private: 00051 00052 virtual int 00053 GetVectorImpl(int rowNr, Real64* buffer, int bufferSize) 00054 { 00055 Real64* ptr = mFeatures->GetColumn2()->GetVectorData(rowNr); 00056 int len = GetVectorLength(); 00057 for (int i=0 ; i<len ; i++) 00058 buffer[i] = ptr[i]; 00059 return len; 00060 } 00061 00062 FeatureTable* mFeatures; 00063 00064 ILOG_VAR_DEC; 00065 }; 00066 00067 ILOG_VAR_INIT(VirtualFeatureTableMemory, Impala.Core.Feature); 00068 00069 } // namespace Feature 00070 } // namespace Core 00071 } // namespace Impala 00072 00073 #endif