* move imageManager code into new imageManager.h/imageManager.cpp
[openc2e.git] / streamutils.cpp
blob244980434c90ea52852fc5247c74c3bf3d03fafa
1 /*
2 * streamutils.cpp
3 * openc2e
5 * Created by Alyssa Milburn on Sat 13 Nov 2004.
6 * Copyright (c) 2004 Alyssa Milburn. All rights reserved.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
19 #include "endianlove.h"
20 #include <fstream> // don't actually need this
22 #ifdef _MSC_VER
23 #include <winsock2.h>
24 #else
25 #include <arpa/inet.h>
26 #endif
28 uint16 read16(std::istream &s, bool littleend) {
29 uint16 t;
30 s.read((char *)&t, 2);
31 if (littleend)
32 return swapEndianShort(t);
33 else
34 return ntohs(t);
37 void write16(std::ostream &s, uint16 v, bool littleend) {
38 uint16 t;
39 if (littleend)
40 t = swapEndianShort(v);
41 else
42 t = htons(v);
43 s.write((char *)&t, 2);
46 uint32 read32(std::istream &s) {
47 uint32 t;
48 s.read((char *)&t, 4);
49 return swapEndianLong(t);
52 void write32(std::ostream &s, uint32 v) {
53 uint32 t = swapEndianLong(v);
54 s.write((char *)&t, 4);
57 /* vim: set noet: */