Changeset 9edf835 for libcfa


Ignore:
Timestamp:
Apr 24, 2020, 12:18:07 PM (4 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
13099a8b
Parents:
2a01c9b
Message:

more work on manipulators for int128 numbers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/iostream.cfa

    r2a01c9b r9edf835  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Apr 23 17:33:32 2020
    13 // Update Count     : 942
     12// Last Modified On : Fri Apr 24 11:48:53 2020
     13// Update Count     : 954
    1414//
    1515
     
    598598                                                fmt.wd = 1; \
    599599                                                fmt.val = (unsigned long long int)fmt.val >> 2; \
    600                                                 printf( "L %llo %d %d '%c' %x\n", fmt.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); \
    601600                                                fmt2.wd = 1; \
    602                                                 fmt2.val = ((msig & 0x3) << 1) + 1; \
     601                                                fmt2.val = ((msig & 0x3) << 1) + ((lsig & 0x8000000000000000U) != 0); \
     602                                                if ( fmt2.val > 1 && fmt.flags.pc && fmt.pc > 0 ) fmt.pc -= 1; \
     603                                                /* 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 ); */ \
    603604                                                (ostype &)(os | fmt | "" | fmt2); \
    604605                                                sepOff( os ); \
     
    609610                                                fmt2.flags.pc = true; fmt2.pc = 21; \
    610611                                                if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
    611                                                 fmt2.val = lsig & 0x7fffffffffffffff; \
     612                                                fmt2.val = lsig & 0x7fffffffffffffffU; \
    612613                                                (ostype &)(os | fmt2); \
    613614                                        } else { \
     
    616617                                                if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
    617618                                                fmt2.wd = 1; \
    618                                                 fmt2.val = ((msig & 0x3) << 1) + 1; \
     619                                                fmt2.val = ((msig & 0x3) << 1) + (lsig & 0x8000000000000000U != 0); \
    619620                                                (ostype &)(os | fmt | "" | fmt2); \
    620621                                                sepOff( os ); \
    621622                                                fmt2.wd = 21; \
    622                                                 fmt2.val = lsig & 0x7fffffffffffffff; \
     623                                                fmt2.val = lsig & 0x7fffffffffffffffU; \
    623624                                                (ostype &)(os | fmt2); \
    624625                                        } /* if */ \
Note: See TracChangeset for help on using the changeset viewer.