int combine ( Arc con , Arc a ) throws RegexException { //# define CA(ct,at) (((ct)<<CHAR_BIT) | (at)) //CA(con->type, a->type)) { switch ( ( con . type << 8 ) | a . type ) { case ' ' << 8 | Compiler . PLAIN : /* newlines are handled separately */ case ' ' << 8 | Compiler . PLAIN : return INCOMPATIBLE ; case Compiler . AHEAD << 8 | Compiler . PLAIN : /* color constraints meet colors */ case Compiler . BEHIND << 8 | Compiler . PLAIN : if ( con . co == a . co ) { return SATISFIED ; } return INCOMPATIBLE ; case ' ' << 8 | ' ' : /* collision, similar constraints */ case ' ' << 8 | ' ' : case Compiler . AHEAD << 8 | Compiler . AHEAD : case Compiler . BEHIND << 8 | Compiler . BEHIND : if ( con . co == a . co ) { /* true duplication */ return SATISFIED ; } return INCOMPATIBLE ; case ' ' << 8 | Compiler . BEHIND : /* collision, dissimilar constraints */ case Compiler . BEHIND << 8 | ' ' : case ' ' << 8 | Compiler . AHEAD : case Compiler . AHEAD << 8 | ' ' : return INCOMPATIBLE ; case ' ' << 8 | Compiler . AHEAD : case Compiler . BEHIND << 8 | ' ' : case Compiler . BEHIND << 8 | Compiler . AHEAD : case ' ' << 8 | ' ' : case ' ' << 8 | Compiler . BEHIND : case Compiler . AHEAD << 8 | ' ' : case Compiler . AHEAD << 8 | Compiler . BEHIND : case ' ' << 8 | Compiler . LACON : case Compiler . BEHIND << 8 | Compiler . LACON : case ' ' << 8 | Compiler . LACON : case Compiler . AHEAD << 8 | Compiler . LACON : return COMPATIBLE ; default : throw new RuntimeException ( "Impossible arc" ) ; } }
combine - constraint lands on an arc what happens?