Buffer for general purpose use. Templated for most datatypes
Dependents: BufferedSoftSerial 09_PT1000 10_PT1000 11_PT1000 ... more
Example
#include "mbed.h" #include "Buffer.h" Buffer <char> buf; int main() { buf = 'a'; buf.put('b'); char *head = buf.head(); puts(head); char whats_in_there[2] = {0}; int pos = 0; while(buf.available()) { whats_in_there[pos++] = buf; } printf("%c %c\n", whats_in_there[0], whats_in_there[1]); buf.clear(); error("done\n\n\n"); }
Diff: Buffer.cpp
- Revision:
- 1:490224f41c09
- Parent:
- 0:5e4bca1bd5f7
- Child:
- 2:d13a72146516
- Child:
- 3:c2de0ddfe65b
--- a/Buffer.cpp Fri May 10 18:34:16 2013 +0000 +++ b/Buffer.cpp Thu May 23 19:26:31 2013 +0000 @@ -1,4 +1,26 @@ +/** + * @file Buffer.cpp + * @brief Software Buffer - Templated Ring Buffer for most data types + * @author sam grove + * @version 1.0 + * @see + * + * Copyright (c) 2013 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include "Buffer.h" template <class T> @@ -48,9 +70,9 @@ template <class T> void Buffer<T>::clear(void) { - memset(_buf, 0, _size); _wloc = 0; _rloc = 0; + memset(_buf, 0, _size); return; } @@ -61,6 +83,7 @@ return (_wloc == _rloc) ? 0 : 1; } +// make the linker aware of some possible types template class Buffer<uint8_t>; template class Buffer<int8_t>; template class Buffer<uint16_t>;