blob: 8722e0bbae5743a716e52fb0579061dea924b215 [file] [log] [blame]
//===--- IndexDataConsumer.h - Consumer of indexing information -*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_INDEX_INDEXDATACONSUMER_H
#define SWIFT_INDEX_INDEXDATACONSUMER_H
#include "swift/Index/IndexSymbol.h"
namespace swift {
namespace index {
class IndexDataConsumer {
virtual void anchor();
public:
enum Action {Skip, Abort, Continue};
virtual ~IndexDataConsumer() {}
virtual bool enableWarnings() { return false; }
virtual bool indexLocals() { return false; }
virtual void failed(StringRef error) = 0;
virtual void warning(StringRef warning) {}
virtual bool recordHash(StringRef hash, bool isKnown) = 0;
virtual bool startDependency(StringRef name, StringRef path, bool isClangModule,
bool isSystem, StringRef hash) = 0;
virtual bool finishDependency(bool isClangModule) = 0;
virtual Action startSourceEntity(const IndexSymbol &symbol) = 0;
virtual bool finishSourceEntity(SymbolInfo symInfo, SymbolRoleSet roles) = 0;
virtual void finish() {}
};
} // end namespace index
} // end namespace swift
#endif // SWIFT_INDEX_INDEXDATACONSUMER_H