void get ( char [ ] chars , int start , int length , boolean invert , MatchSpaceKey msg , EvalCache cache , Object contextValue , SearchResults result ) throws MatchingException , BadMessageFormatMatchingException { if ( tc . isEntryEnabled ( ) ) tc . entry ( this , cclass , "get" , new Object [ ] { chars , new Integer ( start ) , new Integer ( length ) , new Boolean ( invert ) , msg , cache , result } ) ; examineMatches : for ( PartialMatch pm = this ; pm != null && length >= pm . key . length ; pm = pm . next ) { int origin = invert ? ( start + length - pm . key . length ) : start ; for ( int i = 0 ; i < pm . key . length ; i ++ ) if ( pm . key [ i ] != chars [ origin + i ] ) continue examineMatches ; // A match on pm; either it exhausts chars (exact) or only part thereof if ( length == pm . key . length ) { // An exact match fires both exactChild and matchManyChild if ( pm . exactChild != null ) pm . exactChild . get ( null , msg , cache , contextValue , result ) ; // Process just the default MatchManyChild if ( pm . singleMatchManyChild != null ) pm . singleMatchManyChild . get ( null , msg , cache , contextValue , result ) ; } else if ( ! invert ) pm . doPartialGet ( chars , start + pm . key . length , length - pm . key . length , false , msg , cache , contextValue , result ) ; else pm . doPartialGet ( chars , start , length - pm . key . length , true , msg , cache , contextValue , result ) ; } if ( tc . isEntryEnabled ( ) ) tc . exit ( this , cclass , "get" ) ; }
Perform get operation on this PartialMatch and its descendents