mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
297 lines
8 KiB
C++
297 lines
8 KiB
C++
#include "clang.h"
|
|
|
|
#ifdef DYNAMIC_LIBCLANG
|
|
|
|
#define DLLFILENAME "libclang.dll"
|
|
#define DLIMODULE LibClang
|
|
#define DLIHEADER <ide/clang/clang.dli>
|
|
#include <Core/dli.h>
|
|
|
|
bool hasLibClang = false;
|
|
String LibClangPath;
|
|
|
|
bool LoadLibClang0(const char *path)
|
|
{
|
|
hasLibClang = LibClang(path);
|
|
if(hasLibClang) {
|
|
LibClangPath = path;
|
|
Logi() << UPP_FUNCTION_NAME << "(): libclang path: \"" << path << "\"";
|
|
}
|
|
return hasLibClang;
|
|
}
|
|
|
|
bool LoadLibClang(const String& dir)
|
|
{
|
|
#ifdef PLATFORM_MACOS // it does not seem to work for some reason, block it for now
|
|
if(LoadLibClang0(dir + "/libclang.dylib"))
|
|
return true;
|
|
#endif
|
|
if(LoadLibClang0(dir + "/libclang.so"))
|
|
return true;
|
|
Vector<String> ps;
|
|
for(FindFile ff(dir + "/libclang.so*"); ff; ff.Next())
|
|
ps << ff.GetPath();
|
|
Sort(ps, StdGreater<String>());
|
|
for(String p : ps)
|
|
if(LoadLibClang0(p))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
enum CXCursorKind clang_getCursorKind(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorKind(cursor);
|
|
}
|
|
|
|
CXCursor clang_getCursorSemanticParent(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorSemanticParent(cursor);
|
|
}
|
|
|
|
CXString clang_getCursorPrettyPrinted(CXCursor cursor, CXPrintingPolicy policy)
|
|
{
|
|
return LibClang().clang_getCursorPrettyPrinted(cursor, policy);
|
|
}
|
|
|
|
const char *clang_getCString(CXString string)
|
|
{
|
|
return LibClang().clang_getCString(string);
|
|
}
|
|
|
|
void clang_disposeString(CXString string)
|
|
{
|
|
LibClang().clang_disposeString(string);
|
|
}
|
|
|
|
CXString clang_getCursorKindSpelling(enum CXCursorKind kind)
|
|
{
|
|
return LibClang().clang_getCursorKindSpelling(kind);
|
|
}
|
|
|
|
CXString clang_getCursorSpelling(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorSpelling(cursor);
|
|
}
|
|
|
|
CXType clang_getCursorType(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorType(cursor);
|
|
}
|
|
|
|
CXString clang_getTypeSpelling(CXType type)
|
|
{
|
|
return LibClang().clang_getTypeSpelling(type);
|
|
}
|
|
|
|
CXIndex clang_createIndex(int excludeDeclarationsFromPCH, int displayDiagnostics)
|
|
{
|
|
return LibClang().clang_createIndex(excludeDeclarationsFromPCH, displayDiagnostics);
|
|
}
|
|
|
|
void clang_disposeIndex(CXIndex index)
|
|
{
|
|
LibClang().clang_disposeIndex(index);
|
|
}
|
|
|
|
unsigned int clang_visitChildren(CXCursor parent, CXCursorVisitor visitor, CXClientData client_data)
|
|
{
|
|
return LibClang().clang_visitChildren(parent, visitor, client_data);
|
|
}
|
|
|
|
void clang_getExpansionLocation(CXSourceLocation location, CXFile *file, unsigned int *line, unsigned int *column, unsigned int *offset)
|
|
{
|
|
LibClang().clang_getExpansionLocation(location, file, line, column, offset);
|
|
}
|
|
|
|
CXString clang_getFileName(CXFile SFile)
|
|
{
|
|
return LibClang().clang_getFileName(SFile);
|
|
}
|
|
|
|
CXSourceLocation clang_getCursorLocation(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorLocation(cursor);
|
|
}
|
|
|
|
CXCursor clang_getCursorReferenced(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorReferenced(cursor);
|
|
}
|
|
|
|
unsigned int clang_isCursorDefinition(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_isCursorDefinition(cursor);
|
|
}
|
|
|
|
unsigned int clang_CXXMethod_isVirtual(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_CXXMethod_isVirtual(cursor);
|
|
}
|
|
|
|
unsigned int clang_CXXMethod_isStatic(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_CXXMethod_isStatic(cursor);
|
|
}
|
|
|
|
int clang_Cursor_isNull(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_Cursor_isNull(cursor);
|
|
}
|
|
|
|
CXCursor clang_getTranslationUnitCursor(CXTranslationUnit tu)
|
|
{
|
|
return LibClang().clang_getTranslationUnitCursor(tu);
|
|
}
|
|
|
|
CXPrintingPolicy clang_getCursorPrintingPolicy(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getCursorPrintingPolicy(cursor);
|
|
}
|
|
|
|
void clang_PrintingPolicy_setProperty(CXPrintingPolicy Policy, enum CXPrintingPolicyProperty Property, unsigned int Value)
|
|
{
|
|
return LibClang().clang_PrintingPolicy_setProperty(Policy, Property, Value);
|
|
}
|
|
|
|
void clang_PrintingPolicy_dispose(CXPrintingPolicy Policy)
|
|
{
|
|
LibClang().clang_PrintingPolicy_dispose(Policy);
|
|
}
|
|
|
|
unsigned int clang_getNumCompletionChunks(CXCompletionString completion_string)
|
|
{
|
|
return LibClang().clang_getNumCompletionChunks(completion_string);
|
|
}
|
|
|
|
CXType clang_getTypedefDeclUnderlyingType(CXCursor C)
|
|
{
|
|
return LibClang().clang_getTypedefDeclUnderlyingType(C);
|
|
}
|
|
|
|
CXCursor clang_getTypeDeclaration(CXType T)
|
|
{
|
|
return LibClang().clang_getTypeDeclaration(T);
|
|
}
|
|
|
|
void clang_disposeTranslationUnit(CXTranslationUnit tu)
|
|
{
|
|
LibClang().clang_disposeTranslationUnit(tu);
|
|
}
|
|
|
|
CXTranslationUnit clang_parseTranslationUnit(CXIndex CIdx, const char *source_filename, const char *const *command_line_args, int num_command_line_args, CXUnsavedFile *unsaved_files,
|
|
unsigned int num_unsaved_files, unsigned int options)
|
|
{
|
|
return LibClang().clang_parseTranslationUnit(CIdx, source_filename, command_line_args, num_command_line_args, unsaved_files,
|
|
num_unsaved_files, options);
|
|
}
|
|
|
|
int clang_reparseTranslationUnit(CXTranslationUnit TU, unsigned int num_unsaved_files, CXUnsavedFile *unsaved_files, unsigned int options)
|
|
{
|
|
return LibClang().clang_reparseTranslationUnit(TU, num_unsaved_files, unsaved_files, options);
|
|
}
|
|
|
|
unsigned int clang_getNumDiagnostics(CXTranslationUnit tu)
|
|
{
|
|
return LibClang().clang_getNumDiagnostics(tu);
|
|
}
|
|
|
|
CXDiagnostic clang_getDiagnostic(CXTranslationUnit tu, unsigned int i)
|
|
{
|
|
return LibClang().clang_getDiagnostic(tu, i);
|
|
}
|
|
|
|
CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic d)
|
|
{
|
|
return LibClang().clang_getDiagnosticLocation(d);
|
|
}
|
|
|
|
CXString clang_getDiagnosticSpelling(CXDiagnostic d)
|
|
{
|
|
return LibClang().clang_getDiagnosticSpelling(d);
|
|
}
|
|
|
|
void clang_disposeDiagnostic(CXDiagnostic d)
|
|
{
|
|
LibClang().clang_disposeDiagnostic(d);
|
|
}
|
|
|
|
enum CXCompletionChunkKind clang_getCompletionChunkKind(CXCompletionString completion_string, unsigned int chunk_number)
|
|
{
|
|
return LibClang().clang_getCompletionChunkKind(completion_string, chunk_number);
|
|
}
|
|
|
|
CXString clang_getCompletionChunkText(CXCompletionString completion_string, unsigned int chunk_number)
|
|
{
|
|
return LibClang().clang_getCompletionChunkText(completion_string, chunk_number);
|
|
}
|
|
|
|
CXCompletionString clang_getCompletionChunkCompletionString(CXCompletionString completion_string, unsigned int chunk_number)
|
|
{
|
|
return LibClang().clang_getCompletionChunkCompletionString(completion_string, chunk_number);
|
|
}
|
|
|
|
CXString clang_getCompletionParent(CXCompletionString completion_string, enum CXCursorKind *kind)
|
|
{
|
|
return LibClang().clang_getCompletionParent(completion_string, kind);
|
|
}
|
|
|
|
unsigned int clang_getCompletionPriority(CXCompletionString completion_string)
|
|
{
|
|
return LibClang().clang_getCompletionPriority(completion_string);
|
|
}
|
|
|
|
CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit tu, const char *complete_filename,
|
|
unsigned int complete_line, unsigned int complete_column,
|
|
CXUnsavedFile *unsaved_files, unsigned int num_unsaved_files,
|
|
unsigned int options)
|
|
{
|
|
return LibClang().clang_codeCompleteAt(tu, complete_filename, complete_line, complete_column,
|
|
unsaved_files, num_unsaved_files, options);
|
|
}
|
|
|
|
void clang_disposeCodeCompleteResults(CXCodeCompleteResults *Results)
|
|
{
|
|
LibClang().clang_disposeCodeCompleteResults(Results);
|
|
}
|
|
|
|
void clang_CXIndex_setGlobalOptions(CXIndex index, unsigned int options)
|
|
{
|
|
LibClang().clang_CXIndex_setGlobalOptions(index, options);
|
|
}
|
|
|
|
CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic d)
|
|
{
|
|
return LibClang().clang_getChildDiagnostics(d);
|
|
}
|
|
|
|
unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet diags)
|
|
{
|
|
return LibClang().clang_getNumDiagnosticsInSet(diags);
|
|
}
|
|
|
|
CXDiagnostic clang_getDiagnosticInSet(CXDiagnosticSet diags, unsigned index)
|
|
{
|
|
return LibClang().clang_getDiagnosticInSet(diags, index);
|
|
}
|
|
|
|
enum CXDiagnosticSeverity clang_getDiagnosticSeverity(CXDiagnostic d)
|
|
{
|
|
return LibClang().clang_getDiagnosticSeverity(d);
|
|
}
|
|
|
|
enum CX_StorageClass clang_Cursor_getStorageClass(CXCursor c)
|
|
{
|
|
return LibClang().clang_Cursor_getStorageClass(c);
|
|
}
|
|
|
|
unsigned clang_getNumOverloadedDecls(CXCursor cursor)
|
|
{
|
|
return LibClang().clang_getNumOverloadedDecls(cursor);
|
|
}
|
|
|
|
CXCursor clang_getOverloadedDecl(CXCursor cursor, unsigned index)
|
|
{
|
|
return LibClang().clang_getOverloadedDecl(cursor, index);
|
|
}
|
|
|
|
#endif
|