def pylong_join(count, digits_ptr='digits', join_type='unsigned long'):
 return (('(' * (count * 2)) + ' | '.join((('(%s)%s[%d])%s)' % (join_type, digits_ptr, _i, (' << PyLong_SHIFT' if _i else ''))) for _i in range((count - 1), (-1), (-1)))))

def pylong_join ( count , digits_ptr = 'digits' , join_type = 'unsigned long' ) : return ( ( '(' * ( count * 2 ) ) + ' | ' . join ( ( ( '(%s)%s[%d])%s)' % ( join_type , digits_ptr , _i , ( ' << PyLong_SHIFT' if _i else '' ) ) ) for _i in range ( ( count - 1 ) , ( - 1 ) , ( - 1 ) ) ) ) )
generate an unrolled shift-then-or loop over the first count digits .