BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

Committer:
va009039
Date:
Sun Oct 07 12:03:40 2012 +0000
Revision:
0:7121d9fb45f4
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:7121d9fb45f4 1 #include "BitPattern.h"
va009039 0:7121d9fb45f4 2
va009039 0:7121d9fb45f4 3 BitPattern::BitPattern()
va009039 0:7121d9fb45f4 4 {
va009039 0:7121d9fb45f4 5 clear();
va009039 0:7121d9fb45f4 6 }
va009039 0:7121d9fb45f4 7
va009039 0:7121d9fb45f4 8 BitPattern::BitPattern(uint32_t value, int size)
va009039 0:7121d9fb45f4 9 {
va009039 0:7121d9fb45f4 10 clear();
va009039 0:7121d9fb45f4 11 put(value, size);
va009039 0:7121d9fb45f4 12 }
va009039 0:7121d9fb45f4 13
va009039 0:7121d9fb45f4 14 BitPattern::BitPattern(const char* s)
va009039 0:7121d9fb45f4 15 {
va009039 0:7121d9fb45f4 16 clear();
va009039 0:7121d9fb45f4 17 operator+=(s);
va009039 0:7121d9fb45f4 18 }
va009039 0:7121d9fb45f4 19
va009039 0:7121d9fb45f4 20 void BitPattern::clear()
va009039 0:7121d9fb45f4 21 {
va009039 0:7121d9fb45f4 22 m_size = 0;
va009039 0:7121d9fb45f4 23 m_pat = 0;
va009039 0:7121d9fb45f4 24 }
va009039 0:7121d9fb45f4 25
va009039 0:7121d9fb45f4 26 void BitPattern::operator=(const char* s)
va009039 0:7121d9fb45f4 27 {
va009039 0:7121d9fb45f4 28 clear();
va009039 0:7121d9fb45f4 29 operator+=(s);
va009039 0:7121d9fb45f4 30 }
va009039 0:7121d9fb45f4 31
va009039 0:7121d9fb45f4 32 void BitPattern::operator+=(uint8_t c)
va009039 0:7121d9fb45f4 33 {
va009039 0:7121d9fb45f4 34 put(c);
va009039 0:7121d9fb45f4 35 }
va009039 0:7121d9fb45f4 36
va009039 0:7121d9fb45f4 37 void BitPattern::operator+=(const char* s)
va009039 0:7121d9fb45f4 38 {
va009039 0:7121d9fb45f4 39 for(int i = 0; i < 32 && s[i]; i++) {
va009039 0:7121d9fb45f4 40 char c = s[i];
va009039 0:7121d9fb45f4 41 put(c-'0', 1);
va009039 0:7121d9fb45f4 42 }
va009039 0:7121d9fb45f4 43 }
va009039 0:7121d9fb45f4 44
va009039 0:7121d9fb45f4 45 int BitPattern::operator [](int index)
va009039 0:7121d9fb45f4 46 {
va009039 0:7121d9fb45f4 47 uint32_t mask = 0x80000000;
va009039 0:7121d9fb45f4 48 for(int i = 0; i < index; i++) {
va009039 0:7121d9fb45f4 49 mask>>=1;
va009039 0:7121d9fb45f4 50 }
va009039 0:7121d9fb45f4 51 if (m_pat & mask) {
va009039 0:7121d9fb45f4 52 return 1;
va009039 0:7121d9fb45f4 53 }
va009039 0:7121d9fb45f4 54 return 0;
va009039 0:7121d9fb45f4 55 }
va009039 0:7121d9fb45f4 56
va009039 0:7121d9fb45f4 57 void BitPattern::put(uint32_t value, int size)
va009039 0:7121d9fb45f4 58 {
va009039 0:7121d9fb45f4 59 m_pat <<= size;
va009039 0:7121d9fb45f4 60 m_pat |= value;
va009039 0:7121d9fb45f4 61 m_size += size;
va009039 0:7121d9fb45f4 62 }
va009039 0:7121d9fb45f4 63
va009039 0:7121d9fb45f4 64 uint32_t BitPattern::peek(int size)
va009039 0:7121d9fb45f4 65 {
va009039 0:7121d9fb45f4 66 return m_pat >> (m_size - size);
va009039 0:7121d9fb45f4 67 }
va009039 0:7121d9fb45f4 68
va009039 0:7121d9fb45f4 69 uint32_t BitPattern::get(int size)
va009039 0:7121d9fb45f4 70 {
va009039 0:7121d9fb45f4 71 uint32_t r = peek(size);
va009039 0:7121d9fb45f4 72 m_size -= size;
va009039 0:7121d9fb45f4 73 m_pat &= (1<<m_size)-1;
va009039 0:7121d9fb45f4 74 return r;
va009039 0:7121d9fb45f4 75 }
va009039 0:7121d9fb45f4 76
va009039 0:7121d9fb45f4 77 int BitPattern::size()
va009039 0:7121d9fb45f4 78 {
va009039 0:7121d9fb45f4 79 return m_size;
va009039 0:7121d9fb45f4 80 }
va009039 0:7121d9fb45f4 81
va009039 0:7121d9fb45f4 82 bool BitPattern::match(BitPattern& b)
va009039 0:7121d9fb45f4 83 {
va009039 0:7121d9fb45f4 84 if (b.m_size > m_size) {
va009039 0:7121d9fb45f4 85 return false;
va009039 0:7121d9fb45f4 86 }
va009039 0:7121d9fb45f4 87 return peek(b.size()) == b.peek(b.size());
va009039 0:7121d9fb45f4 88 }
va009039 0:7121d9fb45f4 89
va009039 0:7121d9fb45f4 90 bool BitPattern::match(const char* s)
va009039 0:7121d9fb45f4 91 {
va009039 0:7121d9fb45f4 92 BitPattern a = s;
va009039 0:7121d9fb45f4 93 return match(a);
va009039 0:7121d9fb45f4 94 }
va009039 0:7121d9fb45f4 95
va009039 0:7121d9fb45f4 96 bool BitPattern::operator ==(BitPattern& b)
va009039 0:7121d9fb45f4 97 {
va009039 0:7121d9fb45f4 98 if (b.m_size == m_size) {
va009039 0:7121d9fb45f4 99 if (b.m_pat == m_pat) {
va009039 0:7121d9fb45f4 100 return true;
va009039 0:7121d9fb45f4 101 }
va009039 0:7121d9fb45f4 102 }
va009039 0:7121d9fb45f4 103 return false;
va009039 0:7121d9fb45f4 104 }