//===--- DictionaryKeys.h - --------------------------------------*- C++ -*-==//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_SOURCEKITD_LIB_API_DICTIONARYKEYS_H
#define LLVM_SOURCEKITD_LIB_API_DICTIONARYKEYS_H

namespace SourceKit {
  class UIdent;
}

namespace sourcekitd {

extern SourceKit::UIdent KeyResults;
extern SourceKit::UIdent KeyRequest;
extern SourceKit::UIdent KeyCompilerArgs;
extern SourceKit::UIdent KeyOffset;
extern SourceKit::UIdent KeySourceFile;
extern SourceKit::UIdent KeySourceText;
extern SourceKit::UIdent KeyModuleName;
extern SourceKit::UIdent KeyNotification;
extern SourceKit::UIdent KeyKeyword;
extern SourceKit::UIdent KeyName;
extern SourceKit::UIdent KeyEnableSyntaxMap;
extern SourceKit::UIdent KeyEnableDiagnostics;
extern SourceKit::UIdent KeySyntacticOnly;
extern SourceKit::UIdent KeyLength;
extern SourceKit::UIdent KeyKind;
extern SourceKit::UIdent KeyAccessibility;
extern SourceKit::UIdent KeySetterAccessibility;
extern SourceKit::UIdent KeyUSR;
extern SourceKit::UIdent KeyLine;
extern SourceKit::UIdent KeyColumn;
extern SourceKit::UIdent KeyReceiverUSR;
extern SourceKit::UIdent KeyIsDynamic;
extern SourceKit::UIdent KeyIsTestCandidate;
extern SourceKit::UIdent KeyDescription;
extern SourceKit::UIdent KeyTypeName;
extern SourceKit::UIdent KeyRuntimeName;
extern SourceKit::UIdent KeySelectorName;
extern SourceKit::UIdent KeyOverrides;
extern SourceKit::UIdent KeyDocBrief;
extern SourceKit::UIdent KeyAssociatedUSRs;
extern SourceKit::UIdent KeyDocFullAsXML;
extern SourceKit::UIdent KeyGenericParams;
extern SourceKit::UIdent KeyGenericRequirements;
extern SourceKit::UIdent KeyAnnotatedDecl;
extern SourceKit::UIdent KeyRelatedDecls;
extern SourceKit::UIdent KeyContext;
extern SourceKit::UIdent KeyModuleImportDepth;
extern SourceKit::UIdent KeyNumBytesToErase;
extern SourceKit::UIdent KeyNotRecommended;
extern SourceKit::UIdent KeyFilePath;
extern SourceKit::UIdent KeyModuleInterfaceName;
extern SourceKit::UIdent KeyHash;
extern SourceKit::UIdent KeyRelated;
extern SourceKit::UIdent KeyInherits;
extern SourceKit::UIdent KeyConforms;
extern SourceKit::UIdent KeyExtends;
extern SourceKit::UIdent KeyDependencies;
extern SourceKit::UIdent KeyEntities;
extern SourceKit::UIdent KeyDiagnostics;
extern SourceKit::UIdent KeySeverity;
extern SourceKit::UIdent KeyRanges;
extern SourceKit::UIdent KeyFixits;
extern SourceKit::UIdent KeyAnnotations;
extern SourceKit::UIdent KeyDiagnosticStage;
extern SourceKit::UIdent KeySyntaxMap;
extern SourceKit::UIdent KeyIsSystem;
extern SourceKit::UIdent KeyEnableStructure;
extern SourceKit::UIdent KeySubStructure;
extern SourceKit::UIdent KeyElements;
extern SourceKit::UIdent KeyNameOffset;
extern SourceKit::UIdent KeyNameLength;
extern SourceKit::UIdent KeyBodyOffset;
extern SourceKit::UIdent KeyBodyLength;
extern SourceKit::UIdent KeyThrowOffset;
extern SourceKit::UIdent KeyThrowLength;
extern SourceKit::UIdent KeyIsLocal;
extern SourceKit::UIdent KeyAttributes;
extern SourceKit::UIdent KeyAttribute;
extern SourceKit::UIdent KeyInheritedTypes;
extern SourceKit::UIdent KeyFormatOptions;
extern SourceKit::UIdent KeyCodeCompleteOptions;
extern SourceKit::UIdent KeyNextRequestStart;
extern SourceKit::UIdent KeyPopular;
extern SourceKit::UIdent KeyUnpopular;

extern SourceKit::UIdent KeyIsUnavailable;
extern SourceKit::UIdent KeyIsDeprecated;
extern SourceKit::UIdent KeyPlatform;
extern SourceKit::UIdent KeyMessage;
extern SourceKit::UIdent KeyIntroduced;
extern SourceKit::UIdent KeyDeprecated;
extern SourceKit::UIdent KeyObsoleted;
extern SourceKit::UIdent KeyRemoveCache;
extern SourceKit::UIdent KeyTypeInterface;

/// \brief Used for determining the printing order of dictionary keys.
bool compareDictKeys(SourceKit::UIdent LHS, SourceKit::UIdent RHS);

}

#endif
