Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // $Date: 2009-08-11 16:57:46 +0200 (Tue, 11 Aug 2009) $, $Revision: 2208 $, $Author: benjamin $
- // kate: encoding ISO-8859-15;
- // vim: set fileencoding=latin-9:
- // -*- mode: c; coding: latin-9 -*-
- #include "object/o_stream.h"
- // Konstruktor
- O_Stream::O_Stream(){
- base = 10;
- }
- int O_Stream::toChar( char* buffer, long n, int base ){
- int tmp_pos = 0;
- int buf_pos = 0;
- char tmp[32];
- //Zahl negativ
- /*if( n < 0 ){
- //Minus voranstellen
- if( base == 10 ){
- buffer[buf_pos++] = '-';
- n *= -1;
- //2er Komplement
- } else {
- n *= -1;
- n = ~n;
- n++;
- }
- }*/
- do{
- if( n%base > 9 ){
- tmp[tmp_pos++] = n%base + '7';
- n /= base;
- } else{
- tmp[tmp_pos++] = n%base + '0' ;
- n /= base;
- }
- } while( n > 0 );
- //Zahl umdrehen
- for( int i = tmp_pos-1; i >= 0; i-- ){
- buffer[buf_pos++] = tmp[i];
- }
- return tmp_pos;
- }
- // Stellt ein einzelnes Zeichen dar.
- O_Stream & O_Stream::operator<< (char c){
- this->put(c);
- return *this;
- }
- O_Stream & O_Stream::operator<< (unsigned char c){
- this->put(c);
- return *this;
- }
- // Darstellung einer nullterminierten Zeichenkette.
- O_Stream & O_Stream::operator<< (char *string){
- int i = 0;
- while( string[i] != '\0' )
- this->put(string[i++]);
- return *this;
- }
- // Darstellung ganzer Zahlen im Zahlensystem zur Basis base.
- O_Stream & O_Stream::operator<< (short ival){
- return O_Stream::operator <<( (long) ival );
- }
- O_Stream & O_Stream::operator<< (unsigned short ival){
- return O_Stream::operator<< ( (long) ival);
- }
- O_Stream & O_Stream::operator<< (int ival){
- return O_Stream::operator<< ( (long) ival);
- }
- O_Stream & O_Stream::operator<< (unsigned int ival){
- return O_Stream::operator<< ( (long) ival);
- }
- O_Stream & O_Stream::operator<< (long ival){
- char buffer[32];
- int length = toChar(buffer, ival, base);
- for( int i = 0; i < length; i++ ){
- this->put( buffer[i] );
- }
- return *this;
- }
- O_Stream & O_Stream::operator<< (unsigned long ival){
- return O_Stream::operator<< ( (long) ival);
- }
- // Darstellung eines Zeigers als hexadezimale ganze Zahl.
- O_Stream & O_Stream::operator<< (void *ptr){
- char buffer[32];
- int length = toChar(buffer, (long)ptr, 16);
- for( int i = 0; i < length; i++ ){
- this->put( buffer[i] );
- }
- return *this;
- }
- // Aufruf einer Manipulatorfunktion.
- O_Stream & O_Stream::operator<< (O_Stream &(*f)(O_Stream &)){
- return f(*this);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement