Norimasa Okamoto / Mbed 2 deprecated emuISP

Dependencies:   mbed

Committer:
va009039
Date:
Fri Mar 25 06:08:40 2016 +0900
Revision:
5:e2c275b33bbf
mystring class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 5:e2c275b33bbf 1 // mystring.h 2016/3/24
va009039 5:e2c275b33bbf 2 #pragma once
va009039 5:e2c275b33bbf 3 class mystring {
va009039 5:e2c275b33bbf 4 public:
va009039 5:e2c275b33bbf 5 mystring() {
va009039 5:e2c275b33bbf 6 m_cap = 4;
va009039 5:e2c275b33bbf 7 m_buf = new char[m_cap];
va009039 5:e2c275b33bbf 8 m_size = 0;
va009039 5:e2c275b33bbf 9 m_buf[m_size] = '\0';
va009039 5:e2c275b33bbf 10 }
va009039 5:e2c275b33bbf 11 ~mystring() {
va009039 5:e2c275b33bbf 12 delete[] m_buf;
va009039 5:e2c275b33bbf 13 }
va009039 5:e2c275b33bbf 14 const char *c_str() const {return m_buf; }
va009039 5:e2c275b33bbf 15 void clear() {
va009039 5:e2c275b33bbf 16 delete[] m_buf;
va009039 5:e2c275b33bbf 17 m_cap = 4;
va009039 5:e2c275b33bbf 18 m_buf = new char[m_cap];
va009039 5:e2c275b33bbf 19 m_size = 0;
va009039 5:e2c275b33bbf 20 m_buf[m_size] = '\0';
va009039 5:e2c275b33bbf 21 }
va009039 5:e2c275b33bbf 22 void operator +=(char c) { push_back(c); }
va009039 5:e2c275b33bbf 23 bool operator ==(const char* s) const { return strcmp(m_buf, s) == 0; }
va009039 5:e2c275b33bbf 24 void push_back(char c) {
va009039 5:e2c275b33bbf 25 if (m_size+1 < m_cap) {
va009039 5:e2c275b33bbf 26 m_cap += 4;
va009039 5:e2c275b33bbf 27 char* new_buf = new char[m_cap];
va009039 5:e2c275b33bbf 28 for(int i = 0; i < m_size; i++) {
va009039 5:e2c275b33bbf 29 new_buf[i] = m_buf[i];
va009039 5:e2c275b33bbf 30 }
va009039 5:e2c275b33bbf 31 delete[] m_buf;
va009039 5:e2c275b33bbf 32 m_buf = new_buf;
va009039 5:e2c275b33bbf 33 }
va009039 5:e2c275b33bbf 34 m_buf[m_size++] = c;
va009039 5:e2c275b33bbf 35 m_buf[m_size] = '\0';
va009039 5:e2c275b33bbf 36 }
va009039 5:e2c275b33bbf 37 char& operator[](size_t pos) const { return at(pos); }
va009039 5:e2c275b33bbf 38 char& at(size_t pos) const { return m_buf[pos]; }
va009039 5:e2c275b33bbf 39 size_t size() const { return m_size; }
va009039 5:e2c275b33bbf 40
va009039 5:e2c275b33bbf 41 private:
va009039 5:e2c275b33bbf 42 size_t m_size;
va009039 5:e2c275b33bbf 43 size_t m_cap;
va009039 5:e2c275b33bbf 44 char *m_buf;
va009039 5:e2c275b33bbf 45 };
va009039 5:e2c275b33bbf 46