File: stdstreams_unix.cpp

package info (click to toggle)
falconpl 0.9.6.9-git20120606-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 46,176 kB
  • sloc: cpp: 181,389; ansic: 109,025; yacc: 2,310; xml: 1,218; sh: 403; objc: 245; makefile: 82; sql: 20
file content (111 lines) | stat: -rw-r--r-- 2,287 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
   FALCON - The Falcon Programming Language
   FILE: stdstreams_unix.cpp

   Unix specific standard streams factories.
   -------------------------------------------------------------------
   Author: Giancarlo Niccolai
   Begin: ven ago 25 2006

   -------------------------------------------------------------------
   (C) Copyright 2004: the FALCON developers (see list in AUTHORS file)

   See LICENSE file for licensing details.
*/

/** \file
   Unix specific standard streams factories.
*/

#include <falcon/fstream.h>
#include <falcon/transcoding.h>
#include <falcon/stdstreams.h>
#include <falcon/streambuffer.h>

namespace Falcon {

Stream *stdInputStream()
{
   Stream *stdin = new StreamBuffer( new StdInStream );
   String enc;

   Falcon::Transcoder *coder;

   if ( Falcon::GetSystemEncoding( enc ) )
   {
      coder =  Falcon::TranscoderFactory( enc );
      if ( coder == 0 ) {
         return stdin;
      }
   }
   else
      return stdin;

   coder->setUnderlying( stdin, true );
   return coder;
}

Stream *stdOutputStream()
{
   Stream *stdout = new StreamBuffer( new StdOutStream );
   //Stream *stdout = new StdOutStream;
   String enc;

   Falcon::Transcoder *coder;

   if ( Falcon::GetSystemEncoding( enc ) )
   {
      coder =  Falcon::TranscoderFactory( enc );
      if ( coder == 0 ) {
         return stdout;
      }
   }
   else
      return stdout;

   coder->setUnderlying( stdout, true );
   return coder;
}

Stream *stdErrorStream()
{
   Stream *stderr = new StreamBuffer( new StdErrStream );
   String enc;

   Falcon::Transcoder *coder;

   if ( Falcon::GetSystemEncoding( enc ) )
   {
      coder =  Falcon::TranscoderFactory( enc );
      if ( coder == 0 ) {
         return stderr;
      }
   }
   else
      return stderr;

   coder->setUnderlying( stderr, true );
   return coder;
}

Stream *DefaultTextTranscoder( Stream *underlying, bool own )
{
   String encoding;
   if ( ! GetSystemEncoding( encoding ) )
      return underlying;

   Transcoder *encap = TranscoderFactory( encoding, underlying, own );
   // in unix there's no difference between text and binary, so there's no other transcoder to add.
   return encap;
}


Stream *AddSystemEOL( Stream *underlying, bool )
{
   return underlying;
}

}


/* end of stdstreams_unix.cpp */