1 // Copyright 2009 Daniel Erat <dan@erat.org>
2 // All rights reserved.
3 
4 #ifndef __XSETTINGSD_DATA_WRITER_H__
5 #define __XSETTINGSD_DATA_WRITER_H__
6 
7 #include <cstdlib>  // for size_t
8 #include <stdint.h>
9 
10 #include "common.h"
11 
12 namespace xsettingsd {
13 
14 // Provides an interface for writing different types of data to a buffer.
15 class DataWriter {
16  public:
17   DataWriter(char* buffer, size_t buf_len);
18 
bytes_written()19   size_t bytes_written() const { return bytes_written_; }
20 
21   bool WriteBytes(const char* data, size_t bytes_to_write);
22   bool WriteInt8(int8_t num);
23   bool WriteInt16(int16_t num);
24   bool WriteInt32(int32_t num);
25   bool WriteZeros(size_t bytes_to_write);
26 
27  private:
28   char* buffer_;  // not owned
29 
30   size_t buf_len_;
31 
32   size_t bytes_written_;
33 
34   DISALLOW_COPY_AND_ASSIGN(DataWriter);
35 };
36 
37 }  // namespace xsettingsd
38 
39 #endif
40