/*******************************************************************************
* Copyright (c) 2013 Google, Inc and others.
* 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
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
* Container for include export patterns, for example "IWYU pragma: export",
* "IWYU pragma: begin_exports" and "IWYU pragma: end_exports".
* @see "https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUPragmas.md"
*
* @since 5.5
*/
public class IncludeExportPatterns {
private final Pattern includeExportPattern;
private final Pattern includeBeginExportsPattern;
private final Pattern includeEndExportsPattern;
public IncludeExportPatterns(String exportPattern, String beginExportsPattern,
String endExportsPattern) {
this.includeExportPattern = compilePattern(exportPattern);
this.includeBeginExportsPattern = compilePattern(beginExportsPattern);
this.includeEndExportsPattern = compilePattern(endExportsPattern);
}
private Pattern compilePattern(String pattern) {
try {
return pattern == null ? null : Pattern.compile(pattern);
} catch (PatternSyntaxException e) {
return null;
}
}
/**
* Returns the include export pattern, e.g. "IWYU pragma: export".
*/
public Pattern getIncludeExportPattern() {
return includeExportPattern;
}
/**
* Returns the include export pattern, e.g. "IWYU pragma: begin_exports".
*/
public Pattern getIncludeBeginExportsPattern() {
return includeBeginExportsPattern;
}
/**
* Returns the include export pattern, e.g. "IWYU pragma: end_exports".
*/
public Pattern getIncludeEndExportsPattern() {
return includeEndExportsPattern;
}
}