Beispiel #1
0
void PrintDiagnostics(CXTranslationUnit TU) {
  int i, n = clang_getNumDiagnostics(TU);
  for (i = 0; i != n; ++i) {
    CXDiagnostic Diag = clang_getDiagnostic(TU, i);
    PrintDiagnostic(Diag);
    clang_disposeDiagnostic(Diag);
  }
}
Beispiel #2
0
void
Diagnostic(DiagLevels level,
           const char *message,
           ...) {
    va_list arguments;
    va_start(arguments, message);
    PrintDiagnostic(level, message, arguments);
    va_end(arguments);
}
void EnableGlobalSwitch::Consume(const std::vector<std::string>& arguments)
{
	if (arguments.empty()==false)
	{
		fprintf(stderr, "Error. Expected 0 arguments.\n");
		PrintDiagnostic(arguments);
		exit(-1);
	}

	*m_pOption = true;
}
void SetGlobalOption::Consume(const std::vector<std::string>& arguments)
{
	if (arguments.size()!=1)
	{
		fprintf(stderr, "Error. Expected exactly 1 argument.\n");
		PrintDiagnostic(arguments);
		exit(-1);
	}

	*m_pOption = arguments.front();
}
void SetGlobalInt::Consume(const std::vector<std::string>& arguments)
{
	if (arguments.size()!=1)
	{
		fprintf(stderr, "Error. Expected exactly 1 argument.\n");
		PrintDiagnostic(arguments);
		exit(-1);
	}

	*m_pOption = ParseCLInt(arguments.front().c_str(), m_Lower, m_Upper, m_ShortStr.c_str());
}
Beispiel #6
0
void
PositionedDiagnostic(DiagLevels level,
                     const char *fileName,
                     int line,
                     const char *message,
                     ...) {

    va_list arguments;
    char extendedMessage[512];
    char lineImage[10];

    sprintf(lineImage, ":%d ", line);
    va_start(arguments, message);
    if((strlen(fileName) + strlen(lineImage) + strlen(message)) <
            sizeof(extendedMessage)) {
        sprintf(extendedMessage, "%s%s%s", fileName, lineImage, message);
        PrintDiagnostic(level, extendedMessage, arguments);
    }
    else {
        PrintDiagnostic(level, message, arguments);
    }
    va_end(arguments);

}
Beispiel #7
0
int perform_code_completion(int argc, const char **argv) {
  const char *input = argv[1];
  char *filename = 0;
  unsigned line;
  unsigned column;
  CXIndex CIdx;
  int errorCode;
  struct CXUnsavedFile *unsaved_files = 0;
  int num_unsaved_files = 0;
  CXCodeCompleteResults *results = 0;

  input += strlen("-code-completion-at=");
  if ((errorCode = parse_file_line_column(input, &filename, &line, &column,
                                          0, 0)))
    return errorCode;

  if (parse_remapped_files(argc, argv, 2, &unsaved_files, &num_unsaved_files))
    return -1;

  CIdx = clang_createIndex(0, 1);
  results = clang_codeComplete(CIdx,
                               argv[argc - 1], argc - num_unsaved_files - 3,
                               argv + num_unsaved_files + 2,
                               num_unsaved_files, unsaved_files,
                               filename, line, column);

  if (results) {
    unsigned i, n = results->NumResults;
    for (i = 0; i != n; ++i)
      print_completion_result(results->Results + i, stdout);
    n = clang_codeCompleteGetNumDiagnostics(results);
    for (i = 0; i != n; ++i) {
      CXDiagnostic diag = clang_codeCompleteGetDiagnostic(results, i);
      PrintDiagnostic(diag);
      clang_disposeDiagnostic(diag);
    }
    clang_disposeCodeCompleteResults(results);
  }

  clang_disposeIndex(CIdx);
  free(filename);

  free_remapped_files(unsaved_files, num_unsaved_files);

  return 0;
}