FrT;@1|>>0|$15|HeaderDoc::Test%26|$4|CODE$7|COMMENT$7|CPPCODE$15|EXPECTED_RESULT$23|EXPECTED_RESULT_ALLDECS$7|FAILMSG$8|FILENAME$4|LANG$4|NAME$6|RESULT$14|RESULT_ALLDECS$7|SUBLANG$4|TYPE$513|#if CP_LOG_RECYCLED_ERRORS #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CPPrintRecycledError((error)); \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) #else // CP_LOG_RECYCLED_ERRORS #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) #endif // CP_LOG_RECYCLED_ERRORS $915|/*! @function CPReuseError * @abstract Convenience macro to release the existing CFError instance, if there is one, and return the freshly-nullified error by address. @discussion You would use this function if you wish to reuse the same CFErrorRef declaration for multiple function s; simply pass the result of this macro for the CFErrorRef * parameter and it'll ensure any existing value will be cleared before the function is invoked, preventing memory leaks. * If the compile-time constant CP_LOG_RECYCLED_ERRORS is defined and true, any existing errors will be logged before being released and cleared. This ensures errors don't slip through the cracks, but it can of course violate function co ntracts with regards to logging behaviour, so it must be used carefully (and is thus not the * default behaviour). * @param error The CFErrorRef to reuse. */ $0|$28605|-=: TOP LEVEL COMMENT PARSE VALUES :=- inHeader: 0 inClass: 0 inInterface: 0 inCPPHeader: 0 inOCCHeader: 0 inPerlScript: 0 inShellScript: 0 inPHPScript: 0 inJavaSource: 0 inFunctionGroup: 0 inGroup: 0 inFunction: 1 inPDefine: 0 inTypedef: 0 inUnion: 0 inStruct: 0 inConstant: 0 inVar: 0 inEnum: 0 inMethod: 0 inAvailabilityMacro: 0 inUnknown: 0 classType: unknown inputCounter: 0 blockOffset: 0 fullpath: /test_suite_bogus_path/define_block_4.test -=: BLOCKPARSE PARSER STATE KEYS :=- $parserState->{FULLPATH} => /test_suite_bogus_path/define_block_4.test $parserState->{NEXTTOKENNOCPP} => 0 $parserState->{availability} => $parserState->{backslashcount} => 0 $parserState->{basetype} => $parserState->{bracePending} => 0 $parserState->{callbackIsTypedef} => 0 $parserState->{callbackName} => $parserState->{callbackNamePending} => 0 $parserState->{categoryClass} => $parserState->{classtype} => $parserState->{freezeStack} => ARRAY(OBJID) $parserState->{freezereturn} => 0 $parserState->{frozensodname} => $parserState->{functionReturnsCallback} => 0 $parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{inBrackets} => 0 $parserState->{inChar} => 0 $parserState->{inClass} => 0 $parserState->{inComment} => 0 $parserState->{inInlineComment} => 0 $parserState->{inMacro} => 4 $parserState->{inMacroLine} => 0 $parserState->{inOperator} => 0 $parserState->{inPrivateParamTypes} => 0 $parserState->{inString} => 0 $parserState->{inTemplate} => 0 $parserState->{initbsCount} => 0 $parserState->{inputCounter} => 1 $parserState->{kr_c_function} => 0 $parserState->{kr_c_name} => $parserState->{lang} => C $parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{lastsymbol} => CP_LOG_RECYCLED_ERRORS $parserState->{macroNoTrunc} => 1 $parserState->{name} => $parserState->{namePending} => 0 $parserState->{noInsert} => 0 $parserState->{occmethod} => 0 $parserState->{occmethodname} => $parserState->{occparmlabelfound} => 2 $parserState->{onlyComments} => 0 $parserState->{parsedParamList} => ARRAY(OBJID) $parserState->{parsedParamParse} => 0 $parserState->{posstypes} => $parserState->{posstypesPending} => 1 $parserState->{pplStack} => ARRAY(OBJID) $parserState->{preEqualsSymbol} => $parserState->{preTemplateSymbol} => $parserState->{returntype} => #if CP_LOG_RECYCLED_ERRORS $parserState->{seenBraces} => 0 $parserState->{seenMacroPart} => 1 $parserState->{seenTilde} => 0 $parserState->{simpleTDcontents} => $parserState->{simpleTypedef} => 0 $parserState->{sodclass} => $parserState->{sodname} => $parserState->{sodtype} => $parserState->{stackFrozen} => 0 $parserState->{startOfDec} => 1 $parserState->{typestring} => # $parserState->{value} => $parserState->{valuepending} => 0 -=: BLOCKPARSE RETURN VALUES :=- newcount: 1 typelist: MACRO namelist: CP_LOG_RECYCLED_ERRORS posstypes: MACRO value: returntype: #if CP_LOG_RECYCLED_ERRORS pridec: simpleTDcontents: bpavail: blockOffset: 0 conformsToList: functionContents: extendsClass: implementsClass: -=: LIST OF PARSED PARAMETERS :=- -=: DUMP OF PARSE TREE :=- +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] -=: COMPUTED VALUE :=- SUCCESS: 0 VALUE: 0 -=: CPP CHANGES :=- NO CPP CHANGES -=: FOUND MATCH :=- 1 -=: NAMED OBJECTS :=- TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::Header NAME: define block 4 APIUID: //test_ref/doc/header/define_block_4.test ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::Header" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 5 INDEX GROUP: IS BLOCK: 1 IS AVAILABILITY MACRO: PARSE ONLY: OBJECT TYPE: HeaderDoc::PDefine NAME: CPReuseError APIUID: //test_ref/c/macro/CPReuseError ABSTRACT: "

Convenience macro to release the existing CFError instance, if there is one, and return the freshly-nullified error by address. " DISCUSSION: "

You would use this function if you wish to reuse the same CFErrorRef declaration for multiple function s; simply pass the result of this macro for the CFErrorRef * parameter and it'll ensure any existing value will be cleared before the function is invoked, preventing memory leaks. * If the compile-time constant CP_LOG_RECYCLED_ERRORS is defined and true, any existing errors will be logged before being released and cleared. This ensures errors don't slip through the cracks, but it can of course violate function co ntracts with regards to logging behaviour, so it must be used carefully (and is thus not the * default behaviour). * " UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "default_function_group" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::PDefine" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "0" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

PARSED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TAGGED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

The CFErrorRef to reuse." UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

-=: NAMED OBJECT PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CPPrintRecycledError | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#else | +--- | +---// | | +--- | | +---CP_LOG_RECYCLED_ERRORS | | +---[ NEWLINE ] | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#endif | +---[ NEWLINE ] +--- +---// | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT -=: HTML OUTPUT OF PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) #if CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CPPrintRecycledError((error)); \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #else // CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #endif // CP_LOG_RECYCLED_ERRORS END OF OBJECT $28605|-=: TOP LEVEL COMMENT PARSE VALUES :=- inHeader: 0 inClass: 0 inInterface: 0 inCPPHeader: 0 inOCCHeader: 0 inPerlScript: 0 inShellScript: 0 inPHPScript: 0 inJavaSource: 0 inFunctionGroup: 0 inGroup: 0 inFunction: 1 inPDefine: 0 inTypedef: 0 inUnion: 0 inStruct: 0 inConstant: 0 inVar: 0 inEnum: 0 inMethod: 0 inAvailabilityMacro: 0 inUnknown: 0 classType: unknown inputCounter: 0 blockOffset: 0 fullpath: /test_suite_bogus_path/define_block_4.test -=: BLOCKPARSE PARSER STATE KEYS :=- $parserState->{FULLPATH} => /test_suite_bogus_path/define_block_4.test $parserState->{NEXTTOKENNOCPP} => 0 $parserState->{availability} => $parserState->{backslashcount} => 0 $parserState->{basetype} => $parserState->{bracePending} => 0 $parserState->{callbackIsTypedef} => 0 $parserState->{callbackName} => $parserState->{callbackNamePending} => 0 $parserState->{categoryClass} => $parserState->{classtype} => $parserState->{freezeStack} => ARRAY(OBJID) $parserState->{freezereturn} => 0 $parserState->{frozensodname} => $parserState->{functionReturnsCallback} => 0 $parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{inBrackets} => 0 $parserState->{inChar} => 0 $parserState->{inClass} => 0 $parserState->{inComment} => 0 $parserState->{inInlineComment} => 0 $parserState->{inMacro} => 4 $parserState->{inMacroLine} => 0 $parserState->{inOperator} => 0 $parserState->{inPrivateParamTypes} => 0 $parserState->{inString} => 0 $parserState->{inTemplate} => 0 $parserState->{initbsCount} => 0 $parserState->{inputCounter} => 1 $parserState->{kr_c_function} => 0 $parserState->{kr_c_name} => $parserState->{lang} => C $parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{lastsymbol} => CP_LOG_RECYCLED_ERRORS $parserState->{macroNoTrunc} => 1 $parserState->{name} => $parserState->{namePending} => 0 $parserState->{noInsert} => 0 $parserState->{occmethod} => 0 $parserState->{occmethodname} => $parserState->{occparmlabelfound} => 2 $parserState->{onlyComments} => 0 $parserState->{parsedParamList} => ARRAY(OBJID) $parserState->{parsedParamParse} => 0 $parserState->{posstypes} => $parserState->{posstypesPending} => 1 $parserState->{pplStack} => ARRAY(OBJID) $parserState->{preEqualsSymbol} => $parserState->{preTemplateSymbol} => $parserState->{returntype} => #if CP_LOG_RECYCLED_ERRORS $parserState->{seenBraces} => 0 $parserState->{seenMacroPart} => 1 $parserState->{seenTilde} => 0 $parserState->{simpleTDcontents} => $parserState->{simpleTypedef} => 0 $parserState->{sodclass} => $parserState->{sodname} => $parserState->{sodtype} => $parserState->{stackFrozen} => 0 $parserState->{startOfDec} => 1 $parserState->{typestring} => # $parserState->{value} => $parserState->{valuepending} => 0 -=: BLOCKPARSE RETURN VALUES :=- newcount: 1 typelist: MACRO namelist: CP_LOG_RECYCLED_ERRORS posstypes: MACRO value: returntype: #if CP_LOG_RECYCLED_ERRORS pridec: simpleTDcontents: bpavail: blockOffset: 0 conformsToList: functionContents: extendsClass: implementsClass: -=: LIST OF PARSED PARAMETERS :=- -=: DUMP OF PARSE TREE :=- +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] -=: COMPUTED VALUE :=- SUCCESS: 0 VALUE: 0 -=: CPP CHANGES :=- NO CPP CHANGES -=: FOUND MATCH :=- 1 -=: NAMED OBJECTS :=- TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::Header NAME: define block 4 APIUID: //test_ref/doc/header/define_block_4.test ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::Header" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 5 INDEX GROUP: IS BLOCK: 1 IS AVAILABILITY MACRO: PARSE ONLY: OBJECT TYPE: HeaderDoc::PDefine NAME: CPReuseError APIUID: //test_ref/c/macro/CPReuseError ABSTRACT: "

Convenience macro to release the existing CFError instance, if there is one, and return the freshly-nullified error by address. " DISCUSSION: "

You would use this function if you wish to reuse the same CFErrorRef declaration for multiple function s; simply pass the result of this macro for the CFErrorRef * parameter and it'll ensure any existing value will be cleared before the function is invoked, preventing memory leaks. * If the compile-time constant CP_LOG_RECYCLED_ERRORS is defined and true, any existing errors will be logged before being released and cleared. This ensures errors don't slip through the cracks, but it can of course violate function co ntracts with regards to logging behaviour, so it must be used carefully (and is thus not the * default behaviour). * " UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "default_function_group" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::PDefine" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "0" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

PARSED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TAGGED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

The CFErrorRef to reuse." UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

-=: NAMED OBJECT PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CPPrintRecycledError | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#else | +--- | +---// | | +--- | | +---CP_LOG_RECYCLED_ERRORS | | +---[ NEWLINE ] | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#endif | +---[ NEWLINE ] +--- +---// | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT -=: HTML OUTPUT OF PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) #if CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CPPrintRecycledError((error)); \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #else // CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #endif // CP_LOG_RECYCLED_ERRORS END OF OBJECT $241|This abusively tests what happens if you use the @function tag for an implicit block of #define macros (wrapped in a #if statement). If this breaks, something is probably wrong with name handling and object creation in blockParseOutside(). $19|define_block_4.test$1|C$14|define block 4$28605|-=: TOP LEVEL COMMENT PARSE VALUES :=- inHeader: 0 inClass: 0 inInterface: 0 inCPPHeader: 0 inOCCHeader: 0 inPerlScript: 0 inShellScript: 0 inPHPScript: 0 inJavaSource: 0 inFunctionGroup: 0 inGroup: 0 inFunction: 1 inPDefine: 0 inTypedef: 0 inUnion: 0 inStruct: 0 inConstant: 0 inVar: 0 inEnum: 0 inMethod: 0 inAvailabilityMacro: 0 inUnknown: 0 classType: unknown inputCounter: 0 blockOffset: 0 fullpath: /test_suite_bogus_path/define_block_4.test -=: BLOCKPARSE PARSER STATE KEYS :=- $parserState->{FULLPATH} => /test_suite_bogus_path/define_block_4.test $parserState->{NEXTTOKENNOCPP} => 0 $parserState->{availability} => $parserState->{backslashcount} => 0 $parserState->{basetype} => $parserState->{bracePending} => 0 $parserState->{callbackIsTypedef} => 0 $parserState->{callbackName} => $parserState->{callbackNamePending} => 0 $parserState->{categoryClass} => $parserState->{classtype} => $parserState->{freezeStack} => ARRAY(OBJID) $parserState->{freezereturn} => 0 $parserState->{frozensodname} => $parserState->{functionReturnsCallback} => 0 $parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{inBrackets} => 0 $parserState->{inChar} => 0 $parserState->{inClass} => 0 $parserState->{inComment} => 0 $parserState->{inInlineComment} => 0 $parserState->{inMacro} => 4 $parserState->{inMacroLine} => 0 $parserState->{inOperator} => 0 $parserState->{inPrivateParamTypes} => 0 $parserState->{inString} => 0 $parserState->{inTemplate} => 0 $parserState->{initbsCount} => 0 $parserState->{inputCounter} => 1 $parserState->{kr_c_function} => 0 $parserState->{kr_c_name} => $parserState->{lang} => C $parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{lastsymbol} => CP_LOG_RECYCLED_ERRORS $parserState->{macroNoTrunc} => 1 $parserState->{name} => $parserState->{namePending} => 0 $parserState->{noInsert} => 0 $parserState->{occmethod} => 0 $parserState->{occmethodname} => $parserState->{occparmlabelfound} => 2 $parserState->{onlyComments} => 0 $parserState->{parsedParamList} => ARRAY(OBJID) $parserState->{parsedParamParse} => 0 $parserState->{posstypes} => $parserState->{posstypesPending} => 1 $parserState->{pplStack} => ARRAY(OBJID) $parserState->{preEqualsSymbol} => $parserState->{preTemplateSymbol} => $parserState->{returntype} => #if CP_LOG_RECYCLED_ERRORS $parserState->{seenBraces} => 0 $parserState->{seenMacroPart} => 1 $parserState->{seenTilde} => 0 $parserState->{simpleTDcontents} => $parserState->{simpleTypedef} => 0 $parserState->{sodclass} => $parserState->{sodname} => $parserState->{sodtype} => $parserState->{stackFrozen} => 0 $parserState->{startOfDec} => 1 $parserState->{typestring} => # $parserState->{value} => $parserState->{valuepending} => 0 -=: BLOCKPARSE RETURN VALUES :=- newcount: 1 typelist: MACRO namelist: CP_LOG_RECYCLED_ERRORS posstypes: MACRO value: returntype: #if CP_LOG_RECYCLED_ERRORS pridec: simpleTDcontents: bpavail: blockOffset: 0 conformsToList: functionContents: extendsClass: implementsClass: -=: LIST OF PARSED PARAMETERS :=- -=: DUMP OF PARSE TREE :=- +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] -=: COMPUTED VALUE :=- SUCCESS: 0 VALUE: 0 -=: CPP CHANGES :=- NO CPP CHANGES -=: FOUND MATCH :=- 1 -=: NAMED OBJECTS :=- TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::Header NAME: define block 4 APIUID: //test_ref/doc/header/define_block_4.test ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::Header" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 5 INDEX GROUP: IS BLOCK: 1 IS AVAILABILITY MACRO: PARSE ONLY: OBJECT TYPE: HeaderDoc::PDefine NAME: CPReuseError APIUID: //test_ref/c/macro/CPReuseError ABSTRACT: "

Convenience macro to release the existing CFError instance, if there is one, and return the freshly-nullified error by address. " DISCUSSION: "

You would use this function if you wish to reuse the same CFErrorRef declaration for multiple function s; simply pass the result of this macro for the CFErrorRef * parameter and it'll ensure any existing value will be cleared before the function is invoked, preventing memory leaks. * If the compile-time constant CP_LOG_RECYCLED_ERRORS is defined and true, any existing errors will be logged before being released and cleared. This ensures errors don't slip through the cracks, but it can of course violate function co ntracts with regards to logging behaviour, so it must be used carefully (and is thus not the * default behaviour). * " UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "default_function_group" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::PDefine" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "0" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

PARSED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TAGGED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

The CFErrorRef to reuse." UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

-=: NAMED OBJECT PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CPPrintRecycledError | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#else | +--- | +---// | | +--- | | +---CP_LOG_RECYCLED_ERRORS | | +---[ NEWLINE ] | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#endif | +---[ NEWLINE ] +--- +---// | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT -=: HTML OUTPUT OF PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) #if CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CPPrintRecycledError((error)); \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #else // CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #endif // CP_LOG_RECYCLED_ERRORS END OF OBJECT $28605|-=: TOP LEVEL COMMENT PARSE VALUES :=- inHeader: 0 inClass: 0 inInterface: 0 inCPPHeader: 0 inOCCHeader: 0 inPerlScript: 0 inShellScript: 0 inPHPScript: 0 inJavaSource: 0 inFunctionGroup: 0 inGroup: 0 inFunction: 1 inPDefine: 0 inTypedef: 0 inUnion: 0 inStruct: 0 inConstant: 0 inVar: 0 inEnum: 0 inMethod: 0 inAvailabilityMacro: 0 inUnknown: 0 classType: unknown inputCounter: 0 blockOffset: 0 fullpath: /test_suite_bogus_path/define_block_4.test -=: BLOCKPARSE PARSER STATE KEYS :=- $parserState->{FULLPATH} => /test_suite_bogus_path/define_block_4.test $parserState->{NEXTTOKENNOCPP} => 0 $parserState->{availability} => $parserState->{backslashcount} => 0 $parserState->{basetype} => $parserState->{bracePending} => 0 $parserState->{callbackIsTypedef} => 0 $parserState->{callbackName} => $parserState->{callbackNamePending} => 0 $parserState->{categoryClass} => $parserState->{classtype} => $parserState->{freezeStack} => ARRAY(OBJID) $parserState->{freezereturn} => 0 $parserState->{frozensodname} => $parserState->{functionReturnsCallback} => 0 $parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{inBrackets} => 0 $parserState->{inChar} => 0 $parserState->{inClass} => 0 $parserState->{inComment} => 0 $parserState->{inInlineComment} => 0 $parserState->{inMacro} => 4 $parserState->{inMacroLine} => 0 $parserState->{inOperator} => 0 $parserState->{inPrivateParamTypes} => 0 $parserState->{inString} => 0 $parserState->{inTemplate} => 0 $parserState->{initbsCount} => 0 $parserState->{inputCounter} => 1 $parserState->{kr_c_function} => 0 $parserState->{kr_c_name} => $parserState->{lang} => C $parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID) $parserState->{lastsymbol} => CP_LOG_RECYCLED_ERRORS $parserState->{macroNoTrunc} => 1 $parserState->{name} => $parserState->{namePending} => 0 $parserState->{noInsert} => 0 $parserState->{occmethod} => 0 $parserState->{occmethodname} => $parserState->{occparmlabelfound} => 2 $parserState->{onlyComments} => 0 $parserState->{parsedParamList} => ARRAY(OBJID) $parserState->{parsedParamParse} => 0 $parserState->{posstypes} => $parserState->{posstypesPending} => 1 $parserState->{pplStack} => ARRAY(OBJID) $parserState->{preEqualsSymbol} => $parserState->{preTemplateSymbol} => $parserState->{returntype} => #if CP_LOG_RECYCLED_ERRORS $parserState->{seenBraces} => 0 $parserState->{seenMacroPart} => 1 $parserState->{seenTilde} => 0 $parserState->{simpleTDcontents} => $parserState->{simpleTypedef} => 0 $parserState->{sodclass} => $parserState->{sodname} => $parserState->{sodtype} => $parserState->{stackFrozen} => 0 $parserState->{startOfDec} => 1 $parserState->{typestring} => # $parserState->{value} => $parserState->{valuepending} => 0 -=: BLOCKPARSE RETURN VALUES :=- newcount: 1 typelist: MACRO namelist: CP_LOG_RECYCLED_ERRORS posstypes: MACRO value: returntype: #if CP_LOG_RECYCLED_ERRORS pridec: simpleTDcontents: bpavail: blockOffset: 0 conformsToList: functionContents: extendsClass: implementsClass: -=: LIST OF PARSED PARAMETERS :=- -=: DUMP OF PARSE TREE :=- +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] -=: COMPUTED VALUE :=- SUCCESS: 0 VALUE: 0 -=: CPP CHANGES :=- NO CPP CHANGES -=: FOUND MATCH :=- 1 -=: NAMED OBJECTS :=- TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::Header NAME: define block 4 APIUID: //test_ref/doc/header/define_block_4.test ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::Header" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 5 INDEX GROUP: IS BLOCK: 1 IS AVAILABILITY MACRO: PARSE ONLY: OBJECT TYPE: HeaderDoc::PDefine NAME: CPReuseError APIUID: //test_ref/c/macro/CPReuseError ABSTRACT: "

Convenience macro to release the existing CFError instance, if there is one, and return the freshly-nullified error by address. " DISCUSSION: "

You would use this function if you wish to reuse the same CFErrorRef declaration for multiple function s; simply pass the result of this macro for the CFErrorRef * parameter and it'll ensure any existing value will be cleared before the function is invoked, preventing memory leaks. * If the compile-time constant CP_LOG_RECYCLED_ERRORS is defined and true, any existing errors will be logged before being released and cleared. This ensures errors don't slip through the cracks, but it can of course violate function co ntracts with regards to logging behaviour, so it must be used carefully (and is thus not the * default behaviour). * " UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "default_function_group" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::PDefine" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "0" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

PARSED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

" UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

TAGGED PARAMETERS: TREE COUNT: 0 INDEX GROUP: IS BLOCK: OBJECT TYPE: HeaderDoc::MinorAPIElement NAME: error TYPE: APIUID: ABSTRACT: "" DISCUSSION: "

The CFErrorRef to reuse." UPDATED: "" COPYRIGHT: "" HTMLMETA: "" PRIVATEDECLARATION: "" GROUP: "" INDEXGROUP: "" THROWS: "" XMLTHROWS: "" UPDATED: "" LINKAGESTATE: "" ACCESSCONTROL: "" AVAILABILITY: "" LINKUID: "" ORIGCLASS: "" ISDEFINE: "" ISTEMPLATE: "" VALUE: "UNKNOWN" RETURNTYPE: "" LINENUM: "" CLASS: "HeaderDoc::MinorAPIElement" MASTERENUM: "" APIREFSETUPDONE: "1" TPCDONE: "" NOREGISTERUID: "" SUPPRESSCHILDREN: "" NAMELINE_DISCUSSION: "" HIDEDOC: "" HIDESINGLETONS: "" HIDECONTENTS: "" MAINOBJECT: "" LIST ATTRIBUTES: SHORT ATTRIBUTES:

LONG ATTRIBUTES:

-=: NAMED OBJECT PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) +---#if | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#define | +--- | +---CPReuseError | +---( | +---error | +---) | +--- | +---( | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---if | +--- | +---( | +---NULL | +--- | +---!= | +--- | +---( | +---error | +---) | +---) | +--- | +---{ | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CPPrintRecycledError | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---CFRelease | +---( | +---( | +---error | +---) | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---( | +---error | +---) | +--- | +---= | +--- | +---NULL | +---; | +--- | +---\ | +---[ NEWLINE ] | +--- | +---} | +--- | +---\ | +---[ NEWLINE ] | +--- | +---/* | | +--- | | +---return | | +---*/ | +--- | +---& | +---( | +---error | +---) | +---; | +--- | +---\ | +---[ NEWLINE ] | +---} | +---) | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#else | +--- | +---// | | +--- | | +---CP_LOG_RECYCLED_ERRORS | | +---[ NEWLINE ] | +---[ NEWLINE ] END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) +---#endif | +---[ NEWLINE ] +--- +---// | +--- | +---CP_LOG_RECYCLED_ERRORS | +---[ NEWLINE ] END OF OBJECT -=: HTML OUTPUT OF PARSE TREES :=- OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::Function) #if CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #define CPReuseError(error) ({ \ if (NULL != (error)) { \ CPPrintRecycledError((error)); \ CFRelease((error)); \ (error) = NULL; \ } \ /* return */ &(error); \ }) END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #else // CP_LOG_RECYCLED_ERRORS END OF OBJECT OBJECT: CPReuseError (HeaderDoc::PDefine) #endif // CP_LOG_RECYCLED_ERRORS END OF OBJECT $1|C$6|parser