You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							105 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							105 lines
						
					
					
						
							2.0 KiB
						
					
					
				
								// I/O through <iostream>
							 | 
						|
								
							 | 
						|
								#ifndef _CL_IO_H
							 | 
						|
								#define _CL_IO_H
							 | 
						|
								
							 | 
						|
								#include "cln/types.h"
							 | 
						|
								#include "cln/modules.h"
							 | 
						|
								
							 | 
						|
								// I/O through <iostream>
							 | 
						|
								
							 | 
						|
								#ifdef floor
							 | 
						|
								  #undef floor
							 | 
						|
								  #include <iostream>
							 | 
						|
								  #define floor cln_floor
							 | 
						|
								#else
							 | 
						|
								  #include <iostream>
							 | 
						|
								#endif
							 | 
						|
								
							 | 
						|
								namespace cln {
							 | 
						|
								
							 | 
						|
								// compatibility:
							 | 
						|
								typedef std::istream& cl_istream;
							 | 
						|
								typedef std::ostream& cl_ostream;
							 | 
						|
								extern std::ostream* cl_debugout_stream;
							 | 
						|
								#define cl_debugout  (*cl_debugout_stream)
							 | 
						|
								
							 | 
						|
								// Elementary operations on std::istream&
							 | 
						|
								
							 | 
						|
								#define cl_EOF  (-1)
							 | 
						|
								
							 | 
						|
								inline int freadchar (std::istream& stream)
							 | 
						|
								{
							 | 
						|
									char c;
							 | 
						|
									if (stream.get(c))
							 | 
						|
										return c;
							 | 
						|
									else
							 | 
						|
										// EOF or error
							 | 
						|
										return cl_EOF;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								inline int funreadchar (std::istream& stream, int c)
							 | 
						|
								{
							 | 
						|
									if (c != cl_EOF)
							 | 
						|
										stream.putback((char)c);
							 | 
						|
									return c;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// Elementary operations on std::ostream&
							 | 
						|
								
							 | 
						|
								inline void fprintchar (std::ostream& stream, char c)
							 | 
						|
								{
							 | 
						|
									stream.put(c);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								inline void fprint (std::ostream& stream, const char * string)
							 | 
						|
								{
							 | 
						|
									stream << string;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								extern void fprintdecimal (std::ostream& stream, unsigned long x);
							 | 
						|
								extern void fprintdecimal (std::ostream& stream, long x);
							 | 
						|
								
							 | 
						|
								inline void fprintdecimal (std::ostream& stream, unsigned int x)
							 | 
						|
								{
							 | 
						|
									fprintdecimal(stream,(unsigned long)x);
							 | 
						|
								}
							 | 
						|
								inline void fprintdecimal (std::ostream& stream, int x)
							 | 
						|
								{
							 | 
						|
									fprintdecimal(stream,(long)x);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								extern void fprinthexadecimal (std::ostream& stream, unsigned long x);
							 | 
						|
								extern void fprinthexadecimal (std::ostream& stream, long x);
							 | 
						|
								
							 | 
						|
								inline void fprinthexadecimal (std::ostream& stream, unsigned int x)
							 | 
						|
								{
							 | 
						|
									fprinthexadecimal(stream,(unsigned long)x);
							 | 
						|
								}
							 | 
						|
								inline void fprinthexadecimal (std::ostream& stream, int x)
							 | 
						|
								{
							 | 
						|
									fprinthexadecimal(stream,(long)x);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class cl_print_flags;
							 | 
						|
								class cl_print_number_flags;
							 | 
						|
								class cl_print_real_flags;
							 | 
						|
								class cl_print_rational_flags;
							 | 
						|
								class cl_print_float_flags;
							 | 
						|
								CL_REQUIRE(cl_prin_globals)
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								// Define the customary << and >> operators.
							 | 
						|
								
							 | 
						|
								#define CL_DEFINE_PRINT_OPERATOR(_class_)  \
							 | 
						|
								inline std::ostream& operator<< (std::ostream& stream, const _class_& x)	\
							 | 
						|
								{									\
							 | 
						|
									fprint(stream,x);						\
							 | 
						|
									return stream;							\
							 | 
						|
								}
							 | 
						|
									
							 | 
						|
								}  // namespace cln
							 | 
						|
								
							 | 
						|
								#endif /* _CL_IO_H */
							 |