#import "Identifier.h"
OF_ASSUME_NONNULL_BEGIN
#define COMMAND(name, nargs, block_) \
OF_CONSTRUCTOR() \
{ \
enqueueInit(^{ \
[Identifier \
addIdentifier:[Command commandWithName:@ #name \
argumentsTypes:nargs \
block:block_]]; \
}); \
}
@interface Command: Identifier
@property (readonly, nonatomic) int argumentsTypes;
+ (instancetype)commandWithName:(OFString *)name
argumentsTypes:(int)argumentsTypes
block:(id)block;
- (instancetype)initWithName:(OFString *)name OF_UNAVAILABLE;
- (instancetype)initWithName:(OFString *)name
argumentsTypes:(int)argumentsTypes
block:(id)block;
- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown;
@end
OF_ASSUME_NONNULL_END