142627b850c8f68a594f105e04b97c512b292b698Ben Gruver/*
242627b850c8f68a594f105e04b97c512b292b698Ben Gruver * Copyright 2013, Google Inc.
342627b850c8f68a594f105e04b97c512b292b698Ben Gruver * All rights reserved.
442627b850c8f68a594f105e04b97c512b292b698Ben Gruver *
542627b850c8f68a594f105e04b97c512b292b698Ben Gruver * Redistribution and use in source and binary forms, with or without
642627b850c8f68a594f105e04b97c512b292b698Ben Gruver * modification, are permitted provided that the following conditions are
742627b850c8f68a594f105e04b97c512b292b698Ben Gruver * met:
842627b850c8f68a594f105e04b97c512b292b698Ben Gruver *
942627b850c8f68a594f105e04b97c512b292b698Ben Gruver *     * Redistributions of source code must retain the above copyright
1042627b850c8f68a594f105e04b97c512b292b698Ben Gruver * notice, this list of conditions and the following disclaimer.
1142627b850c8f68a594f105e04b97c512b292b698Ben Gruver *     * Redistributions in binary form must reproduce the above
1242627b850c8f68a594f105e04b97c512b292b698Ben Gruver * copyright notice, this list of conditions and the following disclaimer
1342627b850c8f68a594f105e04b97c512b292b698Ben Gruver * in the documentation and/or other materials provided with the
1442627b850c8f68a594f105e04b97c512b292b698Ben Gruver * distribution.
1542627b850c8f68a594f105e04b97c512b292b698Ben Gruver *     * Neither the name of Google Inc. nor the names of its
1642627b850c8f68a594f105e04b97c512b292b698Ben Gruver * contributors may be used to endorse or promote products derived from
1742627b850c8f68a594f105e04b97c512b292b698Ben Gruver * this software without specific prior written permission.
1842627b850c8f68a594f105e04b97c512b292b698Ben Gruver *
1942627b850c8f68a594f105e04b97c512b292b698Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2042627b850c8f68a594f105e04b97c512b292b698Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2142627b850c8f68a594f105e04b97c512b292b698Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2242627b850c8f68a594f105e04b97c512b292b698Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2342627b850c8f68a594f105e04b97c512b292b698Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2442627b850c8f68a594f105e04b97c512b292b698Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2542627b850c8f68a594f105e04b97c512b292b698Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2642627b850c8f68a594f105e04b97c512b292b698Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2742627b850c8f68a594f105e04b97c512b292b698Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2842627b850c8f68a594f105e04b97c512b292b698Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2942627b850c8f68a594f105e04b97c512b292b698Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3042627b850c8f68a594f105e04b97c512b292b698Ben Gruver */
3142627b850c8f68a594f105e04b97c512b292b698Ben Gruver
3242627b850c8f68a594f105e04b97c512b292b698Ben Gruverpackage org.jf.dexlib2.writer.builder;
3342627b850c8f68a594f105e04b97c512b292b698Ben Gruver
3442627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport com.google.common.collect.ImmutableSet;
3542627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport org.jf.dexlib2.writer.DexWriter;
3642627b850c8f68a594f105e04b97c512b292b698Ben Gruver
3742627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport javax.annotation.Nonnull;
3842627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport java.util.AbstractSet;
3942627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport java.util.Iterator;
4042627b850c8f68a594f105e04b97c512b292b698Ben Gruverimport java.util.Set;
4142627b850c8f68a594f105e04b97c512b292b698Ben Gruver
4242627b850c8f68a594f105e04b97c512b292b698Ben Gruverclass BuilderAnnotationSet extends AbstractSet<BuilderAnnotation> {
4342627b850c8f68a594f105e04b97c512b292b698Ben Gruver    public static final BuilderAnnotationSet EMPTY =
4442627b850c8f68a594f105e04b97c512b292b698Ben Gruver            new BuilderAnnotationSet(ImmutableSet.<BuilderAnnotation>of());
4542627b850c8f68a594f105e04b97c512b292b698Ben Gruver
4642627b850c8f68a594f105e04b97c512b292b698Ben Gruver    @Nonnull final Set<BuilderAnnotation> annotations;
4742627b850c8f68a594f105e04b97c512b292b698Ben Gruver    int offset = DexWriter.NO_OFFSET;
4842627b850c8f68a594f105e04b97c512b292b698Ben Gruver
4942627b850c8f68a594f105e04b97c512b292b698Ben Gruver    public BuilderAnnotationSet(@Nonnull Set<BuilderAnnotation> annotations) {
5042627b850c8f68a594f105e04b97c512b292b698Ben Gruver        this.annotations = annotations;
5142627b850c8f68a594f105e04b97c512b292b698Ben Gruver    }
5242627b850c8f68a594f105e04b97c512b292b698Ben Gruver
5342627b850c8f68a594f105e04b97c512b292b698Ben Gruver    @Nonnull @Override public Iterator<BuilderAnnotation> iterator() {
5442627b850c8f68a594f105e04b97c512b292b698Ben Gruver        return annotations.iterator();
5542627b850c8f68a594f105e04b97c512b292b698Ben Gruver    }
5642627b850c8f68a594f105e04b97c512b292b698Ben Gruver
5742627b850c8f68a594f105e04b97c512b292b698Ben Gruver    @Override public int size() {
5842627b850c8f68a594f105e04b97c512b292b698Ben Gruver        return annotations.size();
5942627b850c8f68a594f105e04b97c512b292b698Ben Gruver    }
6042627b850c8f68a594f105e04b97c512b292b698Ben Gruver}
61