Panda3D
Loading...
Searching...
No Matches
dtool
src
dtoolutil
pfstreamBuf.h
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 pfstreamBuf.h
10
* @author cary
11
* @date 2000-12-12
12
*/
13
14
#ifndef __PFSTREAMBUF_H__
15
#define __PFSTREAMBUF_H__
16
17
#include "
dtoolbase.h
"
18
#include <string>
19
#include <stdio.h>
20
21
// By default, we'll use the Windows flavor of pipe functions if we're
22
// compiling under Windows. Turn this off to use popen(), even on Windows.
23
// (popen() doesn't seem to work on Win9x, although it does work on NT-based
24
// variants.)
25
#ifdef WIN32_VC
26
#define WIN_PIPE_CALLS 1
27
#endif
28
29
#ifdef WIN_PIPE_CALLS
30
#ifndef WIN32_LEAN_AND_MEAN
31
#define WIN32_LEAN_AND_MEAN 1
32
#endif
33
#include <windows.h>
34
35
#else
// WIN_PIPE_CALLS
36
37
#ifdef WIN32_VC
38
#define popen _popen
39
#define pclose _pclose
40
#endif
41
42
#endif
// WIN_PIPE_CALLS
43
44
class
EXPCL_DTOOL_DTOOLUTIL
PipeStreamBuf
:
public
std::streambuf {
45
public
:
46
enum
Direction { Input, Output };
47
48
PipeStreamBuf
(Direction);
49
virtual
~PipeStreamBuf
(
void
);
50
51
void
flush();
52
void
command(
const
std::string);
53
54
protected
:
55
virtual
int
overflow(
int
c);
56
virtual
int
sync(
void
);
57
virtual
int
underflow(
void
);
58
private
:
59
void
init_pipe();
60
bool
is_open()
const
;
61
bool
eof_pipe()
const
;
62
bool
open_pipe(
const
std::string &cmd);
63
void
close_pipe();
64
size_t
write_pipe(
const
char
*data,
size_t
len);
65
size_t
read_pipe(
char
*data,
size_t
len);
66
67
Direction _dir;
68
std::string _line_buffer;
69
70
#ifndef WIN_PIPE_CALLS
71
FILE *_pipe;
72
73
#else
// WIN_PIPE_CALLS
74
HANDLE _child_out;
75
#endif
// WIN_PIPE_CALLS
76
77
void
write_chars(
const
char
*,
int
,
bool
);
78
};
79
80
#endif
/* __PFSTREAMBUF_H__ */
PipeStreamBuf
Definition
pfstreamBuf.h:44
dtoolbase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Generated on Mon Jan 8 2024 17:18:36 for Panda3D by
1.10.0