Panda3D

Loading...
Searching...
No Matches
physxFileStream.cxx
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file physxFileStream.cxx
10 * @author enn0x
11 * @date 2009-10-11
12 */
13
14#include "physxFileStream.h"
15
16#include <stdio.h>
17
18#include "virtualFileSystem.h"
19
20/**
21 *
22 */
23PhysxFileStream::PhysxFileStream(const Filename &fn, bool load) : _fp(nullptr), _vf(nullptr), _in(nullptr)
24{
25 if (load) {
26 _vf = VirtualFileSystem::get_global_ptr()->get_file(fn);
27 _in = _vf->open_read_file(true);
28 }
29 else {
30 _fp = fopen(fn.c_str(), "wb");
31 }
32}
33
34/**
35 *
36 */
37PhysxFileStream::~PhysxFileStream()
38{
39 if (_fp) fclose(_fp);
40 if (_vf) _vf->close_read_file(_in);
41}
42
43/**
44 *
45 */
46NxU8 PhysxFileStream::readByte() const
47{
48 NxU8 b;
49 _in->read((char *)&b, sizeof(NxU8));
50 NX_ASSERT(!(_in->bad()));
51 return b;
52}
53
54/**
55 *
56 */
57NxU16 PhysxFileStream::readWord() const
58{
59 NxU16 w;
60 _in->read((char *)&w, sizeof(NxU16));
61 NX_ASSERT(!(_in->bad()));
62 return w;
63}
64
65/**
66 *
67 */
68NxU32 PhysxFileStream::readDword() const
69{
70 NxU32 d;
71 _in->read((char *)&d, sizeof(NxU32));
72 NX_ASSERT(!(_in->bad()));
73 return d;
74}
75
76/**
77 *
78 */
79 float PhysxFileStream::readFloat() const
80{
81 NxReal f;
82 _in->read((char *)&f, sizeof(NxReal));
83 NX_ASSERT(!(_in->bad()));
84 return f;
85}
86
87/**
88 *
89 */
90 double PhysxFileStream::readDouble() const
91{
92 NxF64 f;
93 _in->read((char *)&f, sizeof(NxF64));
94 NX_ASSERT(!(_in->bad()));
95 return f;
96}
97
98/**
99 *
100 */
101 void PhysxFileStream::readBuffer(void *buffer, NxU32 size) const
102{
103 _in->read((char *)buffer, size);
104 NX_ASSERT(!(_in->bad()));
105}
106
107/**
108 *
109 */
110NxStream &PhysxFileStream::storeByte(NxU8 b)
111{
112 size_t w = fwrite(&b, sizeof(NxU8), 1, _fp);
113 NX_ASSERT(w);
114 return *this;
115}
116
117/**
118 *
119 */
120NxStream &PhysxFileStream::storeWord(NxU16 w)
121{
122 size_t ww = fwrite(&w, sizeof(NxU16), 1, _fp);
123 NX_ASSERT(ww);
124 return *this;
125}
126
127/**
128 *
129 */
130NxStream &PhysxFileStream::storeDword(NxU32 d)
131{
132 size_t w = fwrite(&d, sizeof(NxU32), 1, _fp);
133 NX_ASSERT(w);
134 return *this;
135}
136
137/**
138 *
139 */
140NxStream &PhysxFileStream::storeFloat(NxReal f)
141{
142 size_t w = fwrite(&f, sizeof(NxReal), 1, _fp);
143 NX_ASSERT(w);
144 return *this;
145}
146
147/**
148 *
149 */
150NxStream &PhysxFileStream::storeDouble(NxF64 f)
151{
152 size_t w = fwrite(&f, sizeof(NxF64), 1, _fp);
153 NX_ASSERT(w);
154 return *this;
155}
156
157/**
158 *
159 */
160NxStream &PhysxFileStream::storeBuffer(const void *buffer, NxU32 size)
161{
162 size_t w = fwrite(buffer, size, 1, _fp);
163 NX_ASSERT(w);
164 return *this;
165}
Filename
The name of a file, such as a texture file or an Egg file.
Definition filename.h:44
VirtualFileSystem::get_file
PointerTo< VirtualFile > get_file(const Filename &filename, bool status_only=false) const
Looks up the file by the indicated name in the file system.
Definition virtualFileSystem.cxx:515
VirtualFileSystem::get_global_ptr
static VirtualFileSystem * get_global_ptr()
Returns the default global VirtualFileSystem.
Definition virtualFileSystem.cxx:741
physxFileStream.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtualFileSystem.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.