13d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver/*
23d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * Copyright 2013, Google Inc.
33d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * All rights reserved.
43d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *
53d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * Redistribution and use in source and binary forms, with or without
63d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * modification, are permitted provided that the following conditions are
73d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * met:
83d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *
93d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *     * Redistributions of source code must retain the above copyright
103d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * notice, this list of conditions and the following disclaimer.
113d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *     * Redistributions in binary form must reproduce the above
123d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * copyright notice, this list of conditions and the following disclaimer
133d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * in the documentation and/or other materials provided with the
143d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * distribution.
153d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *     * Neither the name of Google Inc. nor the names of its
163d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * contributors may be used to endorse or promote products derived from
173d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * this software without specific prior written permission.
183d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver *
193d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
203d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
213d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
223d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
233d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
243d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
253d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
263d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
273d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
283d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
293d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
303d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver */
313d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
323d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverpackage org.jf.util;
333d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
343d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverimport com.google.common.base.Function;
353d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverimport com.google.common.base.Functions;
363d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverimport com.google.common.collect.Lists;
373d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
383d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverimport java.util.List;
393d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
403d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruverpublic class CharSequenceUtils {
413d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver    private static final Function<Object, String> TO_STRING = Functions.toStringFunction();
423d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
433d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver    public static int listHashCode(List<? extends CharSequence> list) {
443d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver        return Lists.transform(list, TO_STRING).hashCode();
453d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver    }
463d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver
473d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver    public static boolean listEquals(List<? extends CharSequence> list1, List<? extends CharSequence> list2) {
483d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver        return Lists.transform(list1, TO_STRING).equals(
493d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver                Lists.transform(list2, TO_STRING));
503d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver    }
513d5423ed2bfa6817f668b14795aa6ba882aef44dBen Gruver}
52