410 :(id)rootPList
411 named:(NSString *)name
412 subProperty:(id)subProperty
413 againstSchemaType:(id)subSchema
415 tentative:(BOOL)tentative
416 error:(NSError **)outError
417 stop:(BOOL *)outStop
418{
420 NSError *error =
nil;
421 NSDictionary *resolvedSpecifier =
nil;
422 NSAutoreleasePool *pool =
nil;
423
424 assert(outStop != NULL);
425
426 pool = [[NSAutoreleasePool alloc] init];
427
429
430 @try
431 {
433
434 resolvedSpecifier = [self resolveSchemaType:subSchema atPath:keyPath error:&error];
435 if (resolvedSpecifier !=
nil) type =
StringToSchemaType([resolvedSpecifier objectForKey:
@"type"], &error);
436
437 #define VERIFY_CASE(T) case kType##T: error = Verify_##T(self, subProperty, resolvedSpecifier, rootPList, name, keyPath, tentative, outStop); break;
438
439 switch (type)
440 {
455
457
458 *outStop = YES;
459 }
460 }
461 @catch (NSException *exception)
462 {
464 }
465
467
469 {
471 {
472 *outStop = ![self delegateVerifierWithPropertyList:rootPList
473 named:name
474 failedForProperty:subProperty
475 withError:error
476 expectedType:subSchema];
477 }
478 else if (tentative) *outStop = YES;
479 }
480
481 if (outError != NULL && error !=
nil)
482 {
483 *outError = [error retain];
484 [pool release];
485 [error autorelease];
486 }
487 else
488 {
489 [pool release];
490 }
491
493}
static SchemaType StringToSchemaType(NSString *string, NSError **outError)
#define DebugDumpPopIndent()
#define DebugDumpIndent()
#define DebugDumpPushIndent()
static BOOL IsFailureAlreadyReportedError(NSError *error)