コード例 #1
0
ファイル: EntityInfo.cs プロジェクト: JadeHub/LibClangCS
 internal unsafe EntityInfo(Library.EntityInfo handle, ITranslationUnitItemFactory itemFactory)
 {
     _itemFactory = itemFactory;
     _handle = handle;
     _name = new string(_handle.name);
     _usr = new string(_handle.USR);
 }
コード例 #2
0
ファイル: Cursor.cs プロジェクト: JadeHub/Jade
 private unsafe OverriddenCursorSet(Library.CXCursor* handles, uint count, ITranslationUnitItemFactory factory)
 {
     _cursors = new List<Cursor>();
     for (uint i = 0; i < count; i++)
     {
         _cursors.Add(factory.CreateCursor(handles[i]));
     }
 }
コード例 #3
0
ファイル: SourceRange.cs プロジェクト: JadeHub/LibClangCS
 internal SourceRange(Library.SourceRange handle, ITranslationUnitItemFactory itemFactory)
 {
     Debug.Assert(!handle.IsNull);
     Handle = handle;
     Start = itemFactory.CreateSourceLocation(Library.clang_getRangeStart(Handle));
     End = itemFactory.CreateSourceLocation(Library.clang_getRangeEnd(Handle));
     Debug.Assert(Start <= End);
     Debug.Assert(Start.File == End.File);
 }
コード例 #4
0
ファイル: DiagnosticSet.cs プロジェクト: JadeHub/LibClangCS
 internal DiagnosticSet(IntPtr handle, ITranslationUnitItemFactory itemFactory)
 {
     Handle = handle;
     _diags = new HashSet<Diagnostic>();
     for (uint i = 0; i < Library.clang_getNumDiagnosticsInSet(Handle); i++)
     {
         _diags.Add(new Diagnostic(Library.clang_getDiagnosticInSet(Handle, i), itemFactory));
     }
 }
コード例 #5
0
ファイル: Cursor.cs プロジェクト: JadeHub/LibClangCS
 /// <summary>
 /// Create a new Cursor object.
 /// </summary>
 /// <param name="handle">Handle to a non null cursor obect.</param>
 /// <param name="itemFactory">TranslationUnit's item factory / item cache.</param>
 internal Cursor(Library.Cursor handle, ITranslationUnitItemFactory itemFactory)
 {
     Debug.Assert(!handle.IsNull);
     Handle = handle;
     _itemFactory = itemFactory;
     Kind = Library.clang_getCursorKind(Handle);
     Library.CXType typeHandle = Library.clang_getCursorType(Handle);
     if (typeHandle.IsValid)
         _type = _itemFactory.CreateType(typeHandle);
 }
コード例 #6
0
ファイル: Cursor.cs プロジェクト: JadeHub/Jade
 internal unsafe static OverriddenCursorSet CreateOverriddenCursorSet(Cursor c, ITranslationUnitItemFactory factory)
 {
     Library.CXCursor* overrides;
     uint count;
     Library.clang_getOverriddenCursors(c.Handle, &overrides, &count);
     if (count == 0) return Empty;
     OverriddenCursorSet result = new OverriddenCursorSet(overrides, count, factory);
     //Assuming that this only deletes the array allocated above and that the handles remain valid
     Library.clang_disposeOverriddenCursors(overrides);
     return result;
 }
コード例 #7
0
ファイル: EntityReference.cs プロジェクト: JadeHub/Jade
 internal unsafe EntityReference(Library.CXIdxEntityRefInfo handle, ITranslationUnitItemFactory itemFactory)
 {
     _handle = handle;
     _itemFactory = itemFactory;
     if (_handle.referencedEntity != (Library.CXIdxEntityInfo*)IntPtr.Zero)
         _refedEntity = new EntityInfo(*_handle.referencedEntity, _itemFactory);
     if (_handle.parentEntity != (Library.CXIdxEntityInfo*)IntPtr.Zero)
         _parentEntity = new EntityInfo(*_handle.parentEntity, _itemFactory);
     if(_handle.container != (Library.CXIdxContainerInfo*)IntPtr.Zero)
         _container = _itemFactory.CreateCursor(_handle.container->cursor);
 }
コード例 #8
0
ファイル: SourceLocation.cs プロジェクト: JadeHub/LibClangCS
 internal unsafe SourceLocation(Library.SourceLocation handle, ITranslationUnitItemFactory itemFactory)
 {
     Debug.Assert(!handle.IsNull);
     Handle = handle;
     _itemFactory = itemFactory;
     IntPtr file = IntPtr.Zero;
     uint line, column, offset;
     Library.clang_getInstantiationLocation(Handle, &file, out line, out column, out offset);
     Line = (int)line;
     Column = (int)column;
     Offset = (int)offset;
     if (file != IntPtr.Zero)
     {
         File = _itemFactory.CreateFile(file);
     }
 }
コード例 #9
0
ファイル: DeclInfo.cs プロジェクト: JadeHub/Jade
        internal unsafe DeclInfo(Library.CXIdxDeclInfo handle, ITranslationUnitItemFactory itemFactory)
        {
            _handle = handle;
            _itemFactory = itemFactory;

            _entityInfo = new EntityInfo(*_handle.entityInfo, itemFactory);

            if (handle.semanticContainer != (Library.CXIdxContainerInfo*)IntPtr.Zero)
                _semanticContainer = _itemFactory.CreateCursor(handle.semanticContainer->cursor);

            if(handle.lexicalContainer != (Library.CXIdxContainerInfo*)IntPtr.Zero)
                _lexicalContainer = _itemFactory.CreateCursor(handle.lexicalContainer->cursor);

            if(handle.declAsContainer != (Library.CXIdxContainerInfo*)IntPtr.Zero)
                _declAsContainer = _itemFactory.CreateCursor(handle.declAsContainer->cursor);

           // Debug.Assert(Location == Cursor.Location);            
        }
コード例 #10
0
ファイル: Type.cs プロジェクト: JadeHub/LibClangCS
 internal Type(Library.CXType handle, ITranslationUnitItemFactory itemFactory)
 {
     Debug.Assert(handle.IsValid);
     Handle = handle;
     _itemFactory = itemFactory;
 }
コード例 #11
0
ファイル: File.cs プロジェクト: JadeHub/Jade
 internal File(IntPtr handle, ITranslationUnitItemFactory itemFactory)
 {            
     Debug.Assert(handle != IntPtr.Zero);
     Handle = handle;
     _itemFactory = itemFactory;
 }
コード例 #12
0
ファイル: Diagnostic.cs プロジェクト: JadeHub/Jade
 /// <summary>
 /// Create a new Diagnostic object.
 /// </summary>
 /// <param name="handle">Handle to a diagnostic object.</param>
 /// <param name="itemFactory">TranslationUnit's item factory / item cache.</param>
 internal Diagnostic(IntPtr handle, ITranslationUnitItemFactory itemFactory)
 {
     _itemFactory = itemFactory;
     Handle = handle;
     _ranges = new List<SourceRange>();
 }