private void doParse(boolean parseToFile) {
		clearStatusText();
		String options = getParseOptions();
		String[] includePaths = includePathPanel.getPaths();
		String[] paths = pathPanel.getPaths();

		if (paths.length == 0) {
			Msg.showInfo(getClass(), rootPanel, "Source Files Not Specified",
				"Please specify source files to parse.");
			return;
		}

		paths = expandPaths(paths);
		pathPanel.setPaths(paths);

		if (parseToFile) {
			if (languageIDString == null || compilerIDString == null) {
				Msg.showWarn(getClass(), rootPanel, "Program Architecture not Specified",
					"A Program Architecture must be specified in order to parse to a file.");
				return;
			}

			File file = getSaveFile();
			if (file != null) {
				plugin.parse(paths, includePaths, options, languageIDString, compilerIDString,
					file.getAbsolutePath());
			}
			return;
		}

		plugin.parse(paths, includePaths, options);
	}
Dialog that shows files used for parsing C header files. The profile has a list of source header
files to parse, followed by parse options (compiler directives). Ghidra supplies a Windows
profile by default in core/parserprofiles. The user can do "save as" on this default profile to
create new profiles that will be written to the user's {@code <home>/userprofiles} directory. The
CParserPlugin creates this directory if it doesn't exist.
<p>
The data types resulting from the parse operation can either be added to the data type manager in
the current program, or written to an archive data file.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/ParseDialog.java