CPF/CPF.Mac/Mac/Foundation/NSComparisonPredicate.cs
2023-11-21 23:05:03 +08:00

241 lines
8.9 KiB
C#

using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
namespace CPF.Mac.Foundation
{
[Register("NSComparisonPredicate", true)]
public class NSComparisonPredicate : NSPredicate
{
private static readonly IntPtr selPredicateOperatorTypeHandle = Selector.GetHandle("predicateOperatorType");
private static readonly IntPtr selComparisonPredicateModifierHandle = Selector.GetHandle("comparisonPredicateModifier");
private static readonly IntPtr selLeftExpressionHandle = Selector.GetHandle("leftExpression");
private static readonly IntPtr selRightExpressionHandle = Selector.GetHandle("rightExpression");
private static readonly IntPtr selCustomSelectorHandle = Selector.GetHandle("customSelector");
private static readonly IntPtr selOptionsHandle = Selector.GetHandle("options");
private static readonly IntPtr selPredicateWithLeftExpressionRightExpressionModifierTypeOptions_Handle = Selector.GetHandle("predicateWithLeftExpression:rightExpression:modifier:type:options:");
private static readonly IntPtr selPredicateWithLeftExpressionRightExpressionCustomSelector_Handle = Selector.GetHandle("predicateWithLeftExpression:rightExpression:customSelector:");
private static readonly IntPtr selInitWithLeftExpressionRightExpressionModifierTypeOptions_Handle = Selector.GetHandle("initWithLeftExpression:rightExpression:modifier:type:options:");
private static readonly IntPtr selInitWithLeftExpressionRightExpressionCustomSelector_Handle = Selector.GetHandle("initWithLeftExpression:rightExpression:customSelector:");
private static readonly IntPtr class_ptr = Class.GetHandle("NSComparisonPredicate");
private object __mt_LeftExpression_var;
private object __mt_RightExpression_var;
public override IntPtr ClassHandle => class_ptr;
public virtual NSPredicateOperatorType PredicateOperatorType
{
[Export("predicateOperatorType")]
get
{
if (IsDirectBinding)
{
return (NSPredicateOperatorType)Messaging.UInt64_objc_msgSend(base.Handle, selPredicateOperatorTypeHandle);
}
return (NSPredicateOperatorType)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selPredicateOperatorTypeHandle);
}
}
public virtual NSComparisonPredicateModifier ComparisonPredicateModifier
{
[Export("comparisonPredicateModifier")]
get
{
if (IsDirectBinding)
{
return (NSComparisonPredicateModifier)Messaging.UInt64_objc_msgSend(base.Handle, selComparisonPredicateModifierHandle);
}
return (NSComparisonPredicateModifier)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selComparisonPredicateModifierHandle);
}
}
public virtual NSExpression LeftExpression
{
[Export("leftExpression")]
get
{
return (NSExpression)(__mt_LeftExpression_var = ((!IsDirectBinding) ? ((NSExpression)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selLeftExpressionHandle))) : ((NSExpression)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selLeftExpressionHandle)))));
}
}
public virtual NSExpression RightExpression
{
[Export("rightExpression")]
get
{
return (NSExpression)(__mt_RightExpression_var = ((!IsDirectBinding) ? ((NSExpression)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selRightExpressionHandle))) : ((NSExpression)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selRightExpressionHandle)))));
}
}
public virtual Selector CustomSelector
{
[Export("customSelector")]
get
{
if (IsDirectBinding)
{
return Selector.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selCustomSelectorHandle));
}
return Selector.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selCustomSelectorHandle));
}
}
public virtual NSComparisonPredicateOptions Options
{
[Export("options")]
get
{
if (IsDirectBinding)
{
return (NSComparisonPredicateOptions)Messaging.UInt64_objc_msgSend(base.Handle, selOptionsHandle);
}
return (NSComparisonPredicateOptions)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selOptionsHandle);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSComparisonPredicate()
: base(NSObjectFlag.Empty)
{
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend(base.Handle, Selector.Init);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.Init);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("initWithCoder:")]
public NSComparisonPredicate(NSCoder coder)
: base(NSObjectFlag.Empty)
{
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSComparisonPredicate(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSComparisonPredicate(IntPtr handle)
: base(handle)
{
}
[Export("predicateWithLeftExpression:rightExpression:modifier:type:options:")]
public static NSPredicate Create(NSExpression leftExpression, NSExpression rightExpression, NSComparisonPredicateModifier comparisonModifier, NSPredicateOperatorType operatorType, NSComparisonPredicateOptions comparisonOptions)
{
if (leftExpression == null)
{
throw new ArgumentNullException("leftExpression");
}
if (rightExpression == null)
{
throw new ArgumentNullException("rightExpression");
}
return (NSPredicate)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_UInt64_UInt64_UInt64(class_ptr, selPredicateWithLeftExpressionRightExpressionModifierTypeOptions_Handle, leftExpression.Handle, rightExpression.Handle, (ulong)comparisonModifier, (ulong)operatorType, (ulong)comparisonOptions));
}
[Export("predicateWithLeftExpression:rightExpression:customSelector:")]
public static NSPredicate FromSelector(NSExpression leftExpression, NSExpression rightExpression, Selector selector)
{
if (leftExpression == null)
{
throw new ArgumentNullException("leftExpression");
}
if (rightExpression == null)
{
throw new ArgumentNullException("rightExpression");
}
if (selector == null)
{
throw new ArgumentNullException("selector");
}
return (NSPredicate)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr(class_ptr, selPredicateWithLeftExpressionRightExpressionCustomSelector_Handle, leftExpression.Handle, rightExpression.Handle, selector.Handle));
}
[Export("initWithLeftExpression:rightExpression:modifier:type:options:")]
public NSComparisonPredicate(NSExpression leftExpression, NSExpression rightExpression, NSComparisonPredicateModifier comparisonModifier, NSPredicateOperatorType operatorType, NSComparisonPredicateOptions comparisonOptions)
: base(NSObjectFlag.Empty)
{
if (leftExpression == null)
{
throw new ArgumentNullException("leftExpression");
}
if (rightExpression == null)
{
throw new ArgumentNullException("rightExpression");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_UInt64_UInt64_UInt64(base.Handle, selInitWithLeftExpressionRightExpressionModifierTypeOptions_Handle, leftExpression.Handle, rightExpression.Handle, (ulong)comparisonModifier, (ulong)operatorType, (ulong)comparisonOptions);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_UInt64_UInt64_UInt64(base.SuperHandle, selInitWithLeftExpressionRightExpressionModifierTypeOptions_Handle, leftExpression.Handle, rightExpression.Handle, (ulong)comparisonModifier, (ulong)operatorType, (ulong)comparisonOptions);
}
}
[Export("initWithLeftExpression:rightExpression:customSelector:")]
public NSComparisonPredicate(NSExpression leftExpression, NSExpression rightExpression, Selector selector)
: base(NSObjectFlag.Empty)
{
if (leftExpression == null)
{
throw new ArgumentNullException("leftExpression");
}
if (rightExpression == null)
{
throw new ArgumentNullException("rightExpression");
}
if (selector == null)
{
throw new ArgumentNullException("selector");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr(base.Handle, selInitWithLeftExpressionRightExpressionCustomSelector_Handle, leftExpression.Handle, rightExpression.Handle, selector.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr(base.SuperHandle, selInitWithLeftExpressionRightExpressionCustomSelector_Handle, leftExpression.Handle, rightExpression.Handle, selector.Handle);
}
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (base.Handle == IntPtr.Zero)
{
__mt_LeftExpression_var = null;
__mt_RightExpression_var = null;
}
}
}
}