HEBOCON machine

Dependencies:   mbed Motorfader Servo WT2003M03

Committer:
abanum
Date:
Mon Jul 29 05:51:31 2019 +0000
Revision:
1:312b63cf250e
Parent:
0:a30ec7d94c3a
first pubrish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abanum 0:a30ec7d94c3a 1 #pragma once
abanum 0:a30ec7d94c3a 2
abanum 0:a30ec7d94c3a 3 template<class K,class T>
abanum 0:a30ec7d94c3a 4 class mymap {
abanum 0:a30ec7d94c3a 5 struct mypair {
abanum 0:a30ec7d94c3a 6 K first;
abanum 0:a30ec7d94c3a 7 T second;
abanum 0:a30ec7d94c3a 8 };
abanum 0:a30ec7d94c3a 9 public:
abanum 0:a30ec7d94c3a 10 mymap() {
abanum 0:a30ec7d94c3a 11 m_size = 0;
abanum 0:a30ec7d94c3a 12 }
abanum 0:a30ec7d94c3a 13 T& operator[](const K& key) {
abanum 0:a30ec7d94c3a 14 int it;
abanum 0:a30ec7d94c3a 15 if (count(key) == 0) {
abanum 0:a30ec7d94c3a 16 it = insert(key, 0);
abanum 0:a30ec7d94c3a 17 } else {
abanum 0:a30ec7d94c3a 18 it = find(key);
abanum 0:a30ec7d94c3a 19 }
abanum 0:a30ec7d94c3a 20 return m_buf[it].second;
abanum 0:a30ec7d94c3a 21 }
abanum 0:a30ec7d94c3a 22 bool empty() { return m_size == 0 ? true : false; }
abanum 0:a30ec7d94c3a 23 int size() { return m_size; }
abanum 0:a30ec7d94c3a 24 void clear() { m_size = 0; }
abanum 0:a30ec7d94c3a 25 int count(K key) {
abanum 0:a30ec7d94c3a 26 for(int i = 0; i < m_size; i++) {
abanum 0:a30ec7d94c3a 27 if (m_buf[i].first == key) {
abanum 0:a30ec7d94c3a 28 return 1;
abanum 0:a30ec7d94c3a 29 }
abanum 0:a30ec7d94c3a 30 }
abanum 0:a30ec7d94c3a 31 return 0;
abanum 0:a30ec7d94c3a 32 }
abanum 0:a30ec7d94c3a 33
abanum 0:a30ec7d94c3a 34 private:
abanum 0:a30ec7d94c3a 35 int find(K key) {
abanum 0:a30ec7d94c3a 36 for(int i = 0; i < m_size; i++) {
abanum 0:a30ec7d94c3a 37 if (m_buf[i].first == key) {
abanum 0:a30ec7d94c3a 38 return i;
abanum 0:a30ec7d94c3a 39 }
abanum 0:a30ec7d94c3a 40 }
abanum 0:a30ec7d94c3a 41 return -1;
abanum 0:a30ec7d94c3a 42 }
abanum 0:a30ec7d94c3a 43 int insert(K key, T value) {
abanum 0:a30ec7d94c3a 44 int it = find(key);
abanum 0:a30ec7d94c3a 45 if (it != -1) {
abanum 0:a30ec7d94c3a 46 m_buf[it].second = value;
abanum 0:a30ec7d94c3a 47 return it;
abanum 0:a30ec7d94c3a 48 }
abanum 0:a30ec7d94c3a 49 mypair* new_buf = new mypair[m_size+1];
abanum 0:a30ec7d94c3a 50 if (m_size > 0) {
abanum 0:a30ec7d94c3a 51 for(int i = 0; i < m_size; i++) {
abanum 0:a30ec7d94c3a 52 new_buf[i] = m_buf[i];
abanum 0:a30ec7d94c3a 53 }
abanum 0:a30ec7d94c3a 54 delete[] m_buf;
abanum 0:a30ec7d94c3a 55 }
abanum 0:a30ec7d94c3a 56 m_buf = new_buf;
abanum 0:a30ec7d94c3a 57 it = m_size++;
abanum 0:a30ec7d94c3a 58 m_buf[it].first = key;
abanum 0:a30ec7d94c3a 59 m_buf[it].second = value;
abanum 0:a30ec7d94c3a 60 return it;
abanum 0:a30ec7d94c3a 61 }
abanum 0:a30ec7d94c3a 62
abanum 0:a30ec7d94c3a 63 int m_size;
abanum 0:a30ec7d94c3a 64 mypair *m_buf;
abanum 0:a30ec7d94c3a 65 };
abanum 0:a30ec7d94c3a 66