Class to track data flow and detect a specific pattern

PatternFinder.cpp

Committer:
chris215
Date:
2016-01-11
Revision:
0:b8cca837d413
Child:
1:038d0018a542

File content as of revision 0:b8cca837d413:

#include "PatternFinder.h"
// make the linker aware of some possible types
template class PatternFinder<uint8_t>;
template class PatternFinder<int8_t>;
template class PatternFinder<uint16_t>;
template class PatternFinder<int16_t>;
template class PatternFinder<uint32_t>;
template class PatternFinder<int32_t>;
template class PatternFinder<uint64_t>;
template class PatternFinder<int64_t>;
template class PatternFinder<char>;
template class PatternFinder<wchar_t>;

template <class T>
PatternFinder<T>::PatternFinder(T* Pattern,uint32_t PatternSize)
{
    m_PatternSize = PatternSize;
    m_PatternReference = new T[PatternSize];
    
    T *src = Pattern;
    T *dst = &m_PatternReference[PatternSize-1];
    //We must invert the given pattern so that it better fits the matching algorithm
    for(int x = 0; x < PatternSize ;x++)
    {
        *dst-- = *src++;

    }
    m_CurrentPattern = new T[PatternSize];  
    return;
}

template <class T>
PatternFinder<T>::~PatternFinder()
{
    delete [] m_PatternReference;
    delete [] m_CurrentPattern;
    return;
}