Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Appledoc Documentation!

Quick, somebody crack open the champagne!
  • Loading branch information...
commit 6abd74ca3615731d0f32c64a214ddc6337c37f5c 1 parent 8c86b87
Jim Dovey authored
View
143 AQAppStateMachine/AQBitfield.h
@@ -35,44 +35,175 @@
#import <Foundation/Foundation.h>
-// this is an NSUInteger only for CPU optimization. Its value should always be 0 or 1.
+/// A register-width type representing a single bit. Its value should always be `0` or `1`.
typedef CFBit AQBit;
+/**
+ A class representing a bitfield of indeterminate size.
+ */
@interface AQBitfield : NSObject <NSCopying, NSMutableCopying, NSCoding>
+/// @name Comparisons
+
+/// Returns a hash code for the object's current state.
- (NSUInteger) hash;
-- (BOOL) isEqual: (id) object;
-@property (nonatomic, readonly) NSUInteger count; // number of significant bits
+/**
+ Check for equality with another object.
+ @param object The object to compare.
+ @return `YES` if the objects are equal, `NO` otherwise.
+ */
+- (BOOL) isEqual: (id) object;
+/// @name Counting
+
+/**
+ The number of significant bits within the bitfield.
+
+ *NB:* This returns the number of bits in the range which covers all `1` bits in the bitfield.
+ i.e. it will return `((index of highest 1-bit) + 1)`.
+ */
+@property (nonatomic, readonly) NSUInteger count;
+
+/**
+ Count the number of bits with a particular value within a range.
+ @param bit The bit value to count.
+ @param range The range of bits to check.
+ @return The number of bits set to the value of _bit_ within _range_.
+ */
- (NSUInteger) countOfBit: (AQBit) bit inRange: (NSRange) range;
+/**
+ Determine whether a given bit value exists within a range.
+ @param bit The bit value for which to search.
+ @param range The range of bits to check.
+ @return `YES` if the given bit value exists within the range, `NO` otherwise.
+ */
- (BOOL) containsBit: (AQBit) bit inRange: (NSRange) range;
-- (AQBit) bitAtIndex: (NSUInteger) index;
-- (AQBitfield *) bitfieldFromRange: (NSRange) range; // throws NSRangeException
+/// @name Bit Accessors
+/**
+ Inspect the value of a specified bit.
+ @param index The index of the bit to check.
+ @result The value of the specified bit.
+ */
+- (AQBit) bitAtIndex: (NSUInteger) index;
+
+/**
+ Obtain a (zero-based) bitfield containing a copy of all bits from a given range.
+ @param range The range of the receiver from which to create the new bitfield.
+ @result A new bitfield containing the bits from the specified range.
+ @exception NSRangeException Thrown if the range is beyond that allowable (`0..NSNotFound`)
+ */
+- (AQBitfield *) bitfieldFromRange: (NSRange) range;
+
+/// @name Significant Bits
+
+/**
+ Find the index of the least-significant bit containing a specified value.
+ @param bit The bit value for which to search.
+ @return The index of the least-significant bit with the given value.
+ */
- (NSUInteger) firstIndexOfBit: (AQBit) bit;
+
+/**
+ Find the index of the most-significant bit containing a specified value.
+ @param bit The bit value for which to search.
+ @return The index of the most-significant bit with the given value.
+ */
- (NSUInteger) lastIndexOfBit: (AQBit) bit;
+/// @name Toggling Bits
+
+/**
+ Toggle the value of a particular bit.
+ @param index The index of the bit whose value to toggle.
+ */
- (void) flipBitAtIndex: (NSUInteger) index;
+
+/**
+ Toggle all bits in a given range.
+ @param range The range of bits to toggle.
+ */
- (void) flipBitsInRange: (NSRange) range;
+/// @name Setting Bits
+
+/**
+ Set the value of a specific bit.
+ @param bit The value to set.
+ @param index The index of the bit to set.
+ */
- (void) setBit: (AQBit) bit atIndex: (NSUInteger) index;
+
+/**
+ Set the value of all bits in a range.
+ @param range The range of bits to modify.
+ @param bit The value to set.
+ */
- (void) setBitsInRange: (NSRange) range usingBit: (AQBit) bit;
+/**
+ Fills the entire bitfield (from `0` to `NSNotFound-1`) with a given value.
+ @param bit The value to use.
+ */
- (void) setAllBits: (AQBit) bit;
-// 'range' must be <= sizeof(NSUInteger), will compare least-significant bits of 'bits'
+/// @name Matching bit values
+
+/**
+ Look for a match within the bitfield to an integer-sized value.
+ @param range The range of bits to compare. Must be `<= sizeof(NSUInteger)`. Compares least-significant bits of _bits_.
+ @param bits The value to compare against.
+ @return `YES` if a match is found, `NO` otherwise.
+ */
- (BOOL) bitsInRange: (NSRange) range matchBits: (NSUInteger) bits;
+
+/**
+ Look for a match within a sub-range of the bitfield.
+ @param range The range of bits to compare.
+ @param bitfield A zero-based bitfield corresponding to the bits within _range_ to compare.
+ @return `YES` if a match is found, `NO` otherwise.
+ */
- (BOOL) bitsInRange: (NSRange) range equalToBitfield: (AQBitfield *) bitfield;
+/**
+ Look for a match within the bitfield to an integer-sized value according to a mask.
+ @param range The range of bits to compare. Must be `<= sizeof(NSUInteger)`. Compares least-significant bits of _bits_.
+ @param mask A mask to determine which bits in the bitfield's sub-range to actually compare.
+ @param bits The value to compare against.
+ @return `YES` if a match is found, `NO` otherwise.
+ */
- (BOOL) bitsInRange: (NSRange) range maskedWith: (NSUInteger) mask matchBits: (NSUInteger) bits;
+
+/**
+ Look for a match within a sub-range of the bitfield according to a mask.
+ @param range The range of bits to compare.
+ @param mask A mask to determine which bits in the bitfield's sub-range to actually compare.
+ @param bitfield A zero-based bitfield corresponding to the bits within \a range to compare.
+ @return `YES` if a match is found, `NO` otherwise.
+ */
- (BOOL) bitsInRange: (NSRange) range maskedWith: (AQBitfield *) mask equalToBitfield: (AQBitfield *) bitfield;
+/// Bitwise Operations
+
+/**
+ Shift all bits in the field to the left.
+ @param bits The number of places to shift.
+ */
- (void) shiftBitsLeftBy: (NSUInteger) bits;
+
+/**
+ Shift all bits in the field to the right.
+ @param bits The number of places to shift.
+ */
- (void) shiftBitsRightBy: (NSUInteger) bits;
+/**
+ Mask a bitfield using a bitwise AND operation.
+ @param mask The mask to apply to the bitfield's current state.
+ */
- (void) maskWithBits: (AQBitfield *) mask;
@end
View
64 AQAppStateMachine/AQBitfieldPredicates.h
@@ -36,69 +36,75 @@
#import <Foundation/NSPredicate.h>
#import "AQBitfield.h"
+/**
+ Custom predicate constructors for dealing with AQBitfield instances.
+ */
@interface NSPredicate (AQBitfieldPredicates)
-/*!
- @abstract Match the value of a single bit in a bitfield.
- @discussion Returns a predicate which matches the value of a single bit in a bitfield.
- @param value The bit value expected. Can be 1 or 0.
+/**
+ Match the value of a single bit in a bitfield.
+ @param value The bit value expected. Can be `1` or `0`.
@param index The index of the bit to compare in the bitfield.
- @result A new NSPredicate.
+ @return A new `NSPredicate`.
*/
+ (NSPredicate *) predicateForMatchingBitValue: (AQBit) value
atIndex: (NSUInteger) index;
/*!
- @abstract Match the value of all bits in a range of a bitfield.
- @discussion Returns a predicate which evaluates to YES when all bits in a value
- match all bits in a specified range of a bitfield. The specified range must
- be less than or equal to <code>sizeof(NSUInteger)</code>.
- @param value The bit values expected. For ranges smaller than <code>sizeof(NSUInteger)</code>,
- the least-significant bytes of the value are used for the comparison. All values are
- converted to <em>big-endian</em> format for byte-by-byte comparisons.
+ Match the value of all bits in a range of a bitfield.
+
+ Returns a predicate which evaluates to YES when all bits in a value
+ match all bits in a specified range of a bitfield. The specified range must
+ be less than or equal to `sizeof(NSUInteger)`.
+ @param value The bit values expected. For ranges smaller than `sizeof(NSUInteger)`,
+ the least-significant bytes of the value are used for the comparison. All values are
+ converted to *big-endian* format for byte-by-byte comparisons.
@param range The range of bits in the bitfield against which to compare.
- @result A new NSPredicate.
+ @return A new `NSPredicate`.
*/
+ (NSPredicate *) predicateForMatchingAllBits: (NSUInteger) value
inRange: (NSRange) range;
/*!
- @abstract Match the bits in one bitfield against those in a range within another bitfield.
- @discussion Returns a predicate which matches the contents of one bitfield against the contents
- of a range of bits within an equal- or larger-sized bitfield.
+ Match the bits in one bitfield against those in a range within another bitfield.
+
+ Returns a predicate which matches the contents of one bitfield against the contents
+ of a range of bits within an equal- or larger-sized bitfield.
@param match A bitfield defining the bits to match.
@param range The range of bits in the bitfield against which to compare.
- @result A new NSPredicate.
+ @return A new `NSPredicate`.
*/
+ (NSPredicate *) predicateForMatchingBitfield: (AQBitfield *) match
againstRange: (NSRange) range;
/*!
- @abstract Match the value of certain bits in a range of a bitfield.
- @discussion Returns a predicate which evaluates to YES when a set of masked bits in a value
- match the bits in a specified range of a bitfield, masked using the same mask. The
- specified range must be less than or equal to <code>sizeof(NSUInteger)</code>.
- @param value The bit values expected. For ranges smaller than <code>sizeof(NSUInteger)</code>,
+ Match the value of certain bits in a range of a bitfield.
+
+ Returns a predicate which evaluates to `YES` when a set of masked bits in a value
+ match the bits in a specified range of a bitfield, masked using the same mask. The
+ specified range must be less than or equal to `sizeof(NSUInteger)`.
+ @param value The bit values expected. For ranges smaller than `sizeof(NSUInteger)`,
the least-significant bytes of the value are used for the comparison. All values are
- converted to <em>big-endian</em> format for byte-by-byte comparisons.
- @param mask The mask to apply to the contents of <code>range</code> in the comparison bitfield
+ converted to *big-endian* format for byte-by-byte comparisons.
+ @param mask The mask to apply to the contents of _range_ in the comparison bitfield
before performing the comparison.
@param range The range of bits in the bitfield against which to compare.
- @result A new NSPredicate.
+ @return A new `NSPredicate`.
*/
+ (NSPredicate *) predicateForMatchingBits: (NSUInteger) value
maskedWith: (NSUInteger) mask
inRange: (NSRange) range;
/*!
- @abstract Match the bits in one bitfield against those in a range within another bitfield.
- @discussion Returns a predicate which matches the contents of one bitfield against the contents
+ Match the bits in one bitfield against those in a range within another bitfield.
+
+ Returns a predicate which matches the contents of one bitfield against the contents
of a range of bits within an equal- or larger-sized bitfield.
@param match A bitfield defining the bits to match.
- @param mask A bitfield defining the mask to apply to the contents of <code>range</code> in the
+ @param mask A bitfield defining the mask to apply to the contents of rangein the
comparison bitfield before performing the comparison.
@param range The range of bits in the bitfield against which to compare.
- @result A new NSPredicate.
+ @return A new `NSPredicate`.
*/
+ (NSPredicate *) predicateForMatchingBitfield: (AQBitfield *) match
maskedWith: (AQBitfield *) mask
View
28 AQAppStateMachine/AQNotifyingBitfield.h
@@ -36,13 +36,37 @@
#import <Foundation/Foundation.h>
#import "AQBitfield.h"
+/**
+ A Block type for processing range modification notifications.
+ @param range The range of bits modified.
+ */
typedef void (^AQRangeNotification)(NSRange range);
+/**
+ A bitfield which supports calling notification callback blocks whenever bits within certain ranges
+ are modified.
+ */
@interface AQNotifyingBitfield : AQBitfield
+/**
+ Install a notifier block for a given range of a bitfield.
+ @param range The range to watch.
+ @param block The block to run when any bits within _range_ are modified.
+ */
- (void) notifyModificationOfBitsInRange: (NSRange) range usingBlock: (AQRangeNotification) block;
-- (void) removeNotifierForBitsInRange: (NSRange) range; // exact range match
-- (void) removeAllNotifiersWithinRange: (NSRange) range; // any wholly-contained ranges
+/**
+ Remove a notifier for a specific range.
+ @param range The range for which to search. Must exactly match a range passed to
+ notifyModificationOfBitsInRange:usingBlock:.
+ */
+- (void) removeNotifierForBitsInRange: (NSRange) range;
+
+/**
+ Remove any notifiers attached to ranges are within a given range.
+ @param range The range to search. Only notifiers whose ranges are _completely_ within this value will
+ be removed.
+ */
+- (void) removeAllNotifiersWithinRange: (NSRange) range;
@end
View
35 AQAppStateMachine/AQRange.h
@@ -35,19 +35,52 @@
#import <Foundation/Foundation.h>
+/**
+ A simple object wrapper around an `NSRange` structure which implements some sorting logic.
+ */
@interface AQRange : NSObject <NSCopying>
{
NSRange _range;
}
-- (id) initWithRange: (NSRange) range; // designated initializer
+/**
+ Initialize a new `AQRange` instance.
+
+ This is the designated initializer for `AQRange`.
+ @param range The `NSRange` whose value the receiver will take on.
+ @return The new instance.
+ */
+- (id) initWithRange: (NSRange) range;
+/// The underlying range represented by this object.
@property (nonatomic, readonly) NSRange range;
+/**
+ Test for equality against another object.
+ @param object The object against which to compare.
+ @result `YES` if the objects match, `NO` otherwise.
+ */
- (BOOL) isEqual: (id) object;
+
+/**
+ Test for equality with an `NSRange` structure.
+ @param nsRange The range against which to compare.
+ @result `YES` if the objects match, `NO` otherwise.
+ */
- (BOOL) isEqualToNSRange: (NSRange) nsRange;
+/**
+ Compare one AQRange against another.
+ @param other The range against which to compare the receiver.
+ @return An `NSComparisonResult` describing the relative ordering of the two objects.
+ */
- (NSComparisonResult) compare: (AQRange *) other;
+
+/**
+ Compare against an `NSRange` structure.
+ @param nsRange The range against which to compare the receiver.
+ @return An `NSComparisonResult` describing the relative ordering of the two objects.
+ */
- (NSComparisonResult) compareToNSRange: (NSRange) nsRange;
@end
View
13 AQAppStateMachine/AQRangeMethods.h
@@ -35,9 +35,16 @@
#import <Foundation/Foundation.h>
+/**
+ Range-based methods for NSIndexSet.
+
+ This category specifically implements some implementations of the enumerateRangesUsingBlock: functionality
+ coming in OS X 10.7 and iOS 5.0. At runtime it will detect whether the official versions are available,
+ and if they are not it will create them using the implementations given here for source code compatibility.
+ */
@interface NSIndexSet (AQRangeMethods)
-// so the compiler is happy if we don't target iOS 5 at all
+// Cover methods for the official implementations if we target < iOS 5.0
#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_5_0
- (void)enumerateRangesUsingBlock:(void (^)(NSRange range, BOOL *stop))block;
- (void)enumerateRangesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(NSRange range, BOOL *stop))block;
@@ -49,7 +56,9 @@
- (void)aq_enumerateRangesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(NSRange range, BOOL *stop))block;
- (void)aq_enumerateRangesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (^)(NSRange range, BOOL *stop))block;
-// custom methods
+/**
+ The number of ranges present in the index set.
+ */
- (NSUInteger) numberOfRanges;
@end
View
48 AQAppStateMachine/AQStateMatchingDescriptor.h
@@ -37,32 +37,72 @@
@class AQBitfield;
+/**
+ A class describing a comparison match for an AQBitfield.
+ */
@interface AQStateMatchingDescriptor : NSObject <NSCopying>
{
NSString * _uuid;
NSIndexSet * _matchingIndices;
}
-// designated initializer
-// to specify 'no mask' in an array, use NSNull
+/**
+ Initialize a new descriptor.
+
+ If masks are only required for some but not all entries in the _ranges_ array, the
+ corresponding entry in the _masks_ array should be an `NSNull` instance.
+ @param ranges An array of AQRange objects specifying ranges to match.
+ @param masks An array of AQBitfield objects providing masks to apply to the ranges. May be `nil`.
+ @return The newly-initialized instance.
+ */
- (id) initWithRanges: (NSArray *) ranges matchingMasks: (NSArray *) masks;
+/// A unique identifier for this descriptor.
@property (nonatomic, readonly) NSString * uniqueID;
+/// The full range covered by this descriptor.
@property (nonatomic, readonly) NSRange fullRange;
+/**
+ Determine whether a descriptor checks any bits within a specific range.
+ @param range The range of bits to compare.
+ @result `YES` if the descriptor checks bits within _range_, `NO` otherwise.
+ */
- (BOOL) matchesRange: (NSRange) range;
+/**
+ Compare two descriptors.
+ @param other The descriptor against which to compare the receiver.
+ @return An `NSComparisonResult` indicating the relative sort ordering of the two descriptors.
+ */
- (NSComparisonResult) compare: (AQStateMatchingDescriptor *) other;
@end
+/// Convenience functions for creating descriptors for single range/mask pairs.
@interface AQStateMatchingDescriptor (CreationConvenience)
-// single range & mask
+/**
+ Initialize a descriptor using a single range and mask.
+ @param range The range to match.
+ @param mask A mask specifying which bits within the range to match. May be `nil`.
+ @return The newly-initialized instance.
+ */
- (id) initWithRange: (NSRange) range matchingMask: (AQBitfield *) mask;
-// masks using integral types
+/**
+ Initialize a descriptor using a single range and a 32-bit mask.
+ @param mask A mask specifying which bits within the range to match. Do not pass zero.
+ @param range The range to match.
+ @return The newly-initialized instance.
+ */
- (id) initWith32BitMask: (NSUInteger) mask forRange: (NSRange) range;
+
+/**
+ Initialize a descriptor using a single range and a 64-bit mask.
+ @param mask A mask specifying which bits within the range to match. Do not pass zero.
+ @param range The range to match.
+ @return The newly-initialized instance.
+ */
- (id) initWith64BitMask: (UInt64) mask forRange: (NSRange) range;
@end
View
39 AppledocSettings.plist
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>--company-id</key>
+ <string>net.alanquatermain</string>
+ <key>--ignore</key>
+ <array>
+ <string>AQAppStateMachineTests</string>
+ <string>AQAppStateMachine/SortedDictionary</string>
+ </array>
+ <key>--logformat</key>
+ <integer>1</integer>
+ <key>--print-settings</key>
+ <true/>
+ <key>--project-company</key>
+ <string>Jim Dovey</string>
+ <key>--project-name</key>
+ <string>AQAppStateMachine</string>
+ <key>--repeat-first-par</key>
+ <false/>
+ <key>--templates</key>
+ <string>./Templates</string>
+ <key>--verbose</key>
+ <integer>3</integer>
+ <key>--merge-categories</key>
+ <true/>
+ <key>--keep-merged-sections</key>
+ <true/>
+ <key>--keep-undocumented-objects</key>
+ <false/>
+ <key>--keep-undocumented-members</key>
+ <false/>
+ <key>--project-version</key>
+ <string>0.1</string>
+ <key>--publish-docset</key>
+ <false/>
+</dict>
+</plist>
View
1  Templates/docset/Contents/Resources/Documents/documents-template
@@ -0,0 +1 @@
+This is used only as placeholder for location of Documents directory!
View
60 Templates/docset/Contents/Resources/nodes-template.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<DocSetNodes version="1.0">
+ <TOC>
+ <Node type="folder">
+ <Name>{{projectName}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#hasClasses}}
+ <Node type="folder">
+ <Name>{{strings/docset/classesTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#classes}}{{>NodeRef}}
+ {{/classes}}
+ </Subnodes>
+ </Node>
+ {{/hasClasses}}
+ {{#hasCategories}}
+ <Node type="folder">
+ <Name>{{strings/docset/categoriesTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#categories}}{{>NodeRef}}
+ {{/categories}}
+ </Subnodes>
+ </Node>
+ {{/hasCategories}}
+ {{#hasProtocols}}
+ <Node type="folder">
+ <Name>{{strings/docset/protocolsTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#protocols}}{{>NodeRef}}
+ {{/protocols}}
+ </Subnodes>
+ </Node>
+ {{/hasProtocols}}
+ </Subnodes>
+ </Node>
+ </TOC>
+ <Library>
+ {{#classes}}{{>Node}}
+ {{/classes}}
+ {{#categories}}{{>Node}}
+ {{/categories}}
+ {{#protocols}}{{>Node}}
+ {{/protocols}}
+ </Library>
+</DocSetNodes>
+
+Section Node
+ <Node id="{{id}}"{{#type}} type="{{type}}"{{/type}}>
+ <Name>{{name}}</Name>
+ <Path>{{path}}</Path>
+ </Node>
+EndSection
+
+Section NodeRef
+ <NodeRef refid="{{id}}"/>
+EndSection
View
61 Templates/docset/Contents/Resources/tokens-template.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Tokens version="1.0">
+ <File path="{{filePath}}">
+ {{#object}}
+ <Token>
+ {{>TokenIdentifier}}
+ {{>Abstract}}
+ {{>DeclaredIn}}
+ {{>RelatedTokens}}
+ {{#refid}}<NodeRef refid="{{refid}}"/>{{/refid}}
+ </Token>
+ {{/object}}
+ {{#members}}
+ <Token>
+ {{>TokenIdentifier}}
+ {{>Abstract}}
+ {{>DeclaredIn}}
+ {{>RelatedTokens}}
+ <Declaration>{{>MethodDeclaration}}</Declaration>
+ {{#hasParameters}}<Parameters>
+ {{#parameters}}<Parameter>
+ <Name>{{name}}</Name>
+ {{>Abstract}}
+ </Parameter>{{/parameters}}
+ </Parameters>{{/hasParameters}}
+ {{#returnValue}}<ReturnValue>{{>Abstract}}</ReturnValue>{{/returnValue}}
+ {{#anchor}}<Anchor>{{anchor}}</Anchor>{{/anchor}}
+ </Token>
+ {{/members}}
+ </File>
+</Tokens>
+
+Section TokenIdentifier
+ <TokenIdentifier>{{identifier}}</TokenIdentifier>
+EndSection
+
+Section DeclaredIn
+ <DeclaredIn>{{declaredin}}</DeclaredIn>
+EndSection
+
+Section RelatedTokens
+ {{#hasRelatedTokens}}
+ <RelatedTokens>
+ {{#relatedTokens}}<TokenIdentifier>{{.}}</TokenIdentifier>
+ {{/relatedTokens}}
+ </RelatedTokens>
+ {{/hasRelatedTokens}}
+EndSection
+
+Section Abstract
+<Abstract>{{#abstract}}{{>GBCommentComponentsList}}{{/abstract}}</Abstract>
+EndSection
+
+Section MethodDeclaration
+{{#formattedComponents}}{{value}}{{/formattedComponents}}
+EndSection
+
+Section GBCommentComponentsList
+{{#components}}{{&textValue}}{{/components}}
+EndSection
+
View
38 Templates/docset/Contents/info-template.plist
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ {{#bundleIdentifier}}<key>CFBundleIdentifier</key>
+ <string>{{bundleIdentifier}}</string>{{/bundleIdentifier}}
+ {{#bundleName}}<key>CFBundleName</key>
+ <string>{{bundleName}}</string>{{/bundleName}}
+ {{#bundleVersion}}<key>CFBundleShortVersionString</key>
+ <string>{{bundleVersion}}</string>
+ <key>CFBundleVersion</key>
+ <string>{{bundleVersion}}</string>{{/bundleVersion}}
+ {{#certificateIssuer}}<key>DocSetCertificateIssuer</key>
+ <string>{{certificateIssuer}}</string>{{/certificateIssuer}}
+ {{#certificateSigner}}<key>DocSetCertificateSigner</key>
+ <string>{{certificateSigner}}</string>{{/certificateSigner}}
+ {{#description}}<key>DocSetDescription</key>
+ <string>{{description}}</string>{{/description}}
+ {{#fallbackURL}}<key>DocSetFallbackURL</key>
+ <string>{{fallbackURL}}</string>{{/fallbackURL}}
+ {{#feedName}}<key>DocSetFeedName</key>
+ <string>{{feedName}}</string>{{/feedName}}
+ {{#feedURL}}<key>DocSetFeedURL</key>
+ <string>{{feedURL}}</string>{{/feedURL}}
+ {{#minimumXcodeVersion}}<key>DocSetMinimumXcodeVersion</key>
+ <string>{{minimumXcodeVersion}}</string>{{/minimumXcodeVersion}}
+ {{#platformFamily}}<key>DocSetPlatformFamily</key>
+ <string>{{platformFamily}}</string>{{/platformFamily}}
+ {{#publisherIdentifier}}<key>DocSetPublisherIdentifier</key>
+ <string>{{publisherIdentifier}}</string>{{/publisherIdentifier}}
+ {{#publisherName}}<key>DocSetPublisherName</key>
+ <string>{{publisherName}}</string>{{/publisherName}}
+ {{#copyrightMessage}}<key>NSHumanReadableCopyright</key>
+ <string>{{copyrightMessage}}</string>{{/copyrightMessage}}
+</dict>
+</plist>
View
520 Templates/html/css/styles.css
@@ -0,0 +1,520 @@
+body {
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ font-size: 13px;
+ color: #000;
+}
+
+code {
+ font-family: Courier, Consolas, monospace;
+ font-size: 13px;
+ color: #666;
+}
+
+pre {
+ font-family: Courier, Consolas, monospace;
+ font-size: 13px;
+ line-height: 18px;
+ tab-interval: 0.5em;
+ border: 1px solid #C7CFD5;
+ background-color: #F1F5F9;
+ color: #666;
+ padding: 0.3em 1em;
+}
+
+ul {
+ list-style-type: square;
+}
+
+li {
+ margin-bottom: 10px;
+}
+
+p:first-child {
+ margin-top: 0.5em;
+}
+
+a code,
+a {
+ text-decoration: none;
+ color: #36C;
+}
+
+a:hover code,
+a:hover {
+ text-decoration: underline;
+ color: #36C;
+}
+
+/* @group Common page elements */
+
+#top_header {
+ height: 55px;
+ left: 0;
+ min-width: 598px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 900;
+}
+
+#footer {
+ clear: both;
+ padding-top: 20px;
+ text-align: center;
+}
+
+#contents {
+ border-top: 1px solid #2B334F;
+ position: absolute;
+ top: 56px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-top: 1em;
+ min-width: 550px;
+}
+
+#contents.isShowingTOC {
+ left: 230px;
+ min-width: 320px;
+}
+
+#overview_contents {
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-top: 1em;
+ min-width: 550px;
+}
+
+.copyright {
+ font-size: 12px;
+}
+
+.generator {
+ font-size: 11px;
+}
+
+.main-navigation ul li {
+ display: inline;
+ margin-left: 15px;
+ list-style: none;
+}
+
+.navigation-top {
+ clear: both;
+ float: right;
+}
+
+.navigation-bottom {
+ clear: both;
+ float: right;
+ margin-top: 20px;
+ margin-bottom: -10px;
+}
+
+.open > .disclosure {
+ background-image: url("../img/disclosure_open.png");
+}
+
+.disclosure {
+ background: url("../img/disclosure.png") no-repeat scroll 0 0;
+}
+
+.disclosure, .nodisclosure {
+ display: inline-block;
+ height: 8px;
+ margin-right: 5px;
+ position: relative;
+ width: 9px;
+}
+
+/* @end */
+
+/* @group Header */
+
+#top_header #title {
+ background: url("../img/title_background.png") repeat-x 0 0 #8A98A9;
+ border-bottom: 1px solid #B6B6B6;
+ height: 25px;
+ overflow: hidden;
+}
+
+#top_header h1 {
+ font-size: 115%;
+ font-weight: normal;
+ margin: 0;
+ padding: 3px 0 2px;
+ text-align: center;
+ text-shadow: 0 1px 0 #D5D5D5;
+ white-space: nowrap;
+}
+
+#headerButtons {
+ background-color: #D8D8D8;
+ background-image: url("../img/button_bar_background.png");
+ border-bottom: 1px solid #EDEDED;
+ border-top: 1px solid #2B334F;
+ font-size: 8pt;
+ height: 28px;
+ left: 0;
+ list-style: none outside none;
+ margin: 0;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ top: 26px;
+}
+
+#headerButtons li {
+ background-repeat: no-repeat;
+ display: inline;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding: 0;
+}
+
+#toc_button button {
+ border-color: #ACACAC;
+ border-style: none solid none none;
+ border-width: 0 1px 0 0;
+ height: 28px;
+ margin: 0;
+ padding-left: 30px;
+ text-align: left;
+ width: 230px;
+}
+
+li#jumpto_button {
+ left: 230px;
+ margin-left: 0;
+ position: absolute;
+}
+
+li#jumpto_button select {
+ height: 22px;
+ margin: 5px 2px 0 10px;
+ max-width: 300px;
+}
+
+/* @end */
+
+/* @group Table of contents */
+
+#tocContainer.isShowingTOC {
+ border-right: 1px solid #ACACAC;
+ display: block;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+
+#tocContainer {
+ background-color: #E4EBF7;
+ border-top: 1px solid #2B334F;
+ bottom: 0;
+ display: none;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ top: 56px;
+ width: 229px;
+}
+
+#tocContainer > ul#toc {
+ font-size: 11px;
+ margin: 0;
+ padding: 12px 0 18px;
+ width: 209px;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+#tocContainer > ul#toc > li {
+ margin: 0;
+ padding: 0 0 7px 30px;
+ text-indent: -15px;
+}
+
+#tocContainer > ul#toc > li > .sectionName a {
+ color: #000000;
+ font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > .sectionName a:hover {
+ text-decoration: none;
+}
+
+#tocContainer > ul#toc li.children > ul {
+ display: none;
+ height: 0;
+}
+
+#tocContainer > ul#toc > li > ul {
+ margin: 0;
+ padding: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+ margin-left: 0;
+ margin-bottom: 0;
+ padding-left: 15px;
+}
+
+#tocContainer > ul#toc > li ul {
+ list-style: none;
+ margin-right: 0;
+ padding-right: 0;
+}
+
+#tocContainer > ul#toc li.children.open > ul {
+ display: block;
+ height: auto;
+ margin-left: -15px;
+ padding-left: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+ margin-left: 0;
+ padding-left: 15px;
+}
+
+#tocContainer li ul li {
+ margin-top: 0.583em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#tocContainer li ul li span.sectionName {
+ white-space: normal;
+}
+
+#tocContainer > ul#toc > li > ul > li > .sectionName a {
+ font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > ul a {
+ color: #4F4F4F;
+}
+
+/* @end */
+
+/* @group Index formatting */
+
+.index-title {
+ font-size: 13px;
+ font-weight: normal;
+}
+
+.index-column {
+ float: left;
+ width: 30%;
+ min-width: 200px;
+ font-size: 11px;
+}
+
+.index-column ul {
+ margin: 8px 0 0 0;
+ padding: 0;
+ list-style: none;
+}
+
+.index-column ul li {
+ margin: 0 0 3px 0;
+ padding: 0;
+}
+
+.hierarchy-column {
+ min-width: 400px;
+}
+
+.hierarchy-column ul {
+ margin: 3px 0 0 15px;
+}
+
+.hierarchy-column ul li {
+ list-style-type: square;
+}
+
+/* @end */
+
+/* @group Common formatting elements */
+
+.title {
+ font-weight: normal;
+ font-size: 250%;
+ margin-top:0;
+}
+
+.subtitle,
+.index-overview h1 {
+ font-weight: normal;
+ font-size: 180%;
+ color: #3C4C6C;
+ border-bottom: 1px solid #5088C5;
+}
+
+.subsubtitle {
+ font-weight: normal;
+ font-size: 145%;
+ height: 0.7em;
+}
+
+.warning {
+ border: 1px solid #5088C5;
+ background-color: #F0F3F7;
+ margin-bottom: 0.5em;
+ padding: 0em 0.8em;
+}
+
+.bug {
+ border: 1px solid #000;
+ background-color: #ffffcc;
+ margin-bottom: 0.5em;
+ padding: 0em 0.8em;
+}
+
+/* @end */
+
+/* @group Common layout */
+
+.section {
+ margin-top: 3em;
+}
+
+/* @end */
+
+/* @group Object specification section */
+
+.section-specification {
+ margin-left: 2.5em;
+ margin-right: 2.5em;
+ font-size: 12px;
+}
+
+.section-specification table {
+ border-top: 1px solid #d6e0e5;
+}
+
+.section-specification td {
+ vertical-align: top;
+ border-bottom: 1px solid #d6e0e5;
+ padding: .6em;
+}
+
+.section-specification .specification-title {
+ font-weight: bold;
+}
+
+/* @end */
+
+/* @group Tasks section */
+
+.task-list {
+ list-style-type: none;
+ padding-left: 0px;
+}
+
+.task-list li {
+ margin-bottom: 3px;
+}
+
+.task-item-suffix {
+ color: #996;
+ font-size: 12px;
+ font-style: italic;
+ margin-left: 0.5em;
+}
+
+span.tooltip span.tooltip {
+ font-size: 1.0em;
+ display: none;
+ padding: 0.2em 0.3em;
+ border: 1px solid #aaa;
+ background-color: #fdfec8;
+ color: #000;
+ text-align: left;
+}
+
+span.tooltip span.tooltip p {
+ margin: 0.1em 0.3em;
+}
+
+span.tooltip:hover span.tooltip {
+ display: block;
+ position: absolute;
+ margin-left: 2em;
+}
+
+/* @end */
+
+/* @group Method section */
+
+.section-method {
+ margin-top: 2.3em;
+}
+
+.method-title {
+ margin-bottom: 1.5em;
+}
+
+.method-subtitle {
+ margin-top: 0.7em;
+ margin-bottom: 0.2em;
+}
+
+.method-subsection p {
+ margin-top: 0.4em;
+ margin-bottom: 0.8em;
+}
+
+.method-declaration {
+ margin-top:1.182em;
+ margin-bottom:.909em;
+}
+
+.method-declaration code {
+ font:14px Courier, Consolas, monospace;
+ color:#000;
+}
+
+.declaration {
+ color: #000;
+}
+
+.argument-def {
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+}
+
+.argument-def dd {
+ margin-left: 1.25em;
+}
+
+.see-also-section ul {
+ list-style-type: none;
+ padding-left: 0px;
+ margin-top: 0;
+}
+
+.see-also-section li {
+ margin-bottom: 3px;
+}
+
+.see-also-section p {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.declared-in-ref {
+ color: #666;
+}
+
+/* @end */
+
View
28 Templates/html/document-template.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <meta id="xcode-display" name="xcode-display" content="render"/>
+ <meta name="viewport" content="width=550" />
+ <link rel="stylesheet" type="text/css" href="{{page/cssPath}}" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <a title="{{page/title}}" name="top"></a>
+ <div id="container">
+ {{#object/comment}}{{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}{{/object/comment}}
+ </div>
+ </article>
+ </body>
+</html>
+
+
+Section GBCommentComponentsList
+{{#components}}{{>GBCommentComponent}}{{/components}}
+EndSection
+
+Section GBCommentComponent
+{{&htmlValue}}
+EndSection
View
79 Templates/html/hierarchy-template.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <div id="overview_contents" role="main">
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#hasClasses}}
+ <div class="index-column hierarchy-column">
+ <h2 class="index-title">{{strings/hierarchyPage/classesTitle}}</h2>
+ {{>Classes}}
+ </div>
+ {{/hasClasses}}
+
+ {{#hasProtocolsOrCategories}}
+ <div class="index-column">
+ {{#hasProtocols}}
+ <h2 class="index-title">{{strings/hierarchyPage/protocolsTitle}}</h2>
+ <ul>
+ {{#protocols}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/protocols}}
+ </ul>
+ {{/hasProtocols}}
+ {{#hasCategories}}
+ <h2 class="index-title">{{strings/hierarchyPage/categoriesTitle}}</h2>
+ <ul>
+ {{#categories}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/categories}}
+ </ul>
+ {{/hasCategories}}
+ </div>
+ {{/hasProtocolsOrCategories}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+
+ </div>
+ </div>
+ </div>
+ </article>
+ </body>
+</html>
+
+Section Classes
+{{#hasClasses}}
+ <ul>
+ {{#classes}}
+ <li>{{#href}}<a href="{{href}}">{{/href}}{{name}}{{#href}}</a>{{/href}}{{>Classes}}</li>
+ {{/classes}}
+ </ul>
+{{/hasClasses}}
+EndSection
+
+Section Navigation
+<a href="index.html">Previous</a>
+EndSection
View
BIN  Templates/html/img/button_bar_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Templates/html/img/disclosure.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Templates/html/img/disclosure_open.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Templates/html/img/title_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
83 Templates/html/index-template.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <div id="overview_contents" role="main">
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#indexDescription}}
+ <div class="section section-overview index-overview">
+ {{#comment}}
+ {{#hasLongDescription}}
+ {{#longDescription}}{{#components}}{{&htmlValue}}{{/components}}{{/longDescription}}
+ {{/hasLongDescription}}
+ {{/comment}}
+ </div>
+ {{/indexDescription}}
+
+ {{#hasClasses}}
+ <div class="index-column">
+ <h2 class="index-title">{{strings/indexPage/classesTitle}}</h2>
+ <ul>
+ {{#classes}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/classes}}
+ </ul>
+ </div>
+ {{/hasClasses}}
+
+ {{#hasProtocolsOrCategories}}
+ <div class="index-column">
+ {{#hasProtocols}}
+ <h2 class="index-title">{{strings/indexPage/protocolsTitle}}</h2>
+ <ul>
+ {{#protocols}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/protocols}}
+ </ul>
+ {{/hasProtocols}}
+ {{#hasCategories}}
+ <h2 class="index-title">{{strings/indexPage/categoriesTitle}}</h2>
+ <ul>
+ {{#categories}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/categories}}
+ </ul>
+ {{/hasCategories}}
+ </div>
+ {{/hasProtocolsOrCategories}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+
+ </div>
+ </div>
+ </div>
+ </article>
+ </body>
+</html>
+
+Section Navigation
+<a href="hierarchy.html">Next</a>
+EndSection
View
408 Templates/html/object-template.html
@@ -0,0 +1,408 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <meta id="xcode-display" name="xcode-display" content="render"/>
+ <meta name="viewport" content="width=550" />
+ <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <header id="top_header">
+ <div id="title" role="banner">
+ <h1 class="hideInXcode">{{page/title}}</h1>
+ </div>
+ <ul id="headerButtons" role="toolbar">
+ <li id="toc_button">
+ <button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
+ </li>
+ <li id="jumpto_button" role="navigation">
+ {{>JumpTo}}
+ </li>
+ </ul>
+ </header>
+ <nav id="tocContainer" class="isShowingTOC">
+ <ul id="toc" role="tree">
+ {{>TableOfContents}}
+ </ul>
+ </nav>
+ <article>
+ <div id="contents" class="isShowingTOC" role="main">
+ <a title="{{page/title}}" name="top"></a>
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#page/specifications}}
+ {{#used}}<div class="section section-specification"><table cellspacing="0"><tbody>{{/used}}
+ {{#values}}{{>ObjectSpecification}}{{/values}}
+ {{#used}}</tbody></table></div>{{/used}}
+ {{/page/specifications}}
+
+ {{#object/comment}}
+ {{#hasLongDescription}}
+ <div class="section section-overview">
+ <a title="{{strings/objectOverview/title}}" name="overview"></a>
+ <h2 class="subtitle subtitle-overview">{{strings/objectOverview/title}}</h2>
+ {{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}
+ </div>
+ {{/hasLongDescription}}
+ {{/object/comment}}
+
+ {{#object/methods}}
+ {{#hasSections}}
+ <div class="section section-tasks">
+ <a title="{{strings/objectTasks/title}}" name="tasks"></a>
+ <h2 class="subtitle subtitle-tasks">{{strings/objectTasks/title}}</h2>
+ {{#sections}}
+
+ {{#sectionName}}<a title="{{#sectionName}}{{.}}{{/sectionName}}" name="task_{{#sectionName}}{{.}}{{/sectionName}}"></a>{{/sectionName}}
+ {{>TaskTitle}}
+ <ul class="task-list">
+ {{#methods}}{{>TaskMethod}}{{/methods}}
+ </ul>
+ {{/sections}}
+ </div>
+ {{/hasSections}}
+ {{/object/methods}}
+
+ {{#object/methods}}
+ {{#hasProperties}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/propertiesTitle}}" name="properties"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/propertiesTitle}}</h2>
+ {{#properties}}
+ {{>Method}}
+ {{/properties}}
+ </div>
+ {{/hasProperties}}
+
+ {{#hasClassMethods}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/classMethodsTitle}}" name="class_methods"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/classMethodsTitle}}</h2>
+ {{#classMethods}}
+ {{>Method}}
+ {{/classMethods}}
+ </div>
+ {{/hasClassMethods}}
+
+ {{#hasInstanceMethods}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/instanceMethodsTitle}}" name="instance_methods"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/instanceMethodsTitle}}</h2>
+ {{#instanceMethods}}
+ {{>Method}}
+ {{/instanceMethods}}
+ </div>
+ {{/hasInstanceMethods}}
+ {{/object/methods}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+ </div>
+ </div>
+ </div>
+ </article>
+ <script type="text/javascript">
+ function jumpToChange()
+ {
+ window.location.hash = this.options[this.selectedIndex].value;
+ }
+
+ function toggleTOC()
+ {
+ var contents = document.getElementById('contents');
+ var tocContainer = document.getElementById('tocContainer');
+
+ if (this.getAttribute('class') == 'open')
+ {
+ this.setAttribute('class', '');
+ contents.setAttribute('class', '');
+ tocContainer.setAttribute('class', '');
+
+ window.name = "hideTOC";
+ }
+ else
+ {
+ this.setAttribute('class', 'open');
+ contents.setAttribute('class', 'isShowingTOC');
+ tocContainer.setAttribute('class', 'isShowingTOC');
+
+ window.name = "";
+ }
+ return false;
+ }
+
+ function toggleTOCEntryChildren(e)
+ {
+ e.stopPropagation();
+ var currentClass = this.getAttribute('class');
+ if (currentClass == 'children') {
+ this.setAttribute('class', 'children open');
+ }
+ else if (currentClass == 'children open') {
+ this.setAttribute('class', 'children');
+ }
+ return false;
+ }
+
+ function tocEntryClick(e)
+ {
+ e.stopPropagation();
+ return true;
+ }
+
+ function init()
+ {
+ var selectElement = document.getElementById('jumpTo');
+ selectElement.addEventListener('change', jumpToChange, false);
+
+ var tocButton = document.getElementById('table_of_contents');
+ tocButton.addEventListener('click', toggleTOC, false);
+
+ var taskTreeItem = document.getElementById('task_treeitem');
+ if (taskTreeItem.getElementsByTagName('li').length > 0)
+ {
+ taskTreeItem.setAttribute('class', 'children');
+ taskTreeItem.firstChild.setAttribute('class', 'disclosure');
+ }
+
+ var tocList = document.getElementById('toc');
+
+ var tocEntries = tocList.getElementsByTagName('li');
+ for (var i = 0; i < tocEntries.length; i++) {
+ tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
+ }
+
+ var tocLinks = tocList.getElementsByTagName('a');
+ for (var i = 0; i < tocLinks.length; i++) {
+ tocLinks[i].addEventListener('click', tocEntryClick, false);
+ }
+
+ if (window.name == "hideTOC") {
+ toggleTOC.call(tocButton);
+ }
+ }
+
+ window.onload = init;
+ </script>
+ </body>
+</html>
+
+
+Section Method
+<div class="section-method">
+ <a name="{{htmlReferenceName}}" title="{{methodSelector}}"></a>
+ <h3 class="subsubtitle method-title">{{methodSelector}}</h3>
+
+ {{#comment}}
+ {{#hasShortDescription}}
+ <div class="method-subsection brief-description">
+ {{#shortDescription}}{{>GBCommentComponent}}{{/shortDescription}}
+ </div>
+ {{/hasShortDescription}}
+
+ <div class="method-subsection method-declaration"><code>{{>MethodDeclaration}}</code></div>
+
+ {{#hasMethodParameters}}
+ <div class="method-subsection arguments-section parameters">
+ <h4 class="method-subtitle parameter-title">{{strings/objectMethods/parametersTitle}}</h4>
+ {{#methodParameters}}
+ <dl class="argument-def parameter-def">
+ <dt><em>{{argumentName}}</em></dt>
+ <dd>{{#argumentDescription}}{{>GBCommentComponentsList}}{{/argumentDescription}}</dd>
+ </dl>
+ {{/methodParameters}}
+ </div>
+ {{/hasMethodParameters}}
+
+ {{#hasMethodResult}}
+ <div class="method-subsection return">
+ <h4 class="method-subtitle parameter-title">{{strings/objectMethods/resultTitle}}</h4>
+ {{#methodResult}}{{>GBCommentComponentsList}}{{/methodResult}}
+ </div>
+ {{/hasMethodResult}}
+
+ {{#hasLongDescription}}
+ <div class="method-subsection discussion-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/discussionTitle}}</h4>
+ {{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}
+ </div>
+ {{/hasLongDescription}}
+
+ {{#hasMethodExceptions}}
+ <div class="method-subsection arguments-section exceptions">
+ <h4 class="method-subtitle exception-title">{{strings/objectMethods/exceptionsTitle}}</h4>
+ {{#methodExceptions}}
+ <dl class="argument-def exception-def">
+ <dt><em>{{argumentName}}</em></dt>
+ <dd>{{#argumentDescription}}{{>GBCommentComponentsList}}{{/argumentDescription}}</dd>
+ </dl>
+ {{/methodExceptions}}
+ </div>
+ {{/hasMethodExceptions}}
+
+ {{#hasRelatedItems}}
+ <div class="method-subsection see-also-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/seeAlsoTitle}}</h4>
+ <ul>
+ {{#relatedItems/components}}
+ <li><code>{{>GBCommentComponent}}</code></li>
+ {{/relatedItems/components}}
+ </ul>
+ </div>
+ {{/hasRelatedItems}}
+
+ {{#prefferedSourceInfo}}
+ <div class="method-subsection declared-in-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/declaredInTitle}}</h4>
+ <code class="declared-in-ref">{{filename}}</code><br />
+ </div>
+ {{/prefferedSourceInfo}}
+ {{/comment}}
+</div>
+EndSection
+
+Section MethodDeclaration
+{{#formattedComponents}}{{#emphasized}}<em>{{/emphasized}}{{#href}}<a href="{{&href}}">{{/href}}{{value}}{{#href}}</a>{{/href}}{{#emphasized}}</em>{{/emphasized}}{{/formattedComponents}}
+EndSection
+
+
+Section TaskTitle
+{{#hasMultipleSections}}<h3 class="subsubtitle task-title">{{#sectionName}}{{.}}{{/sectionName}}{{^sectionName}}{{strings/objectTasks/otherMethodsSectionName}}{{/sectionName}}</h3>{{/hasMultipleSections}}
+{{^hasMultipleSections}}{{#sectionName}}<h3 class="subsubtitle task-title">{{.}}</h3>{{/sectionName}}{{/hasMultipleSections}}
+EndSection
+
+Section TaskMethod
+<li>
+ <span class="tooltip">
+ <code><a href="{{htmlLocalReference}}">{{>TaskSelector}}</a></code>
+ {{#comment}}{{#hasShortDescription}}<span class="tooltip">{{#shortDescription}}{{>GBCommentComponent}}{{/shortDescription}}</span>{{/hasShortDescription}}{{/comment}}
+ </span>
+ {{#isProperty}}<span class="task-item-suffix">{{strings/objectTasks/property}}</span>{{/isProperty}}
+ {{#isRequired}}<span class="task-item-suffix">{{strings/objectTasks/requiredMethod}}</span>{{/isRequired}}
+</li>
+EndSection
+
+Section TaskSelector
+{{#isInstanceMethod}}&ndash;&nbsp;{{/isInstanceMethod}}{{#isClassMethod}}+&nbsp;{{/isClassMethod}}{{#isProperty}}&nbsp;&nbsp;{{/isProperty}}{{methodSelector}}
+EndSection
+
+
+Section GBCommentComponentsList
+{{#components}}{{>GBCommentComponent}}{{/components}}
+EndSection
+
+Section GBCommentComponent
+{{&htmlValue}}
+EndSection
+
+Section ObjectSpecification
+<tr>
+ <td class="specification-title">{{title}}</td>
+ <td class="specification-value">{{#values}}{{#href}}<a href="{{&href}}">{{/href}}{{string}}{{#href}}</a>{{/href}}{{&delimiter}}{{/values}}</td>
+</tr>
+EndSection
+
+
+Section Navigation
+<ul>
+ <li><a href="../index.html">Index</a></li>
+ <li><a href="../hierarchy.html">Hierarchy</a></li>
+</ul>
+EndSection
+
+Section JumpTo
+<select id="jumpTo">
+ <option value="top">Jump To&#133;</option>
+ {{#object/comment}}
+ <option value="overview">{{strings/objectOverview/title}}</option>
+ {{/object/comment}}
+
+ {{#object/methods}}
+ {{#hasSections}}
+ <option value="tasks">{{strings/objectTasks/title}}</option>
+ {{/hasSections}}
+ {{/object/methods}}
+
+ {{#object/methods}}
+ {{#hasProperties}}
+ <option value="properties">{{strings/objectMethods/propertiesTitle}}</option>
+ {{#properties}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{methodSelector}}</option>
+ {{/properties}}
+ {{/hasProperties}}
+
+ {{#hasClassMethods}}
+ <option value="class_methods">{{strings/objectMethods/classMethodsTitle}}</option>
+ {{#classMethods}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{prefixedMethodSelector}}</option>
+ {{/classMethods}}
+ {{/hasClassMethods}}
+
+ {{#hasInstanceMethods}}
+ <option value="instance_methods">{{strings/objectMethods/instanceMethodsTitle}}</option>
+ {{#instanceMethods}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{prefixedMethodSelector}}</option>
+ {{/instanceMethods}}
+ {{/hasInstanceMethods}}
+ {{/object/methods}}
+</select>
+EndSection
+
+Section TableOfContents
+{{#object/comment}}
+<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">{{strings/objectOverview/title}}</a></span></li>
+{{/object/comment}}
+
+{{#object/methods}}
+{{#hasSections}}
+<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">{{strings/objectTasks/title}}</a></span><ul>
+ {{#sections}}{{#sectionName}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#task_{{#sectionName}}{{.}}{{/sectionName}}">{{#sectionName}}{{.}}{{/sectionName}}</a></span></li>
+ {{/sectionName}}{{/sections}}
+</ul></li>
+{{/hasSections}}
+{{/object/methods}}
+
+{{#object/methods}}
+{{#hasProperties}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">{{strings/objectMethods/propertiesTitle}}</a></span><ul>
+ {{#properties}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/properties}}
+</ul></li>
+{{/hasProperties}}
+
+{{#hasClassMethods}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">{{strings/objectMethods/classMethodsTitle}}</a></span><ul>
+ {{#classMethods}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/classMethods}}
+</ul></li>
+{{/hasClassMethods}}
+
+{{#hasInstanceMethods}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">{{strings/objectMethods/instanceMethodsTitle}}</a></span><ul>
+ {{#instanceMethods}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/instanceMethods}}
+</ul></li>
+{{/hasInstanceMethods}}
+{{/object/methods}}
+EndSection
View
2  build-docset.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+appledoc ./AppledocSettings.plist ./AQAppStateMachine/*.h
Please sign in to comment.
Something went wrong with that request. Please try again.