You've already forked MobileandWebTechnologiesCoursework-TaskMaster
mirror of
https://github.com/MrLyallCSIT/MobileandWebTechnologiesCoursework-TaskMaster.git
synced 2026-01-18 07:09:36 +00:00
Repair to Code Final Commit
This commit is contained in:
100
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h
generated
Normal file
100
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h
generated
Normal file
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// GTMDebugSelectorValidation.h
|
||||
//
|
||||
// This file should only be included within an implimation file. In any
|
||||
// function that takes an object and selector to invoke, you should call:
|
||||
//
|
||||
// GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, @encode(arg1type), ..., NULL)
|
||||
// or
|
||||
// GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, @encode(returnType), @encode(arg1type), ..., NULL)
|
||||
//
|
||||
// This will then validate that the selector is defined and using the right
|
||||
// type(s), this can help catch errors much earlier then waiting for the
|
||||
// selector to actually fire (and in the case of error selectors, might never
|
||||
// really be tested until in the field).
|
||||
//
|
||||
// Copyright 2007-2008 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
// use this file except in compliance with the License. You may obtain a copy
|
||||
// of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
// License for the specific language governing permissions and limitations under
|
||||
// the License.
|
||||
//
|
||||
|
||||
#if DEBUG
|
||||
|
||||
#import <stdarg.h>
|
||||
#import "GTMDefines.h"
|
||||
|
||||
static void GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(id obj, SEL sel, const char *retType, ...) {
|
||||
|
||||
// verify that the object's selector is implemented with the proper
|
||||
// number and type of arguments
|
||||
va_list argList;
|
||||
va_start(argList, retType);
|
||||
|
||||
if (obj && sel) {
|
||||
// check that the selector is implemented
|
||||
_GTMDevAssert([obj respondsToSelector:sel],
|
||||
@"\"%@\" selector \"%@\" is unimplemented or misnamed",
|
||||
NSStringFromClass([obj class]),
|
||||
NSStringFromSelector(sel));
|
||||
|
||||
const char *expectedArgType;
|
||||
NSUInteger argCount = 2; // skip self and _cmd
|
||||
NSMethodSignature *sig = [obj methodSignatureForSelector:sel];
|
||||
|
||||
// check that each expected argument is present and of the correct type
|
||||
while ((expectedArgType = va_arg(argList, const char*)) != 0) {
|
||||
|
||||
if ([sig numberOfArguments] > argCount) {
|
||||
const char *foundArgType = [sig getArgumentTypeAtIndex:argCount];
|
||||
|
||||
_GTMDevAssert(0 == strncmp(foundArgType, expectedArgType, strlen(expectedArgType)),
|
||||
@"\"%@\" selector \"%@\" argument %u should be type %s",
|
||||
NSStringFromClass([obj class]),
|
||||
NSStringFromSelector(sel),
|
||||
(uint32_t)(argCount - 2),
|
||||
expectedArgType);
|
||||
}
|
||||
argCount++;
|
||||
}
|
||||
|
||||
// check that the proper number of arguments are present in the selector
|
||||
_GTMDevAssert(argCount == [sig numberOfArguments],
|
||||
@"\"%@\" selector \"%@\" should have %u arguments",
|
||||
NSStringFromClass([obj class]),
|
||||
NSStringFromSelector(sel),
|
||||
(uint32_t)(argCount - 2));
|
||||
|
||||
// if asked, validate the return type
|
||||
if (retType && (strcmp("gtm_skip_return_test", retType) != 0)) {
|
||||
const char *foundRetType = [sig methodReturnType];
|
||||
_GTMDevAssert(0 == strncmp(foundRetType, retType, strlen(retType)),
|
||||
@"\"%@\" selector \"%@\" return type should be type %s",
|
||||
NSStringFromClass([obj class]),
|
||||
NSStringFromSelector(sel),
|
||||
retType);
|
||||
}
|
||||
}
|
||||
|
||||
va_end(argList);
|
||||
}
|
||||
|
||||
#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) \
|
||||
GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments((obj), (sel), "gtm_skip_return_test", __VA_ARGS__)
|
||||
|
||||
#else // DEBUG
|
||||
|
||||
// make it go away if not debug
|
||||
#define GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, retType, ...) do { } while (0)
|
||||
#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) do { } while (0)
|
||||
|
||||
#endif // DEBUG
|
||||
44
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h
generated
Normal file
44
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h
generated
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// GTMDebugThreadValidation.h
|
||||
//
|
||||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
// use this file except in compliance with the License. You may obtain a copy
|
||||
// of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
// License for the specific language governing permissions and limitations under
|
||||
// the License.
|
||||
//
|
||||
|
||||
#import "GTMDefines.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
// GTMCheckCurrentQueue, GTMIsCurrentQueue
|
||||
//
|
||||
// GTMCheckCurrentQueue takes a target queue and uses _GTMDevAssert to
|
||||
// report if that is not the currently executing queue.
|
||||
//
|
||||
// GTMIsCurrentQueue takes a target queue and returns true if the target queue
|
||||
// is the currently executing dispatch queue. This can be passed to another
|
||||
// assertion call in debug builds; it should never be used in release code.
|
||||
//
|
||||
// The dispatch queue must have a label.
|
||||
#define GTMCheckCurrentQueue(targetQueue) \
|
||||
_GTMDevAssert(GTMIsCurrentQueue(targetQueue), \
|
||||
@"Current queue is %s (expected %s)", \
|
||||
_GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \
|
||||
_GTMQueueName(targetQueue))
|
||||
|
||||
#define GTMIsCurrentQueue(targetQueue) \
|
||||
(strcmp(_GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \
|
||||
_GTMQueueName(targetQueue)) == 0)
|
||||
|
||||
#define _GTMQueueName(queue) \
|
||||
(strlen(dispatch_queue_get_label(queue)) > 0 ? \
|
||||
dispatch_queue_get_label(queue) : "unnamed")
|
||||
69
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h
generated
Normal file
69
Task Master/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// GTMMethodCheck.h
|
||||
//
|
||||
// Copyright 2006-2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
// use this file except in compliance with the License. You may obtain a copy
|
||||
// of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
// License for the specific language governing permissions and limitations under
|
||||
// the License.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <stdio.h>
|
||||
#import <sysexits.h>
|
||||
|
||||
/// A macro for enforcing debug time checks to make sure all required methods are linked in
|
||||
//
|
||||
// When using categories, it can be very easy to forget to include the
|
||||
// implementation of a category.
|
||||
// Let's say you had a class foo that depended on method bar of class baz, and
|
||||
// method bar was implemented as a member of a category.
|
||||
// You could add the following code:
|
||||
//
|
||||
// GTM_METHOD_CHECK(baz, bar)
|
||||
//
|
||||
// and the code would check to make sure baz was implemented just before main
|
||||
// was called. This works for both dynamic libraries, and executables.
|
||||
//
|
||||
//
|
||||
// This is not compiled into release builds.
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
// This is the "magic".
|
||||
// A) we need a multi layer define here so that the preprocessor expands
|
||||
// __LINE__ the way we want it. We need __LINE__ so that each of our
|
||||
// GTM_METHOD_CHECKs generates a unique function name.
|
||||
#define GTM_METHOD_CHECK(class, method) GTM_METHOD_CHECK_INNER(class, method, __LINE__)
|
||||
#define GTM_METHOD_CHECK_INNER(class, method, line) \
|
||||
GTM_METHOD_CHECK_INNER_INNER(class, method, line)
|
||||
|
||||
// B) define a function that is called at startup to check that |class| has an
|
||||
// implementation for |method| (either a class method or an instance method).
|
||||
#define GTM_METHOD_CHECK_INNER_INNER(class, method, line) \
|
||||
__attribute__ ((constructor, visibility("hidden"))) \
|
||||
static void xxGTMMethodCheckMethod ## class ## line () { \
|
||||
@autoreleasepool { \
|
||||
if (![class instancesRespondToSelector:@selector(method)] \
|
||||
&& ![class respondsToSelector:@selector(method)]) { \
|
||||
fprintf(stderr, "%s:%d: error: We need method '%s' to be linked in for class '%s'\n", \
|
||||
__FILE__, line, #method, #class); \
|
||||
exit(EX_SOFTWARE); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#else // DEBUG
|
||||
|
||||
// Do nothing in release.
|
||||
#define GTM_METHOD_CHECK(class, method)
|
||||
|
||||
#endif // DEBUG
|
||||
Reference in New Issue
Block a user