blob: cf779975c6dc46eeb02af92b636063cd1b0794bf [file] [log] [blame]
/*
* Copyright (c) 2011 Google Inc.
*
* All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
* Public License v1.0 which accompanies this distribution, and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package com.google.eclipse.protobuf.model.util;
import static java.util.Collections.unmodifiableList;
import static com.google.common.collect.Lists.newArrayList;
import java.util.List;
import com.google.eclipse.protobuf.parser.UnknownSyntaxProtobuf;
import com.google.eclipse.protobuf.protobuf.Import;
import com.google.eclipse.protobuf.protobuf.Protobuf;
import com.google.eclipse.protobuf.protobuf.ProtobufElement;
import com.google.eclipse.protobuf.protobuf.PublicImport;
import com.google.inject.Singleton;
/**
* Utility methods related to <code>{@link Protobuf}</code>s.
*
* @author alruiz@google.com (Alex Ruiz)
*/
@Singleton public class Protobufs {
/**
* Indicates whether the given root is not {@code null} and has a known syntax.
*
* @param protobuf the given root.
* @return {@code true} if the given root is not {@code null} and has a syntax element,
* {@code false} otherwise.
*/
public boolean hasKnownSyntax(Protobuf protobuf) {
return protobuf != null && !(protobuf instanceof UnknownSyntaxProtobuf);
}
/**
* Returns all the import definitions in the given root.
* @param root the given root.
* @return all the import definitions in the given root.
*/
public List<Import> importsIn(Protobuf root) {
List<Import> imports = newArrayList();
for (ProtobufElement e : root.getElements()) {
if (e instanceof Import) {
imports.add((Import) e);
}
}
return unmodifiableList(imports);
}
/**
* Returns all the public import definitions in the given root.
* @param root the given root.
* @return all the public import definitions in the given root.
*/
public List<Import> publicImportsIn(Protobuf root) {
List<Import> imports = newArrayList();
for (ProtobufElement e : root.getElements()) {
if (e instanceof PublicImport) {
imports.add((Import) e);
}
}
return unmodifiableList(imports);
}
}