From 505b7fec2e8270410de09e7212ce193e7831ff08 Mon Sep 17 00:00:00 2001 From: Anthony Shoumikhin Date: Wed, 18 Jun 2025 14:12:15 -0700 Subject: [PATCH] Value description Summary: Pretty-print Value's contents and metadata Reviewed By: bsoyluoglu Differential Revision: D76915255 --- .../ExecuTorch/Exported/ExecuTorchValue.mm | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorchValue.mm b/extension/apple/ExecuTorch/Exported/ExecuTorchValue.mm index dd4eed7157e..6ba03dc50f9 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorchValue.mm +++ b/extension/apple/ExecuTorch/Exported/ExecuTorchValue.mm @@ -29,6 +29,36 @@ static inline ExecuTorchValueTag deduceValueTag(NSNumber *number) { } } +static inline NSString *valueTagDescription(ExecuTorchValueTag tag) { + switch (tag) { + case ExecuTorchValueTagNone: + return @"none"; + case ExecuTorchValueTagTensor: + return @"tensor"; + case ExecuTorchValueTagString: + return @"string"; + case ExecuTorchValueTagDouble: + return @"double"; + case ExecuTorchValueTagInteger: + return @"integer"; + case ExecuTorchValueTagBoolean: + return @"boolean"; + case ExecuTorchValueTagBooleanList: + return @"boolean_list"; + case ExecuTorchValueTagDoubleList: + return @"double_list"; + case ExecuTorchValueTagIntegerList: + return @"integer_list"; + case ExecuTorchValueTagTensorList: + return @"tensor_list"; + case ExecuTorchValueTagScalarList: + return @"scalar_list"; + case ExecuTorchValueTagOptionalTensorList: + return @"optional_tensor_list"; + } + return @"undefined"; +} + @interface ExecuTorchValue () - (instancetype)initWithTag:(ExecuTorchValueTag)tag @@ -195,4 +225,24 @@ - (BOOL)isEqual:(nullable id)other { return [self isEqualToValue:(ExecuTorchValue *)other]; } +- (NSString *)description { + NSMutableString *string = [NSMutableString new]; + [string appendString:@"Value {"]; + [string appendFormat:@"\n tag: %@", valueTagDescription(_tag)]; + [string appendString:@","]; + [string appendString:@"\n value: "]; + if (_value) { + NSString *valueDescription = [_value description]; + [string appendString:[_value description]]; + [string replaceOccurrencesOfString:@"\n" + withString:@"\n " + options:0 + range:NSMakeRange(string.length - valueDescription.length, valueDescription.length)]; + } else { + [string appendString:@"nil"]; + } + [string appendString:@"\n}"]; + return string; +} + @end