Changeset 0a2e1c0


Ignore:
Timestamp:
Apr 25, 2020, 6:08:26 PM (17 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast, new-ast-unique-expr
Children:
dab31d0
Parents:
37e5640
Message:

more work on manipulators for int128 numbers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/iostream.cfa

    r37e5640 r0a2e1c0  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Apr 25 09:54:49 2020
    13 // Update Count     : 962
     12// Last Modified On : Sat Apr 25 17:24:26 2020
     13// Update Count     : 974
    1414//
    1515
     
    594594                                } else if ( f.base == 'o' ) { \
    595595                                        if ( fmt.flags.pc && fmt.pc > 22 ) fmt.pc -= 22; else { fmt.flags.pc = false; fmt.pc = 0; } \
     596                                        fmt.val = (unsigned long long int)fmt.val >> 2; \
     597                                        fmt2.val = ((msig & 0x3) << 1) + ((lsig & 0x8000000000000000U) != 0); \
    596598                                        if ( fmt.flags.left ) { \
    597599                                                fmt.flags.left = false; \
    598                                                 fmt.wd = 1; \
    599                                                 fmt.val = (unsigned long long int)fmt.val >> 2; \
    600                                                 fmt2.wd = 1; \
    601                                                 fmt2.val = ((msig & 0x3) << 1) + ((lsig & 0x8000000000000000U) != 0); \
     600                                                fmt.wd = 0; \
    602601                                                if ( fmt2.val > 1 && fmt.flags.pc && fmt.pc > 0 ) fmt.pc -= 1; \
    603602                                                /* printf( "L %llo %llo %llo %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt2.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); */ \
     
    607606                                                int msigd = ceiling( high1( fmt.val ), 3 ) + 1; \
    608607                                                fmt2.wd = f.wd - (fmt.pc > msigd ? fmt.pc : msigd) - 1; \
    609                                                 /* printf( "\nL2 %llo %d %d '%c' %x\n", fmt2.val, fmt2.wd, fmt2.pc, fmt2.base, fmt2.all ); */   \
    610608                                                if ( fmt2.wd < 0 ) fmt2.wd = 21; \
    611                                                 fmt2.flags.pc = true; fmt2.pc = 21; \
    612                                                 if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
    613                                                 fmt2.val = lsig & 0x7fffffffffffffffU; \
    614                                                 (ostype &)(os | fmt2); \
     609                                                if ( ! fmt.flags.nobsdp && fmt.pc < fmt.wd ) fmt.wd -= 1; \
    615610                                        } else { \
    616                                                 fmt.val = (unsigned long long int)fmt.val >> 2; \
    617611                                                if ( fmt.wd > 21 ) fmt.wd -= 21; \
    618                                                 if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
     612                                                if ( ! fmt.flags.nobsdp && fmt.pc < fmt.wd ) fmt.wd -= 1; \
    619613                                                fmt2.wd = 1; \
    620                                                 fmt2.val = ((msig & 0x3) << 1) + ((lsig & 0x8000000000000000U) != 0); \
     614                                                /* printf( "R %llo %llo %llo %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt2.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); */ \
    621615                                                (ostype &)(os | fmt | "" | fmt2); \
    622616                                                sepOff( os ); \
    623617                                                fmt2.wd = 21; \
    624                                                 fmt2.val = lsig & 0x7fffffffffffffffU; \
    625                                                 (ostype &)(os | fmt2); \
    626618                                        } /* if */ \
     619                                        fmt2.val = lsig & 0x7fffffffffffffffU; \
     620                                        /* printf( "\nC %llo %d %d '%c' %x\n", fmt2.val, fmt2.wd, fmt2.pc, fmt2.base, fmt2.all ); */ \
     621                                        (ostype &)(os | fmt2); \
    627622                                } else { \
    628623                                        if ( fmt.flags.pc && fmt.pc > 16 ) fmt.pc -= 16; \
Note: See TracChangeset for help on using the changeset viewer.