@protocol Order2_ConsistentBaseProto - (void)consistent; @end @protocol Order4_ConsistentBaseProto - (void)consistent; @end @protocol Order1_FickleBaseProto - (void)fickle; @optional - (void)extraFickle; @end @protocol Order3_FickleBaseProto - (void)fickle; @optional - (void)extraFickle; @end @protocol Order5_FickleBaseProto - (void)fickle; @optional - (void)extraFickle; @end // The actual order here is determined by the protocol names. #if EXTRA_PROTOCOL_FIRST @protocol SubProto @end #elif EXTRA_PROTOCOL_MIDDLE @protocol SubProto @end #elif EXTRA_PROTOCOL_LAST @protocol SubProto @end #elif NO_EXTRA_PROTOCOLS @protocol SubProto @end #else # error "Missing -D flag" #endif