1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-01-30 05:39:12 +02:00

Improve CONST type macro handling.

Rather than create a CONST_ variant for every type that needs to be returned const, create a FUNCTION_LOG_RETURN_CONST() macro that will return any type as const.
This commit is contained in:
David Steele 2019-01-28 09:44:10 +02:00
parent d29aa61286
commit 7333b6302f
23 changed files with 38 additions and 55 deletions

View File

@ -141,6 +141,10 @@
<p>Rename <code>common/io/handle</code> module to <code>common/io/handleWrite</code>.</p>
</release-item>
<release-item>
<p>Improve <code>CONST</code> type macro handling.</p>
</release-item>
<release-item>
<p>Move <code>MACRO_TO_STR()</code> to <file>common/debug.h</file>.</p>
</release-item>

View File

@ -128,7 +128,7 @@ helpRenderValue(const Variant *value)
result = varStrForce(value);
}
FUNCTION_LOG_RETURN(CONST_STRING, result);
FUNCTION_LOG_RETURN_CONST(STRING, result);
}
/***********************************************************************************************************************************

View File

@ -126,9 +126,9 @@ size_t strzToLog(const char *string, char *buffer, size_t bufferSize);
#define FUNCTION_LOG_CHARP_FORMAT(value, buffer, bufferSize) \
ptrToLog(value, "char *", buffer, bufferSize)
#define FUNCTION_LOG_CONST_CHARPP_TYPE \
const char **
#define FUNCTION_LOG_CONST_CHARPP_FORMAT(value, buffer, bufferSize) \
#define FUNCTION_LOG_CHARPP_TYPE \
char **
#define FUNCTION_LOG_CHARPP_FORMAT(value, buffer, bufferSize) \
ptrToLog(value, "char **", buffer, bufferSize)
#define FUNCTION_LOG_CHARPY_TYPE \
@ -219,11 +219,6 @@ size_t strzToLog(const char *string, char *buffer, size_t bufferSize);
#define FUNCTION_LOG_VOIDP_FORMAT(value, buffer, bufferSize) \
ptrToLog(value, "void *", buffer, bufferSize)
#define FUNCTION_LOG_CONST_VOIDP_TYPE \
const void *
#define FUNCTION_LOG_CONST_VOIDP_FORMAT(value, buffer, bufferSize) \
FUNCTION_LOG_VOIDP_FORMAT(value, buffer, bufferSize)
#define FUNCTION_LOG_VOIDPP_TYPE \
void **
#define FUNCTION_LOG_VOIDPP_FORMAT(value, buffer, bufferSize) \
@ -237,10 +232,10 @@ size_t strzToLog(const char *string, char *buffer, size_t bufferSize);
/***********************************************************************************************************************************
Macros to return function results (or void)
***********************************************************************************************************************************/
#define FUNCTION_LOG_RETURN(typeMacroPrefix, result) \
#define FUNCTION_LOG_RETURN_BASE(typePre, typeMacroPrefix, result) \
do \
{ \
FUNCTION_LOG_##typeMacroPrefix##_TYPE FUNCTION_LOG_RETURN_result = result; \
typePre FUNCTION_LOG_##typeMacroPrefix##_TYPE FUNCTION_LOG_RETURN_result = result; \
\
STACK_TRACE_POP(); \
\
@ -256,6 +251,12 @@ Macros to return function results (or void)
} \
while(0)
#define FUNCTION_LOG_RETURN(typeMacroPrefix, result) \
FUNCTION_LOG_RETURN_BASE(, typeMacroPrefix, result)
#define FUNCTION_LOG_RETURN_CONST(typeMacroPrefix, result) \
FUNCTION_LOG_RETURN_BASE(const, typeMacroPrefix, result)
#define FUNCTION_LOG_RETURN_VOID() \
do \
{ \
@ -294,12 +295,10 @@ test macros are compiled out.
#define FUNCTION_TEST_RETURN(typeMacroPrefix, result) \
do \
{ \
FUNCTION_LOG_##typeMacroPrefix##_TYPE FUNCTION_LOG_RETURN_result = result; \
\
if (stackTraceTest()) \
STACK_TRACE_POP(); \
\
return FUNCTION_LOG_RETURN_result; \
return result; \
} \
while(0);

View File

@ -71,7 +71,7 @@ iniGetInternal(const Ini *this, const String *section, const String *key)
}
MEM_CONTEXT_TEMP_END();
FUNCTION_TEST_RETURN(CONST_VARIANT, result);
FUNCTION_TEST_RETURN(VARIANT, result);
}
/***********************************************************************************************************************************
@ -97,7 +97,7 @@ iniGet(const Ini *this, const String *section, const String *key)
if (result == NULL)
THROW_FMT(FormatError, "section '%s', key '%s' does not exist", strPtr(section), strPtr(key));
FUNCTION_TEST_RETURN(CONST_VARIANT, result);
FUNCTION_TEST_RETURN(VARIANT, result);
}
/***********************************************************************************************************************************
@ -124,7 +124,7 @@ iniGetDefault(const Ini *this, const String *section, const String *key, Variant
if (result == NULL)
result = defaultValue;
FUNCTION_TEST_RETURN(CONST_VARIANT, result);
FUNCTION_TEST_RETURN(VARIANT, result);
}
/***********************************************************************************************************************************

View File

@ -190,5 +190,5 @@ ioFilterType(const IoFilter *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->type);
FUNCTION_TEST_RETURN(STRING, this->type);
}

View File

@ -412,7 +412,7 @@ ioFilterGroupResult(const IoFilterGroup *this, const String *filterType)
}
MEM_CONTEXT_TEMP_END();
FUNCTION_LOG_RETURN(CONST_VARIANT, result);
FUNCTION_LOG_RETURN_CONST(VARIANT, result);
}
/***********************************************************************************************************************************

View File

@ -134,11 +134,6 @@ Macros for function logging
***********************************************************************************************************************************/
String *strToLog(const String *this);
#define FUNCTION_LOG_CONST_STRING_TYPE \
const String *
#define FUNCTION_LOG_CONST_STRING_FORMAT(value, buffer, bufferSize) \
FUNCTION_LOG_STRING_FORMAT(value, buffer, bufferSize)
#define FUNCTION_LOG_STRING_TYPE \
String *
#define FUNCTION_LOG_STRING_FORMAT(value, buffer, bufferSize) \

View File

@ -509,7 +509,7 @@ strLstPtr(const StringList *this)
list[strLstSize(this)] = NULL;
FUNCTION_TEST_RETURN(CONST_CHARPP, list);
FUNCTION_TEST_RETURN(CHARPP, list);
}
/***********************************************************************************************************************************

View File

@ -89,11 +89,6 @@ Macros for function logging
***********************************************************************************************************************************/
String *varToLog(const Variant *this);
#define FUNCTION_LOG_CONST_VARIANT_TYPE \
const FUNCTION_LOG_VARIANT_TYPE
#define FUNCTION_LOG_CONST_VARIANT_FORMAT(value, buffer, bufferSize) \
FUNCTION_LOG_VARIANT_FORMAT(value, buffer, bufferSize)
#define FUNCTION_LOG_VARIANT_TYPE \
Variant *
#define FUNCTION_LOG_VARIANT_FORMAT(value, buffer, bufferSize) \

View File

@ -32,9 +32,4 @@ Macros for function logging
#define FUNCTION_LOG_VARIANT_LIST_FORMAT(value, buffer, bufferSize) \
objToLog(value, "VariantList", buffer, bufferSize)
#define FUNCTION_LOG_CONST_VARIANT_LIST_TYPE \
const VariantList *
#define FUNCTION_LOG_CONST_VARIANT_LIST_FORMAT(value, buffer, bufferSize) \
objToLog(value, "VariantList", buffer, bufferSize)
#endif

View File

@ -763,7 +763,7 @@ cfgOptionStr(ConfigOption optionId)
if (configOptionValue[optionId].value != NULL)
result = varStr(configOptionValue[optionId].value);
FUNCTION_LOG_RETURN(CONST_STRING, result);
FUNCTION_LOG_RETURN_CONST(STRING, result);
}
void

View File

@ -90,7 +90,7 @@ cipherTypeName(CipherType type)
else if (type != cipherTypeNone)
THROW_FMT(AssertError, "invalid cipher type %u", type);
FUNCTION_TEST_RETURN(CONST_STRING, result);
FUNCTION_TEST_RETURN(STRING, result);
}
/***********************************************************************************************************************************

View File

@ -279,7 +279,7 @@ infoCipherPass(const Info *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->cipherPass);
FUNCTION_TEST_RETURN(STRING, this->cipherPass);
}
Ini *

View File

@ -206,7 +206,7 @@ infoArchiveCipherPass(const InfoArchive *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, infoPgCipherPass(this->infoPg));
FUNCTION_TEST_RETURN(STRING, infoPgCipherPass(this->infoPg));
}
/***********************************************************************************************************************************

View File

@ -179,7 +179,7 @@ infoPgCipherPass(const InfoPg *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, infoCipherPass(this->info));
FUNCTION_TEST_RETURN(STRING, infoCipherPass(this->info));
}
/***********************************************************************************************************************************

View File

@ -170,7 +170,7 @@ protocolClientReadOutput(ProtocolClient *this, bool outputRequired)
}
MEM_CONTEXT_TEMP_END();
FUNCTION_LOG_RETURN(CONST_VARIANT_LIST, result);
FUNCTION_LOG_RETURN_CONST(VARIANT_LIST, result);
}
/***********************************************************************************************************************************
@ -214,7 +214,7 @@ protocolClientExecute(ProtocolClient *this, const KeyValue *command, bool output
protocolClientWriteCommand(this, command);
FUNCTION_LOG_RETURN(CONST_VARIANT_LIST, protocolClientReadOutput(this, outputRequired));
FUNCTION_LOG_RETURN_CONST(VARIANT_LIST, protocolClientReadOutput(this, outputRequired));
}
/***********************************************************************************************************************************

View File

@ -234,7 +234,7 @@ storageDriverPosixFileReadName(const StorageDriverPosixFileRead *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->name);
FUNCTION_TEST_RETURN(STRING, this->name);
}
/***********************************************************************************************************************************

View File

@ -307,7 +307,7 @@ storageDriverPosixFileWriteName(const StorageDriverPosixFileWrite *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->name);
FUNCTION_TEST_RETURN(STRING, this->name);
}
/***********************************************************************************************************************************

View File

@ -65,9 +65,4 @@ Macros for function logging
#define FUNCTION_LOG_STORAGE_DRIVER_POSIX_FORMAT(value, buffer, bufferSize) \
objToLog(value, "StorageDriverPosix", buffer, bufferSize)
#define FUNCTION_LOG_CONST_STORAGE_DRIVER_POSIX_TYPE \
const StorageDriverPosix *
#define FUNCTION_LOG_CONST_STORAGE_DRIVER_POSIX_FORMAT(value, buffer, bufferSize) \
objToLog(value, "StorageDriverPosix", buffer, bufferSize)
#endif

View File

@ -303,5 +303,5 @@ storageDriverRemoteFileReadName(const StorageDriverRemoteFileRead *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->name);
FUNCTION_TEST_RETURN(STRING, this->name);
}

View File

@ -189,5 +189,5 @@ storageDriverS3FileReadName(const StorageDriverS3FileRead *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->name);
FUNCTION_TEST_RETURN(STRING, this->name);
}

View File

@ -122,7 +122,7 @@ storageFileReadName(const StorageFileRead *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->interface.name(this->driver));
FUNCTION_TEST_RETURN(STRING, this->interface.name(this->driver));
}
/***********************************************************************************************************************************
@ -137,7 +137,7 @@ storageFileReadType(const StorageFileRead *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->type);
FUNCTION_TEST_RETURN(STRING, this->type);
}
/***********************************************************************************************************************************

View File

@ -176,7 +176,7 @@ storageFileWriteName(const StorageFileWrite *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->interface.name(this->driver));
FUNCTION_TEST_RETURN(STRING, this->interface.name(this->driver));
}
/***********************************************************************************************************************************
@ -221,7 +221,7 @@ storageFileWriteType(const StorageFileWrite *this)
ASSERT(this != NULL);
FUNCTION_TEST_RETURN(CONST_STRING, this->type);
FUNCTION_TEST_RETURN(STRING, this->type);
}
/***********************************************************************************************************************************