8000 Get rid of ConflictIteratorSafeHandle and {,Null}IndexSafeHandle · vrkcse2011/libgit2sharp@ec88896 · GitHub
[go: up one dir, main page]

Skip to content

Commit ec88896

Browse files
committed
Get rid of ConflictIteratorSafeHandle and {,Null}IndexSafeHandle
1 parent 4b8b026 commit ec88896

11 files changed

+218
-127
lines changed

LibGit2Sharp/Core/Handles/ConflictIteratorSafeHandle.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

LibGit2Sharp/Core/Handles/IndexSafeHandle.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

LibGit2Sharp/Core/Handles/NullIndexSafeHandle.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.

LibGit2Sharp/Core/Handles/Objects.cs

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,4 +625,142 @@ public void Dispose()
625625
}
626626
}
627627

628+
internal unsafe class ConflictIteratorHandle : IDisposable
629+
{
630+
git_index_conflict_iterator* ptr;
631+
internal git_index_conflict_iterator* Handle
632+
{
633+
get
634+
{
635+
return ptr;
636+
}
637+
}
638+
639+
bool owned;
640+
bool disposed;
641+
642+
public unsafe ConflictIteratorHandle(git_index_conflict_iterator* 1E0A handle, bool owned)
643+
{
644+
this.ptr = handle;
645+
this.owned = owned;
646+
}
647+
648+
public unsafe ConflictIteratorHandle(IntPtr ptr, bool owned)
649+
{
650+
this.ptr = (git_index_conflict_iterator*) ptr.ToPointer();
651+
this.owned = owned;
652+
}
653+
654+
~ConflictIteratorHandle()
655+
{
656+
Dispose(false);
657+
}
658+
659+
internal bool IsNull
660+
{
661+
get
662+
{
663+
return ptr == null;
664+
}
665+
}
666+
667+
internal IntPtr AsIntPtr()
668+
{
669+
return new IntPtr(ptr);
670+
}
671+
672+
void Dispose(bool disposing)
673+
{
674+
if (!disposed)
675+
{
676+
if (owned)
677+
{
678+
NativeMethods.git_index_conflict_iterator_free(ptr);
679+
ptr = null;
680+
}
681+
}
682+
683+
disposed = true;
684+
}
685+
686+
public void Dispose()
687+
{
688+
Dispose(true);
689+
}
690+
691+
public static implicit operator git_index_conflict_iterator*(ConflictIteratorHandle handle)
692+
{
693+
return handle.Handle;
694+
}
695+
}
696+
697+
internal unsafe class IndexHandle : IDisposable
698+
{
699+
git_index* ptr;
700+
internal git_index* Handle
701+
{
702+
get
703+
{
704+
return ptr;
705+
}
706+
}
707+
708+
bool owned;
709+
bool disposed;
710+
711+
public unsafe IndexHandle(git_index* handle, bool owned)
712+
{
713+
this.ptr = handle;
714+
this.owned = owned;
715+
}
716+
717+
public unsafe IndexHandle(IntPtr ptr, bool owned)
718+
{
719+
this.ptr = (git_index*) ptr.ToPointer();
720+
this.owned = owned;
721+
}
722+
723+
~IndexHandle()
724+
{
725+
Dispose(false);
726+
}
727+
728+
internal bool IsNull
729+
{
730+
get
731+
{
732+
return ptr == null;
733+
}
734+
}
735+
736+
internal IntPtr AsIntPtr()
737+
{
738+
return new IntPtr(ptr);
739+
}
740+
741+
void Dispose(bool disposing)
742+
{
743+
if (!disposed)
744+
{
745+
if (owned)
746+
{
747+
NativeMethods.git_index_free(ptr);
748+
ptr = null;
749+
}
750+
}
751+
752+
disposed = true;
753+
}
754+
755+
public void Dispose()
756+
{
757+
Dispose(true);
758+
}
759+
760+
public static implicit operator git_index*(IndexHandle handle)
761+
{
762+
return handle.Handle;
763+
}
764+
}
765+
628766
}

LibGit2Sharp/Core/Handles/Objects.tt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ var cNames = new[] {
2121
"git_diff",
2222
"git_patch",
2323
"git_config",
24+
"git_index_conflict_iterator",
25+
"git_index",
2426
};
2527

