Class to track data flow and detect a specific pattern

Committer:
chris215
Date:
Mon Jan 11 04:48:08 2016 +0000
Revision:
0:b8cca837d413
Child:
1:038d0018a542
Class to find a pattern. Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris215 0:b8cca837d413 1 #include "PatternFinder.h"
chris215 0:b8cca837d413 2 // make the linker aware of some possible types
chris215 0:b8cca837d413 3 template class PatternFinder<uint8_t>;
chris215 0:b8cca837d413 4 template class PatternFinder<int8_t>;
chris215 0:b8cca837d413 5 template class PatternFinder<uint16_t>;
chris215 0:b8cca837d413 6 template class PatternFinder<int16_t>;
chris215 0:b8cca837d413 7 template class PatternFinder<uint32_t>;
chris215 0:b8cca837d413 8 template class PatternFinder<int32_t>;
chris215 0:b8cca837d413 9 template class PatternFinder<uint64_t>;
chris215 0:b8cca837d413 10 template class PatternFinder<int64_t>;
chris215 0:b8cca837d413 11 template class PatternFinder<char>;
chris215 0:b8cca837d413 12 template class PatternFinder<wchar_t>;
chris215 0:b8cca837d413 13
chris215 0:b8cca837d413 14 template <class T>
chris215 0:b8cca837d413 15 PatternFinder<T>::PatternFinder(T* Pattern,uint32_t PatternSize)
chris215 0:b8cca837d413 16 {
chris215 0:b8cca837d413 17 m_PatternSize = PatternSize;
chris215 0:b8cca837d413 18 m_PatternReference = new T[PatternSize];
chris215 0:b8cca837d413 19
chris215 0:b8cca837d413 20 T *src = Pattern;
chris215 0:b8cca837d413 21 T *dst = &m_PatternReference[PatternSize-1];
chris215 0:b8cca837d413 22 //We must invert the given pattern so that it better fits the matching algorithm
chris215 0:b8cca837d413 23 for(int x = 0; x < PatternSize ;x++)
chris215 0:b8cca837d413 24 {
chris215 0:b8cca837d413 25 *dst-- = *src++;
chris215 0:b8cca837d413 26
chris215 0:b8cca837d413 27 }
chris215 0:b8cca837d413 28 m_CurrentPattern = new T[PatternSize];
chris215 0:b8cca837d413 29 return;
chris215 0:b8cca837d413 30 }
chris215 0:b8cca837d413 31
chris215 0:b8cca837d413 32 template <class T>
chris215 0:b8cca837d413 33 PatternFinder<T>::~PatternFinder()
chris215 0:b8cca837d413 34 {
chris215 0:b8cca837d413 35 delete [] m_PatternReference;
chris215 0:b8cca837d413 36 delete [] m_CurrentPattern;
chris215 0:b8cca837d413 37 return;
chris215 0:b8cca837d413 38 }
chris215 0:b8cca837d413 39