Skip to content

Commit 78eed84

Browse files
committed
HintGenerator: No HasFlag to prevent boxing
1 parent 2d17dcd commit 78eed84

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

Orm/Xtensive.Orm/Orm/Upgrade/Internals/HintGenerator.cs

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ private enum CleanupInfo : byte
2828
None = 0,
2929
TypeMovedToAnotherHierarchy = 1,
3030
ConflictByTable = 2,
31-
RootOfConflict = 4,
32-
All = TypeMovedToAnotherHierarchy | ConflictByTable | RootOfConflict
31+
RootOfConflict = 4
3332
}
3433

3534
private readonly NameBuilder nameBuilder;
@@ -256,9 +255,9 @@ private void GenerateCleanupByPrimaryKeyHints(StoredTypeInfo removedType, Cleanu
256255
}
257256

258257
var deleteInfo = DataDeletionInfo.None;
259-
if (cleanupInfo.HasFlag(CleanupInfo.TypeMovedToAnotherHierarchy))
258+
if ((cleanupInfo & CleanupInfo.TypeMovedToAnotherHierarchy) != 0)
260259
deleteInfo |= DataDeletionInfo.PostCopy;
261-
if (cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
260+
if ((cleanupInfo & CleanupInfo.ConflictByTable) != 0)
262261
deleteInfo |= DataDeletionInfo.TableMovement;
263262

264263
foreach (var info in typesToProcess) {
@@ -274,13 +273,13 @@ private void GenerateCleanupByPrimaryKeyHints(StoredTypeInfo removedType, Cleanu
274273
private IEnumerable<(StoredTypeInfo, IdentityPair)> GetTypesToCleanForClassTable(
275274
StoredTypeInfo removedType, CleanupInfo cleanupInfo)
276275
{
277-
if (!cleanupInfo.HasFlag(CleanupInfo.TypeMovedToAnotherHierarchy)) {
278-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable)) {
276+
if ((cleanupInfo & CleanupInfo.TypeMovedToAnotherHierarchy) == 0) {
277+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0) {
279278
return removedType.AllAncestors.Append(removedType)
280279
.Select(t => (t, CreateIdentityPair(removedType, t)));
281280
}
282281
else {
283-
if (!cleanupInfo.HasFlag(CleanupInfo.RootOfConflict))
282+
if ((cleanupInfo & CleanupInfo.RootOfConflict) == 0)
284283
return Array.Empty<(StoredTypeInfo, IdentityPair)>();
285284

286285
var capacity = (2 * removedType.AllAncestors.Length) + removedType.AllDescendants.Length + 1;
@@ -301,7 +300,7 @@ private void GenerateCleanupByPrimaryKeyHints(StoredTypeInfo removedType, Cleanu
301300
}
302301
}
303302
else {
304-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable)) {
303+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0) {
305304
return removedType.AllAncestors
306305
.Select(aType =>(aType, CreateIdentityPair(removedType, aType)));
307306
}
@@ -313,16 +312,16 @@ private void GenerateCleanupByPrimaryKeyHints(StoredTypeInfo removedType, Cleanu
313312
StoredTypeInfo removedType, CleanupInfo cleanupInfo)
314313
{
315314
var rootType = removedType.Hierarchy.Root;
316-
if (!cleanupInfo.HasFlag(CleanupInfo.TypeMovedToAnotherHierarchy)) {
317-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
315+
if ((cleanupInfo & CleanupInfo.TypeMovedToAnotherHierarchy) == 0) {
316+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0)
318317
return new (StoredTypeInfo, IdentityPair)[] { (rootType, CreateIdentityPair(removedType, rootType)) };
319318
else {
320319
return removedType.AllDescendants.Append(rootType)
321320
.Select(t => (rootType, CreateIdentityPair(t, rootType)));
322321
}
323322
}
324323
else {
325-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
324+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0)
326325
return new (StoredTypeInfo, IdentityPair)[] { (rootType, CreateIdentityPair(removedType, rootType)) };
327326
}
328327
return Array.Empty<(StoredTypeInfo, IdentityPair)>();
@@ -331,18 +330,18 @@ private void GenerateCleanupByPrimaryKeyHints(StoredTypeInfo removedType, Cleanu
331330
private IEnumerable<(StoredTypeInfo, IdentityPair)> GetTypesToCleanForConcreteTable(
332331
StoredTypeInfo removedType, CleanupInfo cleanupInfo)
333332
{
334-
if (!cleanupInfo.HasFlag(CleanupInfo.TypeMovedToAnotherHierarchy)) {
335-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
333+
if ((cleanupInfo & CleanupInfo.TypeMovedToAnotherHierarchy) == 0) {
334+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0)
336335
return new (StoredTypeInfo, IdentityPair)[] { (removedType, null) };
337336
else {
338-
if (!cleanupInfo.HasFlag(CleanupInfo.RootOfConflict))
337+
if ((cleanupInfo & CleanupInfo.RootOfConflict) == 0)
339338
return Array.Empty<(StoredTypeInfo, IdentityPair)>();
340339
return removedType.AllDescendants.Append(removedType)
341340
.Select(t => (t, (IdentityPair)null));
342341
}
343342
}
344343
else {
345-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
344+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0)
346345
return new (StoredTypeInfo, IdentityPair)[] { (removedType, null) };
347346
}
348347
return Array.Empty<(StoredTypeInfo, IdentityPair)>();
@@ -354,7 +353,7 @@ private void GenerateCleanupByForeignKeyHints(StoredTypeInfo removedType, Cleanu
354353
removedType.AllAncestors.Append(removedType).ForEach(t => removedTypeAndAncestors.Add(t));
355354

356355

357-
var descendantsToHash = cleanupInfo.HasFlag(CleanupInfo.ConflictByTable)
356+
var descendantsToHash = (cleanupInfo & CleanupInfo.ConflictByTable) != 0
358357
? removedType.AllDescendants
359358
: Array.Empty<StoredTypeInfo>();
360359
var descendants = new HashSet<StoredTypeInfo>(descendantsToHash.Length);
@@ -431,7 +430,7 @@ private void ClearDirectAssociation(StoredTypeInfo removedType,
431430
CleanupInfo cleanupInfo)
432431
{
433432
var inheritanceSchema = declaringType.Hierarchy.InheritanceSchema;
434-
if (!cleanupInfo.HasFlag(CleanupInfo.ConflictByTable)) {
433+
if ((cleanupInfo & CleanupInfo.ConflictByTable) == 0) {
435434
var includeInheritors = inheritanceSchema == InheritanceSchema.ConcreteTable;
436435
GenerateClearReferenceHints(
437436
removedType,
@@ -440,7 +439,7 @@ private void ClearDirectAssociation(StoredTypeInfo removedType,
440439
requiresInverseCleanup);
441440
}
442441
else {
443-
if (cleanupInfo.HasFlag(CleanupInfo.ConflictByTable) && !cleanupInfo.HasFlag(CleanupInfo.RootOfConflict))
442+
if ((cleanupInfo & CleanupInfo.ConflictByTable) != 0 && (cleanupInfo & CleanupInfo.RootOfConflict) == 0)
444443
return;
445444
var type = useRemovedType
446445
? removedType
@@ -469,10 +468,10 @@ private void ClearIndirectAssociation(StoredTypeInfo removedType,
469468
CleanupInfo cleanupInfo)
470469
{
471470
var deleteInfo = DataDeletionInfo.None;
472-
if (cleanupInfo.HasFlag(CleanupInfo.ConflictByTable))
471+
if ((cleanupInfo & CleanupInfo.ConflictByTable) != 0)
473472
deleteInfo |= DataDeletionInfo.TableMovement;
474473

475-
if (!deleteInfo.HasFlag(DataDeletionInfo.TableMovement)) {
474+
if ((deleteInfo & DataDeletionInfo.TableMovement) == 0) {
476475
GenerateClearReferenceHints(
477476
removedType,
478477
new[] { association.ConnectorType },
@@ -481,7 +480,7 @@ private void ClearIndirectAssociation(StoredTypeInfo removedType,
481480
deleteInfo);
482481
}
483482
else {
484-
if (cleanupInfo.HasFlag(CleanupInfo.ConflictByTable) && !cleanupInfo.HasFlag(CleanupInfo.RootOfConflict))
483+
if ((cleanupInfo & CleanupInfo.ConflictByTable) != 0 && (cleanupInfo & CleanupInfo.RootOfConflict) == 0)
485484
return;
486485
var type = useRemovedType
487486
? removedType

0 commit comments

Comments
 (0)