2628
var csNames = new[] {
@@ -33,6 +35,8 @@ var csNames = new[] {
3335
"DiffHandle",
3436
"PatchHandle",
3537
"ConfigurationHandle",
38+
"ConflictIteratorHandle",
39+
"IndexHandle",
3640
};
3741

3842
for (var i = 0; i < cNames.Length; i++)

LibGit2Sharp/Core/NativeMethods.cs

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ internal static extern unsafe int git_diff_tree_to_index(
490490
out git_diff* diff,
491491
git_repository* repo,
492492
GitObjectSafeHandle oldTree,
493-
IndexSafeHandle index,
493+
git_index* index,
494494
GitDiffOptions options);
495495

496496
[DllImport(libgit2)]
@@ -502,7 +502,7 @@ internal static extern unsafe int git_diff_merge(
502502
internal static extern unsafe int git_diff_index_to_workdir(
503503
out git_diff* diff,
504504
git_repository* repo,
505-
IndexSafeHandle index,
505+
git_index* index,
506506
GitDiffOptions options);
507507

508508
[DllImport(libgit2)]
@@ -624,107 +624,107 @@ internal static extern unsafe int git_ignore_path_is_ignored(
624624
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path);
625625

626626
[DllImport(libgit2)]
627-
internal static extern int git_index_add_bypath(
628-
IndexSafeHandle index,
627+
internal static extern unsafe int git_index_add_bypath(
628+
git_index* index,
629629
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path);
630630

631631
[DllImport(libgit2)]
632632
internal static extern unsafe int git_index_add(
633-
IndexSafeHandle index,
633+
git_index* index,
634634
git_index_entry* entry);
635635

636636
[DllImport(libgit2)]
637637
internal static extern unsafe int git_index_conflict_get(
638638
out git_index_entry* ancestor,
639639
out git_index_entry* ours,
640640
out git_index_entry* theirs,
641-
IndexSafeHandle index,
641+
git_index* index,
642642
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path);
643643

644644
[DllImport(libgit2)]
645-
internal static extern int git_index_conflict_iterator_new(
646-
out ConflictIteratorSafeHandle iterator,
647-
IndexSafeHandle index);
645+
internal static extern unsafe int git_index_conflict_iterator_new(
646+
out git_index_conflict_iterator* iterator,
647+
git_index* index);
648648

649649
[DllImport(libgit2)]
650650
internal static extern unsafe int git_index_conflict_next(
651651
out git_index_entry* ancestor,
652652
out git_index_entry* ours,
653653
out git_index_entry* theirs,
654-
ConflictIteratorSafeHandle iterator);
654+
git_index_conflict_iterator* iterator);
655655

656656
[DllImport(libgit2)]
657-
internal static extern void git_index_conflict_iterator_free(
658-
IntPtr iterator);
657+
internal static extern unsafe void git_index_conflict_iterator_free(
658+
git_index_conflict_iterator* iterator);
659659

660660
[DllImport(libgit2)]
661-
internal static extern UIntPtr git_index_entrycount(IndexSafeHandle index);
661+
internal static extern unsafe UIntPtr git_index_entrycount(git_index* index);
662662

663663
[DllImport(libgit2)]
664664
internal static extern unsafe int git_index_entry_stage(git_index_entry* indexentry);
665665

666666
[DllImport(libgit2)]
667-
internal static extern void git_index_free(IntPtr index);
667+
internal static extern unsafe void git_index_free(git_index* index);
668668

669669
[DllImport(libgit2)]
670-
internal static extern unsafe git_index_entry* git_index_get_byindex(IndexSafeHandle index, UIntPtr n);
670+
internal static extern unsafe git_index_entry* git_index_get_byindex(git_index* index, UIntPtr n);
671671

672672
[DllImport(libgit2)]
673673
internal static extern unsafe git_index_entry* git_index_get_bypath(
674-
IndexSafeHandle index,
674+
git_index* index,
675675
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path,
676676
int stage);
677677

678678
[DllImport(libgit2)]
679-
internal static extern int git_index_has_conflicts(IndexSafeHandle index);
679+
internal static extern unsafe int git_index_has_conflicts(git_index* index);
680680

681681
[DllImport(libgit2)]
682-
internal static extern UIntPtr git_index_name_entrycount(IndexSafeHandle handle);
682+
internal static extern unsafe UIntPtr git_index_name_entrycount(git_index* handle);
683683

684684
[DllImport(libgit2)]
685-
internal static extern unsafe git_index_name_entry* git_index_name_get_byindex(IndexSafeHandle handle, UIntPtr n);
685+
internal static extern unsafe git_index_name_entry* git_index_name_get_byindex(git_index* handle, UIntPtr n);
686686

687687
[DllImport(libgit2)]
688-
internal static extern int git_index_open(
689-
out IndexSafeHandle index,
688+
internal static extern unsafe int git_index_open(
689+
out git_index* index,
690690
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath indexpath);
691691

692692
[DllImport(libgit2)]
693-
internal static extern int git_index_read(
694-
IndexSafeHandle index,
693+
internal static extern unsafe int git_index_read(
694+
git_index* index,
695695
[MarshalAs(UnmanagedType.Bool)] bool force);
696696

697697
[DllImport(libgit2)]
698-
internal static extern int git_index_remove_bypath(
699-
IndexSafeHandle index,
698+
internal static extern unsafe int git_index_remove_bypath(
699+
git_index* index,
700700
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path);
701701

702702

703703
[DllImport(libgit2)]
704-
internal static extern UIntPtr git_index_reuc_entrycount(IndexSafeHandle handle);
704+
internal static extern unsafe UIntPtr git_index_reuc_entrycount(git_index* handle);
705705

706706
[DllImport(libgit2)]
707-
internal static extern unsafe git_index_reuc_entry* git_index_reuc_get_byindex(IndexSafeHandle handle, UIntPtr n);
707+
internal static extern unsafe git_index_reuc_entry* git_index_reuc_get_byindex(git_index* handle, UIntPtr n);
708708

709709
[DllImport(libgit2)]
710710
internal static extern unsafe git_index_reuc_entry* git_index_reuc_get_bypath(
711-
IndexSafeHandle handle,
711+
git_index* handle,
712712
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalCookie = UniqueId.UniqueIdentifier, MarshalTypeRef = typeof(StrictFilePathMarshaler))] FilePath path);
713713

714714
[DllImport(libgit2)]
715-
internal static extern int git_index_write(IndexSafeHandle index);
715+
internal static extern unsafe int git_index_write(git_index* index);
716716

717717
[DllImport(libgit2)]
718-
internal static extern int git_index_write_tree(out GitOid treeOid, IndexSafeHandle index);
718+
internal static extern unsafe int git_index_write_tree(out GitOid treeOid, git_index* index);
719719

720720
[DllImport(libgit2)]
721-
internal static extern unsafe int git_index_write_tree_to(out GitOid treeOid, IndexSafeHandle index, git_repository* repo);
721+
internal static extern unsafe int git_index_write_tree_to(out GitOid treeOid, git_index* index, git_repository* repo);
722722

723723
[DllImport(libgit2)]
724-
internal static extern int git_index_read_tree(IndexSafeHandle index, GitObjectSafeHandle tree);
724+
internal static extern unsafe int git_index_read_tree(git_index* index, GitObjectSafeHandle tree);
725725

726726
[DllImport(libgit2)]
727-
internal static extern int git_index_clear(IndexSafeHandle index);
727+
internal static extern unsafe int git_index_clear(git_index* index);
728728

729729
[DllImport(libgit2)]
730730
internal static extern unsafe int git_merge_base_many(
@@ -780,7 +780,7 @@ internal static extern unsafe int git_merge(
780780

781781
[DllImport(libgit2)]
782782
internal static extern unsafe int git_merge_commits(
783-
out IndexSafeHandle index,
783+
out git_index* index,
784784
git_repository* repo,
785785
GitObjectSafeHandle our_commit,
786786
GitObjectSafeHandle their_commit,
@@ -1322,7 +1322,7 @@ internal static extern unsafe int git_repository_ident(
13221322
git_repository* repo);
13231323

13241324
[DllImport(libgit2)]
1325-
internal static extern unsafe int git_repository_index(out IndexSafeHandle index, git_repository* repo);
1325+
internal static extern unsafe int git_repository_index(out git_index* index, git_repository* repo);
13261326

13271327
[DllImport(libgit2)]
13281328
internal static extern unsafe int git_repository_init_ext(
@@ -1388,7 +1388,7 @@ internal static extern unsafe int git_repository_set_ident(
13881388
[DllImport(libgit2)]
13891389
internal static extern unsafe void git_repository_set_index(
13901390
git_repository* repository,
1391-
IndexSafeHandle index);
1391+
git_index* index);
13921392

13931393
[DllImport(libgit2)]
13941394
internal static extern unsafe int git_repository_set_workdir(

LibGit2Sharp/Core/Opaques.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ internal struct git_blame {}
1111
internal struct git_diff {}
1212
internal struct git_patch {}
1313
internal struct git_config {}
14+
internal struct git_index_conflict_iterator {}
15+
internal struct git_index {}
1416
}
1517

0 commit comments

Comments
 (0)
0