typedef void (^kBoolBlock)(void);
@interface kBool : kObject
{
@private
bool value;
}
+ (kBool*)no;
+ (kBool*)yes;
- (kBool*)isEqual:(kBool*)b;
- (void)ifNo:(kBoolBlock)sn;
- (void)ifNo:(kBoolBlock)sn ifYes:(kBoolBlock)sy;
- (void)ifYes:(kBoolBlock)sy;
- (void)ifYes:(kBoolBlock)sy ifNo:(kBoolBlock)sn;
@end
kBool *kBoolNo = nil, *kBoolYes = nil;
@implementation kBool
+ (kBool*)no
{
if(!kBoolNo)
{
kBoolNo = [kBool alloc];
kBoolNo->value = false;
}
return kBoolNo;
}
+ (kBool*)yes
{
if(!kBoolYes)
{
kBoolYes = [kBool alloc];
kBoolYes->value = true;
}
return kBoolYes;
}
- (kBool*)isEqual:(kBool*)b
{
if(self == b)
return kBoolYes;
else
return kBoolNo;
}
- (void)ifNo:(kBoolBlock)sn
{
if(!value)
sn();
}
- (void)ifNo:(kBoolBlock)sn ifYes:(kBoolBlock)sy
{
if(!value)
sn();
else
sy();
}
- (void)ifYes:(kBoolBlock)sy
{
if(value)
sy();
}
- (void)ifYes:(kBoolBlock)sy ifNo:(kBoolBlock)sn
{
if(value)
sy();
else
sn();
}
@end
Copyright © 2025 Rui Cuco. All rights reserved.