changed: update version strings for beta4
[xbmc.git] / xbmc / utils / Archive.h
blob59da588bde40cb20afb9371668acb2e0b3741932
1 #pragma once
3 /*
4 * Copyright (C) 2005-2008 Team XBMC
5 * http://www.xbmc.org
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with XBMC; see the file COPYING. If not, write to
19 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20 * http://www.gnu.org/copyleft/gpl.html
24 #include "StdString.h"
25 #include "system.h" // for SYSTEMTIME
27 namespace XFILE
29 class CFile;
32 class CArchive;
34 class ISerializable
36 public:
37 virtual void Serialize(CArchive& ar) = 0;
38 virtual ~ISerializable() {}
41 class CArchive
43 public:
44 CArchive(XFILE::CFile* pFile, int mode);
45 ~CArchive();
46 // storing
47 CArchive& operator<<(float f);
48 CArchive& operator<<(double d);
49 CArchive& operator<<(int i);
50 CArchive& operator<<(unsigned int i);
51 CArchive& operator<<(int64_t i64);
52 CArchive& operator<<(bool b);
53 CArchive& operator<<(char c);
54 CArchive& operator<<(const CStdString& str);
55 CArchive& operator<<(const CStdStringW& str);
56 CArchive& operator<<(const SYSTEMTIME& time);
57 CArchive& operator<<(ISerializable& obj);
59 // loading
60 CArchive& operator>>(float& f);
61 CArchive& operator>>(double& d);
62 CArchive& operator>>(int& i);
63 CArchive& operator>>(unsigned int& i);
64 CArchive& operator>>(int64_t& i64);
65 CArchive& operator>>(bool& b);
66 CArchive& operator>>(char& c);
67 CArchive& operator>>(CStdString& str);
68 CArchive& operator>>(CStdStringW& str);
69 CArchive& operator>>(SYSTEMTIME& time);
70 CArchive& operator>>(ISerializable& obj);
72 bool IsLoading();
73 bool IsStoring();
75 void Close();
77 enum Mode {load = 0, store};
79 protected:
80 void FlushBuffer();
81 XFILE::CFile* m_pFile;
82 int m_iMode;
83 uint8_t *m_pBuffer;
84 int m_BufferPos;