+template<typename T>
+const T &BufferedComponent<T>::read() const
+{
+#ifdef DEBUG
+ AccessGuard::get_instance().check<AccessGuard::Read<T>>();
+#endif
+ return data[read_index];
+}
+
+template<typename T>
+T &BufferedComponent<T>::write()
+{
+#ifdef DEBUG
+ AccessGuard::get_instance().check<AccessGuard::Write<T>>();
+#endif
+ if(!written && write_index!=read_index)
+ {
+ data[write_index] = data[read_index];
+ written = true;
+ }
+ return data[write_index];
+}
+