Dependencies:   FATFileSystem

Committer:
nhiro3303
Date:
Tue Aug 22 06:18:15 2017 +0000
Revision:
0:42b8e1bc6235
ps3 test library

Who changed what in which revision?

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