+ bool zero = false;
+ if ( status->base != -1 )
+ {
+ bool value = false;
+ int rc;
+ if ( ( rc = MATCH( '0', status ) ) >= 0 )
+ {
+ if ( ( rc = MATCH( 'x', status ) ) >= 0 )
+ {
+ if ( ( status->base == 0 ) || ( status->base == 16 ) )
+ {
+ status->base = 16;
+ }
+ else
+ {
+ UNGET( rc, status );
+ value = true;
+ }
+ }
+ else if ( rc == MATCH_FAIL )
+ {
+ if ( status->base == 0 )
+ {
+ status->base = 8;
+ }
+ else
+ {
+ value = true;
+ }
+ }
+ else
+ {
+ /* TODO: MATCH_ERROR */
+ }
+ }
+ else if ( rc == MATCH_FAIL )
+ {
+ if ( status->base == 0 )
+ {
+ status->base = 10;
+ }
+ }
+ else
+ {
+ /* TODO: MATCH_ERROR */
+ }
+ /* TODO: Integer conversion */
+ }
+ else
+ {
+ /* TODO: Float conversions? */
+ }