Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. // $Date: 2009-08-11 16:57:46 +0200 (Tue, 11 Aug 2009) $, $Revision: 2208 $, $Author: benjamin $
  2. // kate: encoding ISO-8859-15;
  3. // vim: set fileencoding=latin-9:
  4. // -*- mode: c; coding: latin-9 -*-
  5.  
  6. #include "object/o_stream.h"
  7.  
  8. // Konstruktor
  9. O_Stream::O_Stream(){
  10.     base = 10;
  11. }
  12.  
  13. int O_Stream::toChar( char* buffer, long n, int base ){
  14.     int tmp_pos = 0;
  15.     int buf_pos = 0;
  16.     char tmp[32];
  17.    
  18.     //Zahl negativ
  19.     /*if( n < 0 ){
  20.         //Minus voranstellen
  21.         if( base == 10 ){
  22.             buffer[buf_pos++] = '-';
  23.             n *= -1;
  24.         //2er Komplement   
  25.         } else {
  26.             n *= -1;
  27.             n = ~n;
  28.             n++;
  29.         }
  30.     }*/
  31.     do{
  32.         if( n%base > 9 ){
  33.             tmp[tmp_pos++] = n%base + '7';
  34.             n /= base;
  35.         } else{
  36.             tmp[tmp_pos++] =  n%base + '0' ;
  37.             n /= base;
  38.         }
  39.     } while( n > 0 );
  40.    
  41.     //Zahl umdrehen
  42.     for( int i = tmp_pos-1; i >= 0; i-- ){
  43.         buffer[buf_pos++] = tmp[i];
  44.     }
  45.     return tmp_pos;
  46. }
  47.    
  48. // Stellt ein einzelnes Zeichen dar.
  49. O_Stream & O_Stream::operator<< (char c){
  50.     this->put(c);
  51.     return *this;
  52. }
  53. O_Stream & O_Stream::operator<< (unsigned char c){
  54.     this->put(c);
  55.     return *this;
  56. }
  57. // Darstellung einer nullterminierten Zeichenkette.
  58. O_Stream & O_Stream::operator<< (char *string){
  59.     int i = 0;
  60.     while( string[i] != '\0' )
  61.         this->put(string[i++]);
  62.     return *this;
  63. }
  64. // Darstellung ganzer Zahlen im Zahlensystem zur Basis base.
  65. O_Stream & O_Stream::operator<< (short ival){
  66.     return O_Stream::operator <<( (long) ival );
  67. }
  68. O_Stream & O_Stream::operator<< (unsigned short ival){
  69.     return O_Stream::operator<< ( (long) ival);
  70. }
  71. O_Stream & O_Stream::operator<< (int ival){
  72.     return O_Stream::operator<< ( (long) ival);
  73. }
  74. O_Stream & O_Stream::operator<< (unsigned int ival){
  75.     return O_Stream::operator<< ( (long) ival);
  76. }
  77.  
  78. O_Stream & O_Stream::operator<< (long ival){
  79.     char buffer[32];
  80.     int length =  toChar(buffer, ival, base);
  81.     for( int i = 0; i < length; i++ ){
  82.         this->put( buffer[i] );
  83.     }
  84.     return *this;
  85. }
  86.  
  87. O_Stream & O_Stream::operator<< (unsigned long ival){
  88.     return O_Stream::operator<< ( (long) ival);
  89. }
  90.  
  91.  
  92. // Darstellung eines Zeigers als hexadezimale ganze Zahl.
  93. O_Stream &  O_Stream::operator<< (void *ptr){
  94.     char buffer[32];
  95.     int length =  toChar(buffer, (long)ptr, 16);
  96.     for( int i = 0; i < length; i++ ){
  97.         this->put( buffer[i] );
  98.     }
  99.     return *this;
  100. }
  101. // Aufruf einer Manipulatorfunktion.
  102. O_Stream &  O_Stream::operator<< (O_Stream &(*f)(O_Stream &)){
  103.     return f(*this);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement