parameters: (self, key)
return_statement: return - 1
docstring: ! Search
          @param self this object
          @param key key
          @return index if found or -1 if not found
docstring_summary: ! Search
docstring_tokens: ! Search
function: def __search(self, key):
          """! Search
          @param self this object
          @param key key
          @return index if found or -1 if not found
          """
          l = 0
          u = len(self.ranges)-1
          while l <= u:
              i = int((l + u) / 2)
              if key >= self.ranges[i].start and key <= self.ranges[i].end:
                  return i
              elif key < self.ranges[i].start:
                  u = i - 1
              else:
                  # key > self.ranges[i].end
                  l = i + 1
          return - 1
function_tokens: def __search ( self , key ) : l = 0 u = len ( self . ranges ) - 1 while l <= u : i = int ( ( l + u ) / 2 ) if key >= self . ranges [ i ] . start and key <= self . ranges [ i ] . end : return i elif key < self . ranges [ i ] . start : u = i - 1 else : # key > self.ranges[i].end l = i + 1 return - 1