diff --git a/CODING.md b/CODING.md
index 7ab1cc194..4745d5473 100644
--- a/CODING.md
+++ b/CODING.md
@@ -218,7 +218,7 @@ typedef struct ListPub
} ListPub;
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
lstSize(const List *const this)
{
return THIS_PUB(List)->listSize;
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d244cf46d..60d364cbc 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -91,14 +91,14 @@ typedef struct MyObjPub // First letter upper case
// Declare getters and setters inline for the publicly visible variables
// Only setters require "Set" appended to the name
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
myObjMyData(const MyObj *const this)
{
return THIS_PUB(MyObj)->myData; // Use the built-in THIS_PUB macro
}
// Destructor
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
myObjFree(MyObj *const this)
{
objFree(this);
diff --git a/doc/xml/coding.xml b/doc/xml/coding.xml
index 19239dbd3..3f069157f 100644
--- a/doc/xml/coding.xml
+++ b/doc/xml/coding.xml
@@ -300,7 +300,7 @@ typedef struct ListPub
} ListPub;
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
lstSize(const List *const this)
{
return THIS_PUB(List)->listSize;
diff --git a/doc/xml/contributing.xml b/doc/xml/contributing.xml
index b9e58c095..824fb9ac2 100644
--- a/doc/xml/contributing.xml
+++ b/doc/xml/contributing.xml
@@ -197,14 +197,14 @@ typedef struct MyObjPub // First letter upper case
// Declare getters and setters inline for the publicly visible variables
// Only setters require "Set" appended to the name
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
myObjMyData(const MyObj *const this)
{
return THIS_PUB(MyObj)->myData; // Use the built-in THIS_PUB macro
}
// Destructor
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
myObjFree(MyObj *const this)
{
objFree(this);
diff --git a/doc/xml/release.xml b/doc/xml/release.xml
index 882665391..437ac067a 100644
--- a/doc/xml/release.xml
+++ b/doc/xml/release.xml
@@ -120,6 +120,18 @@
Do not allow CATCH()
to catch a fatal error.
+
+
+
+
+
+
+
+
+
+
+ Add FN_INLINE_ALWAYS
macro.
+
diff --git a/meson.build b/meson.build
index fca4b39e0..8a754730b 100644
--- a/meson.build
+++ b/meson.build
@@ -178,6 +178,12 @@ configuration.set_quoted('CFGOPTDEF_CONFIG_PATH', get_option('configdir'), descr
# Set FN_NO_RETURN macro
configuration.set('FN_NO_RETURN', '__attribute__((__noreturn__))', description: 'Indicate that a function does not return')
+# Set FN_INLINE_ALWAYS macro
+configuration.set(
+ 'FN_INLINE_ALWAYS', '__attribute__((always_inline)) static inline',
+ description: 'Indicate that a function should always be inlined'
+)
+
####################################################################################################################################
# Include subdirs
####################################################################################################################################
diff --git a/src/build.auto.h.in b/src/build.auto.h.in
index 8491fc38c..31d08f483 100644
--- a/src/build.auto.h.in
+++ b/src/build.auto.h.in
@@ -27,4 +27,7 @@ Build Flags Generated by Configure
#undef CFGOPTDEF_CONFIG_PATH
// Indicate that a function does not return
-#define FN_NO_RETURN __attribute__((__noreturn__))
+#define FN_NO_RETURN __attribute__((__noreturn__))
+
+// Indicate that a function should always be inlined
+#define FN_INLINE_ALWAYS __attribute__((always_inline)) static inline
diff --git a/src/build/common/render.h b/src/build/common/render.h
index aaed622c8..4dc3ccf61 100644
--- a/src/build/common/render.h
+++ b/src/build/common/render.h
@@ -28,7 +28,7 @@ Block comments
Functions
***********************************************************************************************************************************/
// Format a #define with the value aligned at column 69
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
bldDefineRender(const String *const define, const String *const value)
{
return strNewFmt("#define %s%*s%s", strZ(define), (int)(60 - strSize(define)), "", strZ(value));
@@ -38,7 +38,7 @@ bldDefineRender(const String *const define, const String *const value)
String *bldEnum(const char *const prefix, const String *const value);
// Format file header
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
bldHeader(const char *const module, const char *const description)
{
return strCatFmt(
@@ -52,7 +52,7 @@ bldHeader(const char *const module, const char *const description)
}
// Put the file if it is different than the existing file
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
bldPut(const Storage *const storage, const char *const file, const Buffer *const contentNew)
{
const Buffer *const contentOld = storageGetP(storageNewReadP(storage, STR(file), .ignoreMissing = true));
diff --git a/src/build/common/yaml.h b/src/build/common/yaml.h
index e2a5a808f..410e98a9d 100644
--- a/src/build/common/yaml.h
+++ b/src/build/common/yaml.h
@@ -66,7 +66,7 @@ YamlEvent yamlEventCheck(YamlEvent event, YamlEventType type);
YamlEvent yamlEventPeek(Yaml *this);
// Get next scalar
-__attribute__((always_inline)) static inline YamlEvent
+FN_INLINE_ALWAYS YamlEvent
yamlScalarNext(Yaml *const this)
{
return yamlEventNextCheck(this, yamlEventTypeScalar);
@@ -75,7 +75,7 @@ yamlScalarNext(Yaml *const this)
// Check scalar
void yamlScalarCheck(YamlEvent event, const String *value);
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
yamlScalarCheckZ(const YamlEvent event, const char *const value)
{
yamlScalarCheck(event, STR(value));
@@ -83,7 +83,7 @@ yamlScalarCheckZ(const YamlEvent event, const char *const value)
void yamlScalarNextCheck(Yaml *this, const String *value);
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
yamlScalarNextCheckZ(Yaml *const this, const char *const value)
{
yamlScalarNextCheck(this, STR(value));
@@ -95,7 +95,7 @@ bool yamlBoolParse(YamlEvent event);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
yamlFree(Yaml *const this)
{
objFree(this);
diff --git a/src/common/exec.h b/src/common/exec.h
index f1bdfa5ef..a4c78ff55 100644
--- a/src/common/exec.h
+++ b/src/common/exec.h
@@ -34,21 +34,21 @@ typedef struct ExecPub
} ExecPub;
// Read interface
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
execIoRead(Exec *const this)
{
return THIS_PUB(Exec)->ioReadExec;
}
// Write interface
-__attribute__((always_inline)) static inline IoWrite *
+FN_INLINE_ALWAYS IoWrite *
execIoWrite(Exec *const this)
{
return THIS_PUB(Exec)->ioWriteExec;
}
// Exec MemContext
-__attribute__((always_inline)) static inline MemContext *
+FN_INLINE_ALWAYS MemContext *
execMemContext(Exec *const this)
{
return objMemContext(this);
@@ -63,7 +63,7 @@ void execOpen(Exec *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
execFree(Exec *const this)
{
objFree(this);
diff --git a/src/common/ini.h b/src/common/ini.h
index 3792b9729..9cd56b886 100644
--- a/src/common/ini.h
+++ b/src/common/ini.h
@@ -23,7 +23,7 @@ Ini *iniNew(void);
Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
-__attribute__((always_inline)) static inline Ini *
+FN_INLINE_ALWAYS Ini *
iniMove(Ini *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -60,7 +60,7 @@ StringList *iniSectionList(const Ini *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
iniFree(Ini *const this)
{
objFree(this);
diff --git a/src/common/io/bufferRead.h b/src/common/io/bufferRead.h
index 829b804e9..988a058cd 100644
--- a/src/common/io/bufferRead.h
+++ b/src/common/io/bufferRead.h
@@ -14,7 +14,7 @@ Constructors
IoRead *ioBufferReadNew(const Buffer *buffer);
// Construct and open buffer read
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
ioBufferReadNewOpen(const Buffer *const buffer)
{
IoRead *const result = ioBufferReadNew(buffer);
diff --git a/src/common/io/bufferWrite.h b/src/common/io/bufferWrite.h
index 1dae452ea..b09c8ed61 100644
--- a/src/common/io/bufferWrite.h
+++ b/src/common/io/bufferWrite.h
@@ -14,7 +14,7 @@ Constructors
IoWrite *ioBufferWriteNew(Buffer *buffer);
// Construct and open buffer write
-__attribute__((always_inline)) static inline IoWrite *
+FN_INLINE_ALWAYS IoWrite *
ioBufferWriteNewOpen(Buffer *const buffer)
{
IoWrite *const result = ioBufferWriteNew(buffer);
diff --git a/src/common/io/client.h b/src/common/io/client.h
index 832edb20e..39b00f57c 100644
--- a/src/common/io/client.h
+++ b/src/common/io/client.h
@@ -27,7 +27,7 @@ typedef struct IoClientPub
} IoClientPub;
// Name that identifies the client
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
ioClientName(const IoClient *const this)
{
return THIS_PUB(IoClient)->interface->name(THIS_PUB(IoClient)->driver);
@@ -37,14 +37,14 @@ ioClientName(const IoClient *const this)
Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
-__attribute__((always_inline)) static inline IoClient *
+FN_INLINE_ALWAYS IoClient *
ioClientMove(IoClient *const this, MemContext *const parentNew)
{
return objMoveContext(this, parentNew);
}
// Open session
-__attribute__((always_inline)) static inline IoSession *
+FN_INLINE_ALWAYS IoSession *
ioClientOpen(IoClient *const this)
{
return THIS_PUB(IoClient)->interface->open(THIS_PUB(IoClient)->driver);
@@ -53,7 +53,7 @@ ioClientOpen(IoClient *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioClientFree(IoClient *const this)
{
objFreeContext(this);
diff --git a/src/common/io/fd.h b/src/common/io/fd.h
index a77ca8b8c..9559f8242 100644
--- a/src/common/io/fd.h
+++ b/src/common/io/fd.h
@@ -13,14 +13,14 @@ Functions
bool fdReady(int fd, bool read, bool write, TimeMSec timeout);
// Wait until the file descriptor is ready to read or timeout
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
fdReadyRead(const int fd, const TimeMSec timeout)
{
return fdReady(fd, true, false, timeout);
}
// Wait until the file descriptor is ready to write or timeout
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
fdReadyWrite(const int fd, const TimeMSec timeout)
{
return fdReady(fd, false, true, timeout);
diff --git a/src/common/io/fdRead.h b/src/common/io/fdRead.h
index 02f9f1bae..a5d0bf1fb 100644
--- a/src/common/io/fdRead.h
+++ b/src/common/io/fdRead.h
@@ -15,7 +15,7 @@ Constructors
IoRead *ioFdReadNew(const String *name, int fd, TimeMSec timeout);
// Construct and open read fd
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
ioFdReadNewOpen(const String *const name, const int fd, const TimeMSec timeout)
{
IoRead *const result = ioFdReadNew(name, fd, timeout);
diff --git a/src/common/io/fdWrite.h b/src/common/io/fdWrite.h
index a369e7883..9029d54aa 100644
--- a/src/common/io/fdWrite.h
+++ b/src/common/io/fdWrite.h
@@ -15,7 +15,7 @@ Constructors
IoWrite *ioFdWriteNew(const String *name, int fd, TimeMSec timeout);
// Construct and open write fd
-__attribute__((always_inline)) static inline IoWrite *
+FN_INLINE_ALWAYS IoWrite *
ioFdWriteNewOpen(const String *const name, const int fd, const TimeMSec timeout)
{
IoWrite *const result = ioFdWriteNew(name, fd, timeout);
diff --git a/src/common/io/filter/filter.h b/src/common/io/filter/filter.h
index 000a80b8a..c39a3c49f 100644
--- a/src/common/io/filter/filter.h
+++ b/src/common/io/filter/filter.h
@@ -27,7 +27,7 @@ Getters/Setters
Pack *ioFilterResult(const IoFilter *this);
// Identifies the filter and is used when pulling results from the filter group
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
ioFilterType(const IoFilter *const this)
{
return THIS_PUB(IoFilter)->type;
@@ -36,7 +36,7 @@ ioFilterType(const IoFilter *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioFilterFree(IoFilter *const this)
{
objFreeContext(this);
diff --git a/src/common/io/filter/filter.intern.h b/src/common/io/filter/filter.intern.h
index 53fcf472d..a74557aee 100644
--- a/src/common/io/filter/filter.intern.h
+++ b/src/common/io/filter/filter.intern.h
@@ -72,7 +72,7 @@ typedef struct IoFilterPub
bool ioFilterDone(const IoFilter *this);
// Driver for the filter
-__attribute__((always_inline)) static inline void *
+FN_INLINE_ALWAYS void *
ioFilterDriver(IoFilter *const this)
{
return THIS_PUB(IoFilter)->driver;
@@ -83,21 +83,21 @@ ioFilterDriver(IoFilter *const this)
bool ioFilterInputSame(const IoFilter *this);
// Interface for the filter
-__attribute__((always_inline)) static inline const IoFilterInterface *
+FN_INLINE_ALWAYS const IoFilterInterface *
ioFilterInterface(const IoFilter *const this)
{
return &THIS_PUB(IoFilter)->interface;
}
// Does filter produce output? All In filters produce output.
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioFilterOutput(const IoFilter *const this)
{
return THIS_PUB(IoFilter)->interface.inOut != NULL;
}
// List of filter parameters
-__attribute__((always_inline)) static inline const Pack *
+FN_INLINE_ALWAYS const Pack *
ioFilterParamList(const IoFilter *const this)
{
return THIS_PUB(IoFilter)->paramList;
@@ -113,7 +113,7 @@ void ioFilterProcessIn(IoFilter *this, const Buffer *input);
void ioFilterProcessInOut(IoFilter *this, const Buffer *input, Buffer *output);
// Move filter to a new parent mem context
-__attribute__((always_inline)) static inline IoFilter *
+FN_INLINE_ALWAYS IoFilter *
ioFilterMove(IoFilter *this, MemContext *parentNew)
{
return objMoveContext(this, parentNew);
diff --git a/src/common/io/filter/group.h b/src/common/io/filter/group.h
index 35efe4d81..66dc8a70d 100644
--- a/src/common/io/filter/group.h
+++ b/src/common/io/filter/group.h
@@ -42,7 +42,7 @@ typedef struct IoFilterGroupPub
} IoFilterGroupPub;
// Is the filter group done processing?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioFilterGroupDone(const IoFilterGroup *const this)
{
ASSERT_INLINE(THIS_PUB(IoFilterGroup)->opened && !THIS_PUB(IoFilterGroup)->closed);
@@ -51,7 +51,7 @@ ioFilterGroupDone(const IoFilterGroup *const this)
// Should the same input be passed again? A buffer of input can produce multiple buffers of output, e.g. when a file containing all
// zeroes is being decompressed.
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioFilterGroupInputSame(const IoFilterGroup *const this)
{
ASSERT_INLINE(THIS_PUB(IoFilterGroup)->opened && !THIS_PUB(IoFilterGroup)->closed);
@@ -83,7 +83,7 @@ Pack *ioFilterGroupResultAll(const IoFilterGroup *this);
void ioFilterGroupResultAllSet(IoFilterGroup *this, const Pack *filterResult);
// Return total number of filters
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
ioFilterGroupSize(const IoFilterGroup *const this)
{
return lstSize(THIS_PUB(IoFilterGroup)->filterList);
@@ -113,7 +113,7 @@ void ioFilterGroupClose(IoFilterGroup *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioFilterGroupFree(IoFilterGroup *const this)
{
objFree(this);
diff --git a/src/common/io/http/client.h b/src/common/io/http/client.h
index 035169a89..5df526b1e 100644
--- a/src/common/io/http/client.h
+++ b/src/common/io/http/client.h
@@ -52,7 +52,7 @@ typedef struct HttpClientPub
TimeMSec timeout; // Request timeout
} HttpClientPub;
-__attribute__((always_inline)) static inline TimeMSec
+FN_INLINE_ALWAYS TimeMSec
httpClientTimeout(const HttpClient *const this)
{
return THIS_PUB(HttpClient)->timeout;
diff --git a/src/common/io/http/header.h b/src/common/io/http/header.h
index 71e65fa35..6ed9c2616 100644
--- a/src/common/io/http/header.h
+++ b/src/common/io/http/header.h
@@ -33,7 +33,7 @@ const String *httpHeaderGet(const HttpHeader *this, const String *key);
StringList *httpHeaderList(const HttpHeader *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline HttpHeader *
+FN_INLINE_ALWAYS HttpHeader *
httpHeaderMove(HttpHeader *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -51,7 +51,7 @@ bool httpHeaderRedact(const HttpHeader *this, const String *key);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpHeaderFree(HttpHeader *const this)
{
objFree(this);
diff --git a/src/common/io/http/query.h b/src/common/io/http/query.h
index 24f91c743..c820de8a7 100644
--- a/src/common/io/http/query.h
+++ b/src/common/io/http/query.h
@@ -59,7 +59,7 @@ StringList *httpQueryList(const HttpQuery *this);
HttpQuery *httpQueryMerge(HttpQuery *this, const HttpQuery *query);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline HttpQuery *
+FN_INLINE_ALWAYS HttpQuery *
httpQueryMove(HttpQuery *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -86,7 +86,7 @@ String *httpQueryRender(const HttpQuery *this, HttpQueryRenderParam param);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpQueryFree(HttpQuery *const this)
{
objFree(this);
diff --git a/src/common/io/http/request.h b/src/common/io/http/request.h
index d4a2f2c03..8f6e2e81f 100644
--- a/src/common/io/http/request.h
+++ b/src/common/io/http/request.h
@@ -94,28 +94,28 @@ typedef struct HttpRequestPub
} HttpRequestPub;
// Request path
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpRequestPath(const HttpRequest *const this)
{
return THIS_PUB(HttpRequest)->path;
}
// Request query
-__attribute__((always_inline)) static inline const HttpQuery *
+FN_INLINE_ALWAYS const HttpQuery *
httpRequestQuery(const HttpRequest *const this)
{
return THIS_PUB(HttpRequest)->query;
}
// Request headers
-__attribute__((always_inline)) static inline const HttpHeader *
+FN_INLINE_ALWAYS const HttpHeader *
httpRequestHeader(const HttpRequest *const this)
{
return THIS_PUB(HttpRequest)->header;
}
// Request verb
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpRequestVerb(const HttpRequest *const this)
{
return THIS_PUB(HttpRequest)->verb;
@@ -131,7 +131,7 @@ HttpResponse *httpRequestResponse(HttpRequest *this, bool contentCache);
FN_NO_RETURN void httpRequestError(const HttpRequest *this, HttpResponse *response);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline HttpRequest *
+FN_INLINE_ALWAYS HttpRequest *
httpRequestMove(HttpRequest *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -140,7 +140,7 @@ httpRequestMove(HttpRequest *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpRequestFree(HttpRequest *const this)
{
objFree(this);
diff --git a/src/common/io/http/response.h b/src/common/io/http/response.h
index 0b60c064d..a1779dcf5 100644
--- a/src/common/io/http/response.h
+++ b/src/common/io/http/response.h
@@ -42,28 +42,28 @@ typedef struct HttpResponsePub
// Read interface used to get the response content. This is intended for reading content that may be very large and will not be held
// in memory all at once. If the content must be loaded completely for processing (e.g. XML) then httpResponseContent() is simpler.
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
httpResponseIoRead(HttpResponse *const this)
{
return THIS_PUB(HttpResponse)->contentRead;
}
// Response code
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
httpResponseCode(const HttpResponse *const this)
{
return THIS_PUB(HttpResponse)->code;
}
// Response headers
-__attribute__((always_inline)) static inline const HttpHeader *
+FN_INLINE_ALWAYS const HttpHeader *
httpResponseHeader(const HttpResponse *const this)
{
return THIS_PUB(HttpResponse)->header;
}
// Response reason
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpResponseReason(const HttpResponse *const this)
{
return THIS_PUB(HttpResponse)->reason;
@@ -73,7 +73,7 @@ httpResponseReason(const HttpResponse *const this)
Functions
***********************************************************************************************************************************/
// Is this response code OK, i.e. 2XX?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
httpResponseCodeOk(const HttpResponse *const this)
{
return httpResponseCode(this) / 100 == 2;
@@ -83,7 +83,7 @@ httpResponseCodeOk(const HttpResponse *const this)
const Buffer *httpResponseContent(HttpResponse *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline HttpResponse *
+FN_INLINE_ALWAYS HttpResponse *
httpResponseMove(HttpResponse *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -92,7 +92,7 @@ httpResponseMove(HttpResponse *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpResponseFree(HttpResponse *const this)
{
objFree(this);
diff --git a/src/common/io/http/session.h b/src/common/io/http/session.h
index dd8d67ff4..1db020d24 100644
--- a/src/common/io/http/session.h
+++ b/src/common/io/http/session.h
@@ -26,7 +26,7 @@ HttpSession *httpSessionNew(HttpClient *client, IoSession *session);
Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
-__attribute__((always_inline)) static inline HttpSession *
+FN_INLINE_ALWAYS HttpSession *
httpSessionMove(HttpSession *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -56,7 +56,7 @@ IoWrite *httpSessionIoWrite(HttpSession *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpSessionFree(HttpSession *const this)
{
objFree(this);
diff --git a/src/common/io/http/url.h b/src/common/io/http/url.h
index fbc2865f7..ffce6886a 100644
--- a/src/common/io/http/url.h
+++ b/src/common/io/http/url.h
@@ -52,35 +52,35 @@ typedef struct HttpUrlPub
} HttpUrlPub;
// Protocol type
-__attribute__((always_inline)) static inline HttpProtocolType
+FN_INLINE_ALWAYS HttpProtocolType
httpUrlProtocolType(const HttpUrl *const this)
{
return THIS_PUB(HttpUrl)->type;
}
// Host
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpUrlHost(const HttpUrl *const this)
{
return THIS_PUB(HttpUrl)->host;
}
// Path
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpUrlPath(const HttpUrl *const this)
{
return THIS_PUB(HttpUrl)->path;
}
// Port
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
httpUrlPort(const HttpUrl *const this)
{
return THIS_PUB(HttpUrl)->port;
}
// URL (exactly as originally passed)
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
httpUrl(const HttpUrl *const this)
{
return THIS_PUB(HttpUrl)->url;
@@ -89,7 +89,7 @@ httpUrl(const HttpUrl *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
httpUrlFree(HttpUrl *const this)
{
objFree(this);
diff --git a/src/common/io/read.h b/src/common/io/read.h
index e1805f095..e8e19422b 100644
--- a/src/common/io/read.h
+++ b/src/common/io/read.h
@@ -23,14 +23,14 @@ typedef struct IoRead IoRead;
Getters/Setters
***********************************************************************************************************************************/
// Do reads block when more bytes are requested than are available to read?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioReadBlock(const IoRead *const this)
{
return THIS_PUB(IoRead)->interface.block;
}
// Is IO at EOF? All driver reads are complete and all data has been flushed from the filters (if any).
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioReadEof(const IoRead *const this)
{
ASSERT_INLINE(THIS_PUB(IoRead)->opened && !THIS_PUB(IoRead)->closed);
@@ -38,7 +38,7 @@ ioReadEof(const IoRead *const this)
}
// Get filter group if filters need to be added
-__attribute__((always_inline)) static inline IoFilterGroup *
+FN_INLINE_ALWAYS IoFilterGroup *
ioReadFilterGroup(IoRead *const this)
{
return THIS_PUB(IoRead)->filterGroup;
@@ -63,7 +63,7 @@ size_t ioReadSmall(IoRead *this, Buffer *buffer);
String *ioReadLineParam(IoRead *this, bool allowEof);
// Read linefeed-terminated string
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
ioReadLine(IoRead *const this)
{
return ioReadLineParam(this, false);
@@ -88,7 +88,7 @@ void ioReadClose(IoRead *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioReadFree(IoRead *const this)
{
objFreeContext(this);
diff --git a/src/common/io/read.intern.h b/src/common/io/read.intern.h
index 44113a797..66050a8d3 100644
--- a/src/common/io/read.intern.h
+++ b/src/common/io/read.intern.h
@@ -50,14 +50,14 @@ typedef struct IoReadPub
} IoReadPub;
// Driver for the read object
-__attribute__((always_inline)) static inline void *
+FN_INLINE_ALWAYS void *
ioReadDriver(IoRead *const this)
{
return THIS_PUB(IoRead)->driver;
}
// Interface for the read object
-__attribute__((always_inline)) static inline const IoReadInterface *
+FN_INLINE_ALWAYS const IoReadInterface *
ioReadInterface(const IoRead *const this)
{
return &THIS_PUB(IoRead)->interface;
diff --git a/src/common/io/server.h b/src/common/io/server.h
index 30f5fb068..503f7275d 100644
--- a/src/common/io/server.h
+++ b/src/common/io/server.h
@@ -27,7 +27,7 @@ typedef struct IoServerPub
} IoServerPub;
// Name that identifies the server
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
ioServerName(const IoServer *const this)
{
return THIS_PUB(IoServer)->interface->name(THIS_PUB(IoServer)->driver);
@@ -37,14 +37,14 @@ ioServerName(const IoServer *const this)
Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
-__attribute__((always_inline)) static inline IoServer *
+FN_INLINE_ALWAYS IoServer *
ioServerMove(IoServer *const this, MemContext *const parentNew)
{
return objMoveContext(this, parentNew);
}
// Open session
-__attribute__((always_inline)) static inline IoSession *
+FN_INLINE_ALWAYS IoSession *
ioServerAccept(IoServer *const this, IoSession *const session)
{
return THIS_PUB(IoServer)->interface->accept(THIS_PUB(IoServer)->driver, session);
@@ -53,7 +53,7 @@ ioServerAccept(IoServer *const this, IoSession *const session)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioServerFree(IoServer *const this)
{
objFreeContext(this);
diff --git a/src/common/io/session.h b/src/common/io/session.h
index aea7be192..5000c20ce 100644
--- a/src/common/io/session.h
+++ b/src/common/io/session.h
@@ -41,7 +41,7 @@ typedef struct IoSessionPub
} IoSessionPub;
// Is the session authenticated? The exact meaning of "authenticated" will vary by driver type.
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
ioSessionAuthenticated(const IoSession *const this)
{
return THIS_PUB(IoSession)->authenticated;
@@ -60,14 +60,14 @@ typedef struct IoSessionIoReadParam
#define ioSessionIoReadP(this, ...) \
ioSessionIoRead(this, (IoSessionIoReadParam){VAR_PARAM_INIT, __VA_ARGS__})
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
ioSessionIoRead(IoSession *const this, const IoSessionIoReadParam param)
{
return THIS_PUB(IoSession)->interface->ioRead(THIS_PUB(IoSession)->driver, param.ignoreUnexpectedEof);
}
// Write interface
-__attribute__((always_inline)) static inline IoWrite *
+FN_INLINE_ALWAYS IoWrite *
ioSessionIoWrite(IoSession *const this)
{
return THIS_PUB(IoSession)->interface->ioWrite(THIS_PUB(IoSession)->driver);
@@ -75,14 +75,14 @@ ioSessionIoWrite(IoSession *const this)
// The peer name, if any. The exact meaning will vary by driver type, for example the peer name will be the client CN for the
// TlsSession driver.
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
ioSessionPeerName(const IoSession *const this)
{
return THIS_PUB(IoSession)->peerName;
}
// Session role
-__attribute__((always_inline)) static inline IoSessionRole
+FN_INLINE_ALWAYS IoSessionRole
ioSessionRole(const IoSession *const this)
{
return THIS_PUB(IoSession)->interface->role(THIS_PUB(IoSession)->driver);
@@ -92,14 +92,14 @@ ioSessionRole(const IoSession *const this)
Functions
***********************************************************************************************************************************/
// Close the session
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioSessionClose(IoSession *const this)
{
return THIS_PUB(IoSession)->interface->close(THIS_PUB(IoSession)->driver);
}
// Move to a new parent mem context
-__attribute__((always_inline)) static inline IoSession *
+FN_INLINE_ALWAYS IoSession *
ioSessionMove(IoSession *const this, MemContext *const parentNew)
{
return objMoveContext(this, parentNew);
@@ -108,7 +108,7 @@ ioSessionMove(IoSession *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioSessionFree(IoSession *const this)
{
objFreeContext(this);
diff --git a/src/common/io/write.h b/src/common/io/write.h
index d834f5131..a1aecc998 100644
--- a/src/common/io/write.h
+++ b/src/common/io/write.h
@@ -28,7 +28,7 @@ typedef struct IoWritePub
} IoWritePub;
// Filter group. Filters must be set before open and cannot be reset
-__attribute__((always_inline)) static inline IoFilterGroup *
+FN_INLINE_ALWAYS IoFilterGroup *
ioWriteFilterGroup(IoWrite *const this)
{
return THIS_PUB(IoWrite)->filterGroup;
@@ -76,7 +76,7 @@ void ioWriteClose(IoWrite *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
ioWriteFree(IoWrite *const this)
{
objFreeContext(this);
diff --git a/src/common/regExp.h b/src/common/regExp.h
index 4119b3d57..c8a986a9e 100644
--- a/src/common/regExp.h
+++ b/src/common/regExp.h
@@ -49,7 +49,7 @@ String *regExpPrefix(const String *expression);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
regExpFree(RegExp *const this)
{
objFree(this);
diff --git a/src/common/type/blob.h b/src/common/type/blob.h
index 0f3ee695b..70f1bd93b 100644
--- a/src/common/type/blob.h
+++ b/src/common/type/blob.h
@@ -41,7 +41,7 @@ const void *blbAdd(Blob *this, const void *data, size_t size);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
strBlbFree(Blob *const this)
{
objFree(this);
diff --git a/src/common/type/buffer.h b/src/common/type/buffer.h
index 6ed2db8e8..c8a550e9e 100644
--- a/src/common/type/buffer.h
+++ b/src/common/type/buffer.h
@@ -41,70 +41,70 @@ typedef struct BufferPub
// Amount of the buffer actually used. This will be updated automatically when possible but if the buffer is modified by using
// bufPtr() then the user is responsible for updating used.
-__attribute__((always_inline)) static inline size_t
+FN_INLINE_ALWAYS size_t
bufUsed(const Buffer *const this)
{
return THIS_PUB(Buffer)->used;
}
// Is the buffer empty?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
bufEmpty(const Buffer *const this)
{
return bufUsed(this) == 0;
}
// Buffer size
-__attribute__((always_inline)) static inline size_t
+FN_INLINE_ALWAYS size_t
bufSize(const Buffer *const this)
{
return THIS_PUB(Buffer)->size;
}
// Is the buffer full?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
bufFull(const Buffer *const this)
{
return bufUsed(this) == bufSize(this);
}
// Buffer pointer
-__attribute__((always_inline)) static inline unsigned char *
+FN_INLINE_ALWAYS unsigned char *
bufPtr(Buffer *const this)
{
return THIS_PUB(Buffer)->buffer;
}
// Const buffer pointer
-__attribute__((always_inline)) static inline const unsigned char *
+FN_INLINE_ALWAYS const unsigned char *
bufPtrConst(const Buffer *const this)
{
return THIS_PUB(Buffer)->buffer;
}
// Remaining space in the buffer
-__attribute__((always_inline)) static inline size_t
+FN_INLINE_ALWAYS size_t
bufRemains(const Buffer *const this)
{
return bufSize(this) - bufUsed(this);
}
// Pointer to remaining buffer space (after used space)
-__attribute__((always_inline)) static inline unsigned char *
+FN_INLINE_ALWAYS unsigned char *
bufRemainsPtr(Buffer *const this)
{
return bufPtr(this) + bufUsed(this);
}
// Allocated buffer size. This may be different from bufSize() if a limit has been set.
-__attribute__((always_inline)) static inline size_t
+FN_INLINE_ALWAYS size_t
bufSizeAlloc(const Buffer *const this)
{
return THIS_PUB(Buffer)->sizeAlloc;
}
// Is the size limited to make the buffer appear smaller?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
bufSizeLimit(const Buffer *const this)
{
return THIS_PUB(Buffer)->sizeLimit;
@@ -129,7 +129,7 @@ bool bufEq(const Buffer *this, const Buffer *compare);
String *bufHex(const Buffer *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline Buffer *
+FN_INLINE_ALWAYS Buffer *
bufMove(Buffer *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -149,7 +149,7 @@ void bufUsedZero(Buffer *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
bufFree(Buffer *const this)
{
objFree(this);
diff --git a/src/common/type/convert.h b/src/common/type/convert.h
index 4332b505d..bc9e8d3f7 100644
--- a/src/common/type/convert.h
+++ b/src/common/type/convert.h
@@ -33,7 +33,7 @@ int cvtZToInt(const char *value);
int cvtZToIntBase(const char *value, int base);
int cvtZSubNToIntBase(const char *value, size_t offset, size_t size, int base);
-__attribute__((always_inline)) static inline int
+FN_INLINE_ALWAYS int
cvtZSubNToInt(const char *const value, const size_t offset, const size_t size)
{
return cvtZSubNToIntBase(value, offset, size, 10);
@@ -45,7 +45,7 @@ int64_t cvtZToInt64(const char *value);
int64_t cvtZToInt64Base(const char *value, int base);
int64_t cvtZSubNToInt64Base(const char *value, size_t offset, size_t size, int base);
-__attribute__((always_inline)) static inline int64_t
+FN_INLINE_ALWAYS int64_t
cvtZSubNToInt64(const char *const value, const size_t offset, const size_t size)
{
return cvtZSubNToInt64Base(value, offset, size, 10);
@@ -56,25 +56,25 @@ cvtZSubNToInt64(const char *const value, const size_t offset, const size_t size)
// so that signed and unsigned values alternate, e.g. 0 = 0, -1 = 1, 1 = 2, -2 = 3, 2 = 4, -3 = 5, 3 = 6, etc. This moves as many
// bits as possible into the low order bits which is good for other types of encoding, e.g. base-128. See
// http://neurocline.github.io/dev/2015/09/17/zig-zag-encoding.html for details.
-__attribute__((always_inline)) static inline uint32_t
+FN_INLINE_ALWAYS uint32_t
cvtInt32ToZigZag(const int32_t value)
{
return ((uint32_t)value << 1) ^ (uint32_t)(value >> 31);
}
-__attribute__((always_inline)) static inline int32_t
+FN_INLINE_ALWAYS int32_t
cvtInt32FromZigZag(const uint32_t value)
{
return (int32_t)((value >> 1) ^ (~(value & 1) + 1));
}
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
cvtInt64ToZigZag(const int64_t value)
{
return ((uint64_t)value << 1) ^ (uint64_t)(value >> 63);
}
-__attribute__((always_inline)) static inline int64_t
+FN_INLINE_ALWAYS int64_t
cvtInt64FromZigZag(const uint64_t value)
{
return (int64_t)((value >> 1) ^ (~(value & 1) + 1));
@@ -97,7 +97,7 @@ unsigned int cvtZToUInt(const char *value);
unsigned int cvtZToUIntBase(const char *value, int base);
unsigned int cvtZSubNToUIntBase(const char *value, size_t offset, size_t size, int base);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
cvtZSubNToUInt(const char *const value, const size_t offset, const size_t size)
{
return cvtZSubNToUIntBase(value, offset, size, 10);
@@ -109,7 +109,7 @@ uint64_t cvtZToUInt64(const char *value);
uint64_t cvtZToUInt64Base(const char *value, int base);
uint64_t cvtZSubNToUInt64Base(const char* value, size_t offset, size_t size, int base);
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
cvtZSubNToUInt64(const char *const value, const size_t offset, const size_t size)
{
return cvtZSubNToUInt64Base(value, offset, size, 10);
diff --git a/src/common/type/json.h b/src/common/type/json.h
index 34d652b4d..97ab1b8f8 100644
--- a/src/common/type/json.h
+++ b/src/common/type/json.h
@@ -97,7 +97,7 @@ void jsonValidate(const String *json);
/***********************************************************************************************************************************
Read Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
jsonReadFree(JsonRead *const this)
{
objFree(this);
@@ -167,7 +167,7 @@ const String *jsonWriteResult(JsonWrite *this);
/***********************************************************************************************************************************
Write Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
jsonWriteFree(JsonWrite *const this)
{
objFree(this);
diff --git a/src/common/type/keyValue.h b/src/common/type/keyValue.h
index 199d04daa..b17f8f5d8 100644
--- a/src/common/type/keyValue.h
+++ b/src/common/type/keyValue.h
@@ -32,7 +32,7 @@ typedef struct KeyValuePub
} KeyValuePub;
// List of keys
-__attribute__((always_inline)) static inline const VariantList *
+FN_INLINE_ALWAYS const VariantList *
kvKeyList(const KeyValue *const this)
{
return THIS_PUB(KeyValue)->keyList;
@@ -48,7 +48,7 @@ Functions
KeyValue *kvAdd(KeyValue *this, const Variant *key, const Variant *value);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline KeyValue *
+FN_INLINE_ALWAYS KeyValue *
kvMove(KeyValue *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -71,7 +71,7 @@ const Variant *kvGetDefault(const KeyValue *this, const Variant *key, const Vari
unsigned int kvGetIdx(const KeyValue *this, const Variant *key);
// Does the key exist (even if the value is NULL)
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
kvKeyExists(const KeyValue *const this, const Variant *const key)
{
return kvGetIdx(this, key) != KEY_NOT_FOUND;
@@ -86,7 +86,7 @@ KeyValue *kvRemove(KeyValue *this, const Variant *key);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
kvFree(KeyValue *const this)
{
objFree(this);
diff --git a/src/common/type/list.h b/src/common/type/list.h
index c44edbde6..69c666c0d 100644
--- a/src/common/type/list.h
+++ b/src/common/type/list.h
@@ -76,21 +76,21 @@ typedef struct ListPub
List *lstComparatorSet(List *this, ListComparator *comparator);
// Memory context for this list
-__attribute__((always_inline)) static inline MemContext *
+FN_INLINE_ALWAYS MemContext *
lstMemContext(List *const this)
{
return objMemContext(this);
}
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
lstSize(const List *const this)
{
return THIS_PUB(List)->listSize;
}
// Is the list empty?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
lstEmpty(const List *const this)
{
return lstSize(this) == 0;
@@ -112,7 +112,7 @@ void *lstFindDefault(const List *this, const void *item, void *itemDefault);
unsigned int lstFindIdx(const List *this, const void *item);
// Does an item exist in the list?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
lstExists(const List *const this, const void *const item)
{
return lstFind(this, item) != NULL;
@@ -125,14 +125,14 @@ unsigned int lstIdx(const List *this, const void *item);
void *lstInsert(List *this, unsigned int listIdx, const void *item);
// Add an item to the end of the list
-__attribute__((always_inline)) static inline void *
+FN_INLINE_ALWAYS void *
lstAdd(List *const this, const void *const item)
{
return lstInsert(this, lstSize(this), item);
}
// Move to a new parent mem context
-__attribute__((always_inline)) static inline List *
+FN_INLINE_ALWAYS List *
lstMove(List *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -149,7 +149,7 @@ List *lstSort(List *this, SortOrder sortOrder);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
lstFree(List *const this)
{
objFree(this);
diff --git a/src/common/type/object.h b/src/common/type/object.h
index a5b056d75..b321e68ca 100644
--- a/src/common/type/object.h
+++ b/src/common/type/object.h
@@ -59,7 +59,7 @@ Create a local "this" variable of the correct type from a THIS_VOID parameter
Cast this private struct, e.g. List, to the associated public struct, e.g. ListPub. Note that the public struct must be the first
member of the private struct. For example:
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
lstSize(const List *const this)
{
return THIS_PUB(List)->listSize;
@@ -69,7 +69,7 @@ The macro also ensures that this != NULL so there is no need to do that in the c
***********************************************************************************************************************************/
#define THIS_PUB(type) ((type##Pub *)thisNotNull(this))
-__attribute__((always_inline)) static inline const void *
+FN_INLINE_ALWAYS const void *
thisNotNull(const void *const this)
{
ASSERT_INLINE(this != NULL);
@@ -87,14 +87,14 @@ Functions
To ensure proper type checking, these functions are meant to be called from inline functions created specifically for each object:
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageFree(Storage *this)
{
objFree(this);
}
***********************************************************************************************************************************/
// Get the object mem context
-__attribute__((always_inline)) static inline MemContext *
+FN_INLINE_ALWAYS MemContext *
objMemContext(void *const this)
{
return memContextFromAllocExtra(this);
diff --git a/src/common/type/pack.h b/src/common/type/pack.h
index c892e0ad3..01c1edfaa 100644
--- a/src/common/type/pack.h
+++ b/src/common/type/pack.h
@@ -135,28 +135,28 @@ typedef enum
Pack Functions
***********************************************************************************************************************************/
// Duplicate pack
-__attribute__((always_inline)) static inline Pack *
+FN_INLINE_ALWAYS Pack *
pckDup(const Pack *const this)
{
return (Pack *)bufDup((const Buffer *)this);
}
// Cast Buffer to Pack
-__attribute__((always_inline)) static inline const Pack *
+FN_INLINE_ALWAYS const Pack *
pckFromBuf(const Buffer *const buffer)
{
return (const Pack *)buffer;
}
// Move to a new parent mem context
-__attribute__((always_inline)) static inline Pack *
+FN_INLINE_ALWAYS Pack *
pckMove(Pack *const this, MemContext *const parentNew)
{
return (Pack *)bufMove((Buffer *)this, parentNew);
}
// Cast Pack to Buffer
-__attribute__((always_inline)) static inline const Buffer *
+FN_INLINE_ALWAYS const Buffer *
pckToBuf(const Pack *const pack)
{
return (const Buffer *)pack;
@@ -283,7 +283,7 @@ typedef struct PckReadModeParam
mode_t pckReadMode(PackRead *this, PckReadModeParam param);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline PackRead *
+FN_INLINE_ALWAYS PackRead *
pckReadMove(PackRead *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -423,7 +423,7 @@ void pckReadEnd(PackRead *this);
/***********************************************************************************************************************************
Read Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
pckReadFree(PackRead *const this)
{
objFree(this);
@@ -528,7 +528,7 @@ typedef struct PckWriteModeParam
PackWrite *pckWriteMode(PackWrite *this, mode_t value, PckWriteModeParam param);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline PackWrite *
+FN_INLINE_ALWAYS PackWrite *
pckWriteMove(PackWrite *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -675,7 +675,7 @@ Pack *pckWriteResult(PackWrite *this);
/***********************************************************************************************************************************
Write Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
pckWriteFree(PackWrite *const this)
{
objFree(this);
diff --git a/src/common/type/string.h b/src/common/type/string.h
index 7b62ae4d5..edf9ea08a 100644
--- a/src/common/type/string.h
+++ b/src/common/type/string.h
@@ -87,14 +87,14 @@ typedef struct StringPub
} StringPub;
// String size minus null-terminator, i.e. the same value that strlen() would return
-__attribute__((always_inline)) static inline size_t
+FN_INLINE_ALWAYS size_t
strSize(const String *this)
{
return THIS_PUB(String)->size;
}
// Pointer to zero-terminated string. strZNull() returns NULL when the String is NULL.
-__attribute__((always_inline)) static inline const char *
+FN_INLINE_ALWAYS const char *
strZ(const String *this)
{
return THIS_PUB(String)->buffer;
@@ -134,7 +134,7 @@ String *strCatFmt(String *this, const char *format, ...) __attribute__((format(p
// N is <= the end of the string being concatenated.
String *strCatZN(String *this, const char *cat, size_t size);
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strCatN(String *this, const String *const cat, const size_t size)
{
ASSERT_INLINE(cat != NULL);
@@ -203,7 +203,7 @@ String *strTrim(String *this);
String *strTruncIdx(String *this, int idx);
// Truncate the string to zero size
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strTrunc(String *const this)
{
return strTruncIdx(this, 0);
@@ -212,7 +212,7 @@ strTrunc(String *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
strFree(String *const this)
{
objFree(this);
diff --git a/src/common/type/stringId.h b/src/common/type/stringId.h
index 62d667135..b903d1540 100644
--- a/src/common/type/stringId.h
+++ b/src/common/type/stringId.h
@@ -66,14 +66,14 @@ Functions
StringId strIdFromZN(const char *buffer, size_t size, bool error);
// Convert String to StringId using strIdFromZN()
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
strIdFromStr(const String *const str)
{
return strIdFromZN(strZ(str), strSize(str), true);
}
// Convert zero-terminated string to StringId using strIdFromZN()
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
strIdFromZ(const char *const str)
{
return strIdFromZN(str, strlen(str), true);
diff --git a/src/common/type/stringList.c b/src/common/type/stringList.c
index a2c63c8df..35991390d 100644
--- a/src/common/type/stringList.c
+++ b/src/common/type/stringList.c
@@ -15,7 +15,7 @@ String List Handler
/***********************************************************************************************************************************
Internal add -- the string must have been created in the list's mem context before being passed
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstAddInternal(StringList *const this, String *const string)
{
return *(String **)lstAdd((List *)this, &string);
@@ -24,7 +24,7 @@ strLstAddInternal(StringList *const this, String *const string)
/***********************************************************************************************************************************
Internal insert -- the string must have been created in the list's mem context before being passed
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstInsertInternal(StringList *const this, const unsigned int listIdx, String *const string)
{
return *(String **)lstInsert((List *)this, listIdx, &string);
diff --git a/src/common/type/stringList.h b/src/common/type/stringList.h
index da0b66dec..81e5bff0c 100644
--- a/src/common/type/stringList.h
+++ b/src/common/type/stringList.h
@@ -18,7 +18,7 @@ typedef struct StringList StringList;
Constructors
***********************************************************************************************************************************/
// Create empty StringList
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstNew(void)
{
return (StringList *)lstNewP(sizeof(String *), .comparator = lstComparatorStr);
@@ -27,7 +27,7 @@ strLstNew(void)
// Split a string into a string list based on a delimiter
StringList *strLstNewSplitZ(const String *string, const char *delimiter);
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstNewSplit(const String *const string, const String *const delimiter)
{
return strLstNewSplitZ(string, strZ(delimiter));
@@ -43,21 +43,21 @@ StringList *strLstDup(const StringList *sourceList);
Getters/Setters
***********************************************************************************************************************************/
// Set a new comparator
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstComparatorSet(StringList *const this, ListComparator *const comparator)
{
return (StringList *)lstComparatorSet((List *)this, comparator);
}
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
strLstSize(const StringList *const this)
{
return lstSize((List *)this);
}
// Is the list empty?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
strLstEmpty(const StringList *const this)
{
return strLstSize(this) == 0;
@@ -70,7 +70,7 @@ Functions
String *strLstAdd(StringList *this, const String *string);
String *strLstAddSubN(StringList *this, const String *string, size_t offset, size_t size);
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstAddSub(StringList *const this, const String *const string, const size_t size)
{
return strLstAddSubN(this, string, 0, size);
@@ -80,7 +80,7 @@ String *strLstAddFmt(StringList *this, const char *format, ...) __attribute__((f
String *strLstAddZ(StringList *this, const char *string);
String *strLstAddZSubN(StringList *this, const char *string, size_t offset, size_t size);
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstAddZSub(StringList *const this, const char *const string, const size_t size)
{
return strLstAddZSubN(this, string, 0, size);
@@ -89,7 +89,7 @@ strLstAddZSub(StringList *const this, const char *const string, const size_t siz
String *strLstAddIfMissing(StringList *this, const String *string);
// Does the specified string exist in the list?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
strLstExists(const StringList *const this, const String *const string)
{
return lstExists((List *)this, &string);
@@ -99,7 +99,7 @@ strLstExists(const StringList *const this, const String *const string)
String *strLstInsert(StringList *this, unsigned int listIdx, const String *string);
// Get a string by index
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstGet(const StringList *const this, const unsigned int listIdx)
{
return *(String **)lstGet((List *)this, listIdx);
@@ -109,7 +109,7 @@ strLstGet(const StringList *const this, const unsigned int listIdx)
String *strLstJoinQuote(const StringList *this, const char *separator, const char *quote);
// Join a list of strings into a single string using the specified separator
-__attribute__((always_inline)) static inline String *
+FN_INLINE_ALWAYS String *
strLstJoin(const StringList *const this, const char *const separator)
{
return strLstJoinQuote(this, separator, "");
@@ -120,7 +120,7 @@ strLstJoin(const StringList *const this, const char *const separator)
StringList *strLstMergeAnti(const StringList *this, const StringList *anti);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstMove(StringList *const this, MemContext *const parentNew)
{
return (StringList *)lstMove((List *)this, parentNew);
@@ -131,20 +131,20 @@ strLstMove(StringList *const this, MemContext *const parentNew)
const char **strLstPtr(const StringList *this);
// Remove an item from the list
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
strLstRemove(StringList *const this, const String *const item)
{
return lstRemove((List *)this, &item);
}
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstRemoveIdx(StringList *const this, const unsigned int listIdx)
{
return (StringList *)lstRemoveIdx((List *)this, listIdx);
}
// List sort
-__attribute__((always_inline)) static inline StringList *
+FN_INLINE_ALWAYS StringList *
strLstSort(StringList *const this, const SortOrder sortOrder)
{
return (StringList *)lstSort((List *)this, sortOrder);
@@ -153,7 +153,7 @@ strLstSort(StringList *const this, const SortOrder sortOrder)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
strLstFree(StringList *const this)
{
lstFree((List *)this);
diff --git a/src/common/type/variant.h b/src/common/type/variant.h
index b0d940ea7..ca4f63b59 100644
--- a/src/common/type/variant.h
+++ b/src/common/type/variant.h
@@ -136,7 +136,7 @@ uint64_t varUInt64Force(const Variant *this);
VariantList *varVarLst(const Variant *this);
// Variant type
-__attribute__((always_inline)) static inline VariantType
+FN_INLINE_ALWAYS VariantType
varType(const Variant *const this)
{
return THIS_PUB(Variant)->type;
@@ -151,7 +151,7 @@ bool varEq(const Variant *this1, const Variant *this2);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
varFree(Variant *const this)
{
objFree(this);
diff --git a/src/common/type/variantList.h b/src/common/type/variantList.h
index b532c0ff5..3a1013a5c 100644
--- a/src/common/type/variantList.h
+++ b/src/common/type/variantList.h
@@ -16,7 +16,7 @@ typedef struct VariantList VariantList;
Constructors
***********************************************************************************************************************************/
// Create empty VariantList
-__attribute__((always_inline)) static inline VariantList *
+FN_INLINE_ALWAYS VariantList *
varLstNew(void)
{
return (VariantList *)lstNewP(sizeof(Variant *));
@@ -32,14 +32,14 @@ VariantList *varLstDup(const VariantList *source);
Getters/Setters
***********************************************************************************************************************************/
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
varLstSize(const VariantList *const this)
{
return lstSize((List *)this);
}
// Is the list empty?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
varLstEmpty(const VariantList *const this)
{
return varLstSize(this) == 0;
@@ -49,7 +49,7 @@ varLstEmpty(const VariantList *const this)
Functions
***********************************************************************************************************************************/
// Add to list
-__attribute__((always_inline)) static inline VariantList *
+FN_INLINE_ALWAYS VariantList *
varLstAdd(VariantList *const this, Variant *const data)
{
lstAdd((List *)this, &data);
@@ -57,14 +57,14 @@ varLstAdd(VariantList *const this, Variant *const data)
}
// Get by index
-__attribute__((always_inline)) static inline Variant *
+FN_INLINE_ALWAYS Variant *
varLstGet(const VariantList *const this, const unsigned int listIdx)
{
return *(Variant **)lstGet((List *)this, listIdx);
}
// Move to new parent mem context
-__attribute__((always_inline)) static inline VariantList *
+FN_INLINE_ALWAYS VariantList *
varLstMove(VariantList *const this, MemContext *const parentNew)
{
return (VariantList *)lstMove((List *)this, parentNew);
@@ -73,7 +73,7 @@ varLstMove(VariantList *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
varLstFree(VariantList *const this)
{
lstFree((List *)this);
diff --git a/src/common/type/xml.h b/src/common/type/xml.h
index e9cf4b876..15dc875bd 100644
--- a/src/common/type/xml.h
+++ b/src/common/type/xml.h
@@ -41,7 +41,7 @@ typedef struct XmlDocumentPub
Buffer *xmlDocumentBuf(const XmlDocument *this);
// Root node
-__attribute__((always_inline)) static inline XmlNode *
+FN_INLINE_ALWAYS XmlNode *
xmlDocumentRoot(const XmlDocument *const this)
{
return ((XmlDocumentPub *const)this)->root;
@@ -50,7 +50,7 @@ xmlDocumentRoot(const XmlDocument *const this)
/***********************************************************************************************************************************
Document Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
xmlDocumentFree(XmlDocument *const this)
{
objFree(this);
@@ -71,7 +71,7 @@ String *xmlNodeAttribute(const XmlNode *this, const String *name);
// Node child (by name or index)
XmlNode *xmlNodeChildN(const XmlNode *this, const String *name, unsigned int index, bool errorOnMissing);
-__attribute__((always_inline)) static inline XmlNode *
+FN_INLINE_ALWAYS XmlNode *
xmlNodeChild(const XmlNode *const this, const String *const name, const bool errorOnMissing)
{
return xmlNodeChildN(this, name, 0, errorOnMissing);
@@ -96,14 +96,14 @@ void xmlNodeFree(XmlNode *this);
Node List Getters
***********************************************************************************************************************************/
// Get a node from the list
-__attribute__((always_inline)) static inline XmlNode *
+FN_INLINE_ALWAYS XmlNode *
xmlNodeLstGet(const XmlNodeList *const this, const unsigned int listIdx)
{
return *(XmlNode **)lstGet((List *const)this, listIdx);
}
// Node list size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
xmlNodeLstSize(const XmlNodeList *const this)
{
return lstSize((List *const)this);
@@ -112,7 +112,7 @@ xmlNodeLstSize(const XmlNodeList *const this)
/***********************************************************************************************************************************
Node List Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
xmlNodeLstFree(XmlNodeList *const this)
{
lstFree((List *const)this);
diff --git a/src/common/wait.h b/src/common/wait.h
index 1fadb8b53..8e65ce825 100644
--- a/src/common/wait.h
+++ b/src/common/wait.h
@@ -26,7 +26,7 @@ typedef struct WaitPub
} WaitPub;
// How much time is remaining? Recalculated each time waitMore() is called.
-__attribute__((always_inline)) static inline TimeMSec
+FN_INLINE_ALWAYS TimeMSec
waitRemaining(const Wait *const this)
{
return THIS_PUB(Wait)->remainTime;
@@ -41,7 +41,7 @@ bool waitMore(Wait *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
waitFree(Wait *const this)
{
objFree(this);
diff --git a/src/config/config.h b/src/config/config.h
index f405f144e..2ab2a25a9 100644
--- a/src/config/config.h
+++ b/src/config/config.h
@@ -109,7 +109,7 @@ unsigned int cfgOptionIdxDefault(ConfigOption optionId);
// Get boolean config option
bool cfgOptionIdxBool(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
cfgOptionBool(const ConfigOption optionId)
{
return cfgOptionIdxBool(optionId, cfgOptionIdxDefault(optionId));
@@ -118,7 +118,7 @@ cfgOptionBool(const ConfigOption optionId)
// Get int config option
int cfgOptionIdxInt(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline int
+FN_INLINE_ALWAYS int
cfgOptionInt(const ConfigOption optionId)
{
return cfgOptionIdxInt(optionId, cfgOptionIdxDefault(optionId));
@@ -127,7 +127,7 @@ cfgOptionInt(const ConfigOption optionId)
// Get int64 config option
int64_t cfgOptionIdxInt64(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline int64_t
+FN_INLINE_ALWAYS int64_t
cfgOptionInt64(const ConfigOption optionId)
{
return cfgOptionIdxInt64(optionId, cfgOptionIdxDefault(optionId));
@@ -136,7 +136,7 @@ cfgOptionInt64(const ConfigOption optionId)
// Get kv config option
const KeyValue *cfgOptionIdxKv(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline const KeyValue *
+FN_INLINE_ALWAYS const KeyValue *
cfgOptionKv(const ConfigOption optionId)
{
return cfgOptionIdxKv(optionId, cfgOptionIdxDefault(optionId));
@@ -144,7 +144,7 @@ cfgOptionKv(const ConfigOption optionId)
const KeyValue *cfgOptionIdxKvNull(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline const KeyValue *
+FN_INLINE_ALWAYS const KeyValue *
cfgOptionKvNull(const ConfigOption optionId)
{
return cfgOptionIdxKvNull(optionId, cfgOptionIdxDefault(optionId));
@@ -153,7 +153,7 @@ cfgOptionKvNull(const ConfigOption optionId)
// Get list config option
const VariantList *cfgOptionIdxLst(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline const VariantList *
+FN_INLINE_ALWAYS const VariantList *
cfgOptionLst(const ConfigOption optionId)
{
return cfgOptionIdxLst(optionId, cfgOptionIdxDefault(optionId));
@@ -162,7 +162,7 @@ cfgOptionLst(const ConfigOption optionId)
// Get String config option
const String *cfgOptionIdxStr(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
cfgOptionStr(const ConfigOption optionId)
{
return cfgOptionIdxStr(optionId, cfgOptionIdxDefault(optionId));
@@ -170,7 +170,7 @@ cfgOptionStr(const ConfigOption optionId)
const String *cfgOptionIdxStrNull(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
cfgOptionStrNull(const ConfigOption optionId)
{
return cfgOptionIdxStrNull(optionId, cfgOptionIdxDefault(optionId));
@@ -179,7 +179,7 @@ cfgOptionStrNull(const ConfigOption optionId)
// Get StringId config option
StringId cfgOptionIdxStrId(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
cfgOptionStrId(const ConfigOption optionId)
{
return cfgOptionIdxStrId(optionId, cfgOptionIdxDefault(optionId));
@@ -188,7 +188,7 @@ cfgOptionStrId(const ConfigOption optionId)
// Get uint config option
unsigned int cfgOptionIdxUInt(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
cfgOptionUInt(const ConfigOption optionId)
{
return cfgOptionIdxUInt(optionId, cfgOptionIdxDefault(optionId));
@@ -197,7 +197,7 @@ cfgOptionUInt(const ConfigOption optionId)
// Get uint64 config option
uint64_t cfgOptionIdxUInt64(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
cfgOptionUInt64(const ConfigOption optionId)
{
return cfgOptionIdxUInt64(optionId, cfgOptionIdxDefault(optionId));
diff --git a/src/config/config.intern.h b/src/config/config.intern.h
index 4a5734d93..de1ac6832 100644
--- a/src/config/config.intern.h
+++ b/src/config/config.intern.h
@@ -123,7 +123,7 @@ unsigned int cfgOptionIdxTotal(ConfigOption optionId);
// Get config option as a Variant
Variant *cfgOptionIdxVar(ConfigOption optionId, unsigned int optionIdx);
-__attribute__((always_inline)) static inline Variant *
+FN_INLINE_ALWAYS Variant *
cfgOptionVar(const ConfigOption optionId)
{
return cfgOptionIdxVar(optionId, cfgOptionIdxDefault(optionId));
diff --git a/src/db/db.h b/src/db/db.h
index 9ac633222..74e7f051c 100644
--- a/src/db/db.h
+++ b/src/db/db.h
@@ -40,56 +40,56 @@ typedef struct DbPub
} DbPub;
// Archive mode loaded from the archive_mode GUC
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
dbArchiveMode(const Db *const this)
{
return THIS_PUB(Db)->archiveMode;
}
// Archive command loaded from the archive_command GUC
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
dbArchiveCommand(const Db *const this)
{
return THIS_PUB(Db)->archiveCommand;
}
// Control data
-__attribute__((always_inline)) static inline PgControl
+FN_INLINE_ALWAYS PgControl
dbPgControl(const Db *const this)
{
return THIS_PUB(Db)->pgControl;
}
// Data path loaded from the data_directory GUC
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
dbPgDataPath(const Db *const this)
{
return THIS_PUB(Db)->pgDataPath;
}
// Is the cluster a standby?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
dbIsStandby(const Db *const this)
{
return THIS_PUB(Db)->standby;
}
// Version loaded from the server_version_num GUC
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
dbPgVersion(const Db *const this)
{
return THIS_PUB(Db)->pgVersion;
}
// Checkpoint timeout loaded from the checkpoint_timeout GUC
-__attribute__((always_inline)) static inline TimeMSec
+FN_INLINE_ALWAYS TimeMSec
dbCheckpointTimeout(const Db *const this)
{
return THIS_PUB(Db)->checkpointTimeout;
}
// Database timeout from main/remote process
-__attribute__((always_inline)) static inline TimeMSec
+FN_INLINE_ALWAYS TimeMSec
dbDbTimeout(const Db *const this)
{
return THIS_PUB(Db)->dbTimeout;
@@ -142,7 +142,7 @@ String *dbWalSwitch(Db *this);
void dbClose(Db *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline Db *
+FN_INLINE_ALWAYS Db *
dbMove(Db *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -151,7 +151,7 @@ dbMove(Db *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
dbFree(Db *const this)
{
objFree(this);
diff --git a/src/info/info.h b/src/info/info.h
index d9a2e7fb3..e6e2ae5e1 100644
--- a/src/info/info.h
+++ b/src/info/info.h
@@ -50,7 +50,7 @@ typedef struct InfoPub
} InfoPub;
// Cipher passphrase if set
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoCipherPass(const Info *const this)
{
return THIS_PUB(Info)->cipherPass;
@@ -59,7 +59,7 @@ infoCipherPass(const Info *const this)
void infoCipherPassSet(Info *this, const String *cipherPass);
// pgBackRest version
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoBackrestVersion(const Info *const this)
{
return THIS_PUB(Info)->backrestVersion;
diff --git a/src/info/infoArchive.h b/src/info/infoArchive.h
index bdd9fa963..eac8c2da1 100644
--- a/src/info/infoArchive.h
+++ b/src/info/infoArchive.h
@@ -44,7 +44,7 @@ typedef struct InfoArchivePub
} InfoArchivePub;
// PostgreSQL info
-__attribute__((always_inline)) static inline InfoPg *
+FN_INLINE_ALWAYS InfoPg *
infoArchivePg(const InfoArchive *const this)
{
return THIS_PUB(InfoArchive)->infoPg;
@@ -53,14 +53,14 @@ infoArchivePg(const InfoArchive *const this)
InfoArchive *infoArchivePgSet(InfoArchive *this, unsigned int pgVersion, uint64_t pgSystemId);
// Current archive id
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoArchiveId(const InfoArchive *const this)
{
return infoPgArchiveId(infoArchivePg(this), infoPgDataCurrentId(infoArchivePg(this)));
}
// Cipher passphrase
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoArchiveCipherPass(const InfoArchive *const this)
{
return infoPgCipherPass(infoArchivePg(this));
@@ -74,7 +74,7 @@ const String *infoArchiveIdHistoryMatch(
const InfoArchive *this, const unsigned int historyId, const unsigned int pgVersion, const uint64_t pgSystemId);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline InfoArchive *
+FN_INLINE_ALWAYS InfoArchive *
infoArchiveMove(InfoArchive *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -83,7 +83,7 @@ infoArchiveMove(InfoArchive *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
infoArchiveFree(InfoArchive *const this)
{
objFree(this);
diff --git a/src/info/infoBackup.h b/src/info/infoBackup.h
index e8f8c73ce..606a03264 100644
--- a/src/info/infoBackup.h
+++ b/src/info/infoBackup.h
@@ -90,7 +90,7 @@ typedef struct InfoBackupPub
} InfoBackupPub;
// PostgreSQL info
-__attribute__((always_inline)) static inline InfoPg *
+FN_INLINE_ALWAYS InfoPg *
infoBackupPg(const InfoBackup *const this)
{
return THIS_PUB(InfoBackup)->infoPg;
@@ -99,7 +99,7 @@ infoBackupPg(const InfoBackup *const this)
InfoBackup *infoBackupPgSet(InfoBackup *this, unsigned int pgVersion, uint64_t pgSystemId, unsigned int pgCatalogVersion);
// Cipher passphrase
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoBackupCipherPass(const InfoBackup *const this)
{
return infoPgCipherPass(infoBackupPg(this));
@@ -109,7 +109,7 @@ infoBackupCipherPass(const InfoBackup *const this)
InfoBackupData infoBackupData(const InfoBackup *this, unsigned int backupDataIdx);
// Does the specified backup label exist?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
infoBackupLabelExists(const InfoBackup *const this, const String *const backupLabel)
{
ASSERT_INLINE(backupLabel != NULL);
@@ -117,7 +117,7 @@ infoBackupLabelExists(const InfoBackup *const this, const String *const backupLa
}
// Return a pointer to a structure from the current backup data given a label, else NULL
-__attribute__((always_inline)) static inline InfoBackupData *
+FN_INLINE_ALWAYS InfoBackupData *
infoBackupDataByLabel(const InfoBackup *const this, const String *const backupLabel)
{
ASSERT_INLINE(infoBackupLabelExists(this, backupLabel));
@@ -125,7 +125,7 @@ infoBackupDataByLabel(const InfoBackup *const this, const String *const backupLa
}
// Get total current backups
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
infoBackupDataTotal(const InfoBackup *const this)
{
return lstSize(THIS_PUB(InfoBackup)->backup);
@@ -150,7 +150,7 @@ StringList *infoBackupDataDependentList(const InfoBackup *this, const String *ba
StringList *infoBackupDataLabelList(const InfoBackup *this, const String *expression);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline InfoBackup *
+FN_INLINE_ALWAYS InfoBackup *
infoBackupMove(InfoBackup *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -159,7 +159,7 @@ infoBackupMove(InfoBackup *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
infoBackupFree(InfoBackup *const this)
{
objFree(this);
diff --git a/src/info/infoPg.h b/src/info/infoPg.h
index 45513ce92..9e0170c45 100644
--- a/src/info/infoPg.h
+++ b/src/info/infoPg.h
@@ -62,14 +62,14 @@ typedef struct InfoPgPub
String *infoPgArchiveId(const InfoPg *this, unsigned int pgDataIdx);
// Base info
-__attribute__((always_inline)) static inline Info *
+FN_INLINE_ALWAYS Info *
infoPgInfo(const InfoPg *const this)
{
return THIS_PUB(InfoPg)->info;
}
// Return the cipher passphrase
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
infoPgCipherPass(const InfoPg *const this)
{
return infoCipherPass(infoPgInfo(this));
@@ -88,7 +88,7 @@ InfoPgData infoPgDataCurrent(const InfoPg *this);
unsigned int infoPgDataCurrentId(const InfoPg *this);
// Total PostgreSQL data in the history
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
infoPgDataTotal(const InfoPg *const this)
{
return lstSize(THIS_PUB(InfoPg)->history);
diff --git a/src/info/manifest.h b/src/info/manifest.h
index 3de963aba..d6fee116b 100644
--- a/src/info/manifest.h
+++ b/src/info/manifest.h
@@ -182,20 +182,20 @@ typedef struct ManifestPub
} ManifestPub;
// Get/set the cipher subpassphrase
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
manifestCipherSubPass(const Manifest *const this)
{
return infoCipherPass(THIS_PUB(Manifest)->info);
}
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
manifestCipherSubPassSet(Manifest *const this, const String *const cipherSubPass)
{
infoCipherPassSet(THIS_PUB(Manifest)->info, cipherSubPass);
}
// Get manifest configuration and options
-__attribute__((always_inline)) static inline const ManifestData *
+FN_INLINE_ALWAYS const ManifestData *
manifestData(const Manifest *const this)
{
return &(THIS_PUB(Manifest)->data);
@@ -228,7 +228,7 @@ Functions
void manifestLinkCheck(const Manifest *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline Manifest *
+FN_INLINE_ALWAYS Manifest *
manifestMove(Manifest *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -243,7 +243,7 @@ void manifestValidate(Manifest *this, bool strict);
/***********************************************************************************************************************************
Db functions and getters/setters
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline const ManifestDb *
+FN_INLINE_ALWAYS const ManifestDb *
manifestDb(const Manifest *const this, const unsigned int dbIdx)
{
return lstGet(THIS_PUB(Manifest)->dbList, dbIdx);
@@ -252,14 +252,14 @@ manifestDb(const Manifest *const this, const unsigned int dbIdx)
const ManifestDb *manifestDbFind(const Manifest *this, const String *name);
// If the database requested is not found in the list, return the default passed rather than throw an error
-__attribute__((always_inline)) static inline const ManifestDb *
+FN_INLINE_ALWAYS const ManifestDb *
manifestDbFindDefault(const Manifest *const this, const String *const name, const ManifestDb *const dbDefault)
{
ASSERT_INLINE(name != NULL);
return lstFindDefault(THIS_PUB(Manifest)->dbList, &name, (void *)dbDefault);
}
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
manifestDbTotal(const Manifest *const this)
{
return lstSize(THIS_PUB(Manifest)->dbList);
@@ -274,21 +274,21 @@ typedef struct ManifestFilePack ManifestFilePack;
ManifestFile manifestFileUnpack(const Manifest *manifest, const ManifestFilePack *filePack);
// Get file in pack format by index
-__attribute__((always_inline)) static inline const ManifestFilePack *
+FN_INLINE_ALWAYS const ManifestFilePack *
manifestFilePackGet(const Manifest *const this, const unsigned int fileIdx)
{
return *(ManifestFilePack **)lstGet(THIS_PUB(Manifest)->fileList, fileIdx);
}
// Get file name
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
manifestFileNameGet(const Manifest *const this, const unsigned int fileIdx)
{
return (const String *)manifestFilePackGet(this, fileIdx);
}
// Get file by index
-__attribute__((always_inline)) static inline ManifestFile
+FN_INLINE_ALWAYS ManifestFile
manifestFile(const Manifest *const this, const unsigned int fileIdx)
{
return manifestFileUnpack(this, manifestFilePackGet(this, fileIdx));
@@ -301,7 +301,7 @@ void manifestFileAdd(Manifest *this, ManifestFile *file);
const ManifestFilePack *manifestFilePackFind(const Manifest *this, const String *name);
// Find file by name
-__attribute__((always_inline)) static inline ManifestFile
+FN_INLINE_ALWAYS ManifestFile
manifestFileFind(const Manifest *const this, const String *const name)
{
ASSERT_INLINE(name != NULL);
@@ -309,7 +309,7 @@ manifestFileFind(const Manifest *const this, const String *const name)
}
// Does the file exist?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
manifestFileExists(const Manifest *const this, const String *const name)
{
ASSERT_INLINE(name != NULL);
@@ -318,7 +318,7 @@ manifestFileExists(const Manifest *const this, const String *const name)
void manifestFileRemove(const Manifest *this, const String *name);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
manifestFileTotal(const Manifest *const this)
{
return lstSize(THIS_PUB(Manifest)->fileList);
@@ -332,7 +332,7 @@ void manifestFileUpdate(
/***********************************************************************************************************************************
Link functions and getters/setters
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline const ManifestLink *
+FN_INLINE_ALWAYS const ManifestLink *
manifestLink(const Manifest *const this, const unsigned int linkIdx)
{
return lstGet(THIS_PUB(Manifest)->linkList, linkIdx);
@@ -342,7 +342,7 @@ void manifestLinkAdd(Manifest *this, const ManifestLink *link);
const ManifestLink *manifestLinkFind(const Manifest *this, const String *name);
// If the link requested is not found in the list, return the default passed rather than throw an error
-__attribute__((always_inline)) static inline const ManifestLink *
+FN_INLINE_ALWAYS const ManifestLink *
manifestLinkFindDefault(const Manifest *const this, const String *const name, const ManifestLink *const linkDefault)
{
ASSERT_INLINE(name != NULL);
@@ -351,7 +351,7 @@ manifestLinkFindDefault(const Manifest *const this, const String *const name, co
void manifestLinkRemove(const Manifest *this, const String *name);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
manifestLinkTotal(const Manifest *const this)
{
return lstSize(THIS_PUB(Manifest)->linkList);
@@ -362,7 +362,7 @@ void manifestLinkUpdate(const Manifest *this, const String *name, const String *
/***********************************************************************************************************************************
Path functions and getters/setters
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline const ManifestPath *
+FN_INLINE_ALWAYS const ManifestPath *
manifestPath(const Manifest *const this, const unsigned int pathIdx)
{
return lstGet(THIS_PUB(Manifest)->pathList, pathIdx);
@@ -371,7 +371,7 @@ manifestPath(const Manifest *const this, const unsigned int pathIdx)
const ManifestPath *manifestPathFind(const Manifest *this, const String *name);
// If the path requested is not found in the list, return the default passed rather than throw an error
-__attribute__((always_inline)) static inline const ManifestPath *
+FN_INLINE_ALWAYS const ManifestPath *
manifestPathFindDefault(const Manifest *const this, const String *const name, const ManifestPath *const pathDefault)
{
ASSERT_INLINE(name != NULL);
@@ -381,7 +381,7 @@ manifestPathFindDefault(const Manifest *const this, const String *const name, co
// Data directory relative path for any manifest file/link/path/target name
String *manifestPathPg(const String *manifestPath);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
manifestPathTotal(const Manifest *const this)
{
return lstSize(THIS_PUB(Manifest)->pathList);
@@ -390,7 +390,7 @@ manifestPathTotal(const Manifest *const this)
/***********************************************************************************************************************************
Target functions and getters/setters
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline const ManifestTarget *
+FN_INLINE_ALWAYS const ManifestTarget *
manifestTarget(const Manifest *const this, const unsigned int targetIdx)
{
return lstGet(THIS_PUB(Manifest)->targetList, targetIdx);
@@ -400,7 +400,7 @@ void manifestTargetAdd(Manifest *this, const ManifestTarget *target);
const ManifestTarget *manifestTargetFind(const Manifest *this, const String *name);
// If the target requested is not found in the list, return the default passed rather than throw an error
-__attribute__((always_inline)) static inline const ManifestTarget *
+FN_INLINE_ALWAYS const ManifestTarget *
manifestTargetFindDefault(const Manifest *const this, const String *const name, const ManifestTarget *const targetDefault)
{
ASSERT_INLINE(name != NULL);
@@ -408,7 +408,7 @@ manifestTargetFindDefault(const Manifest *const this, const String *const name,
}
// Base target, i.e. the target that is the data directory
-__attribute__((always_inline)) static inline const ManifestTarget *
+FN_INLINE_ALWAYS const ManifestTarget *
manifestTargetBase(const Manifest *const this)
{
return manifestTargetFind(this, MANIFEST_TARGET_PGDATA_STR);
@@ -419,7 +419,7 @@ String *manifestTargetPath(const Manifest *this, const ManifestTarget *target);
void manifestTargetRemove(const Manifest *this, const String *name);
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
manifestTargetTotal(const Manifest *const this)
{
return lstSize(THIS_PUB(Manifest)->targetList);
@@ -430,7 +430,7 @@ void manifestTargetUpdate(const Manifest *this, const String *name, const String
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
manifestFree(Manifest *const this)
{
objFree(this);
diff --git a/src/postgres/client.h b/src/postgres/client.h
index 223f1865d..e85ef98f6 100644
--- a/src/postgres/client.h
+++ b/src/postgres/client.h
@@ -48,35 +48,35 @@ typedef struct PgClientPub
} PgClientPub;
// Pg host
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
pgClientHost(const PgClient *const this)
{
return THIS_PUB(PgClient)->host;
}
// Pg port
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
pgClientPort(const PgClient *const this)
{
return THIS_PUB(PgClient)->port;
}
// Pg database
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
pgClientDatabase(const PgClient *const this)
{
return THIS_PUB(PgClient)->database;
}
// Pg user
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
pgClientUser(const PgClient *const this)
{
return THIS_PUB(PgClient)->user;
}
// Timeout for statements/queries
-__attribute__((always_inline)) static inline TimeMSec
+FN_INLINE_ALWAYS TimeMSec
pgClientTimeout(const PgClient *const this)
{
return THIS_PUB(PgClient)->timeout;
@@ -89,7 +89,7 @@ Functions
PgClient *pgClientOpen(PgClient *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline PgClient *
+FN_INLINE_ALWAYS PgClient *
pgClientMove(PgClient *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -104,7 +104,7 @@ void pgClientClose(PgClient *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
pgClientFree(PgClient *const this)
{
objFree(this);
diff --git a/src/protocol/client.h b/src/protocol/client.h
index 06e9e1ce0..0c8a66156 100644
--- a/src/protocol/client.h
+++ b/src/protocol/client.h
@@ -50,7 +50,7 @@ be added to the expected binary size to account for overhead.
#define PROTOCOL_PACK_DEFAULT_SIZE 1024
// Pack large enough for standard data. Note that the buffer will automatically resize when required.
-__attribute__((always_inline)) static inline PackWrite *
+FN_INLINE_ALWAYS PackWrite *
protocolPackNew(void)
{
return pckWriteNewP(.size = PROTOCOL_PACK_DEFAULT_SIZE);
@@ -70,7 +70,7 @@ typedef struct ProtocolClientPub
} ProtocolClientPub;
// Read file descriptor
-__attribute__((always_inline)) static inline int
+FN_INLINE_ALWAYS int
protocolClientIoReadFd(ProtocolClient *const this)
{
return ioReadFd(THIS_PUB(ProtocolClient)->read);
@@ -83,14 +83,14 @@ Functions
PackRead *protocolClientExecute(ProtocolClient *this, ProtocolCommand *command, bool resultRequired);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline ProtocolClient *
+FN_INLINE_ALWAYS ProtocolClient *
protocolClientMove(ProtocolClient *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
}
// Do not send exit command to the server when the client is freed
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolClientNoExit(ProtocolClient *const this)
{
memContextCallbackClear(objMemContext(this));
@@ -112,7 +112,7 @@ void protocolClientDataPut(ProtocolClient *this, PackWrite *data);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolClientFree(ProtocolClient *const this)
{
objFree(this);
diff --git a/src/protocol/command.h b/src/protocol/command.h
index d0d8fcd85..614205968 100644
--- a/src/protocol/command.h
+++ b/src/protocol/command.h
@@ -22,7 +22,7 @@ Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
// Move to a new parent mem context
-__attribute__((always_inline)) static inline ProtocolCommand *
+FN_INLINE_ALWAYS ProtocolCommand *
protocolCommandMove(ProtocolCommand *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -37,7 +37,7 @@ void protocolCommandPut(ProtocolCommand *this, IoWrite *write);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolCommandFree(ProtocolCommand *const this)
{
objFree(this);
diff --git a/src/protocol/parallel.h b/src/protocol/parallel.h
index 7ebf2bb9d..3eb36d77f 100644
--- a/src/protocol/parallel.h
+++ b/src/protocol/parallel.h
@@ -48,7 +48,7 @@ unsigned int protocolParallelProcess(ProtocolParallel *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolParallelFree(ProtocolParallel *const this)
{
objFree(this);
diff --git a/src/protocol/parallelJob.h b/src/protocol/parallelJob.h
index d5d706dcc..2cf7a1c40 100644
--- a/src/protocol/parallelJob.h
+++ b/src/protocol/parallelJob.h
@@ -46,20 +46,20 @@ typedef struct ProtocolParallelJobPub
} ProtocolParallelJobPub;
// Job command
-__attribute__((always_inline)) static inline ProtocolCommand *
+FN_INLINE_ALWAYS ProtocolCommand *
protocolParallelJobCommand(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->command;
}
// Job error
-__attribute__((always_inline)) static inline int
+FN_INLINE_ALWAYS int
protocolParallelJobErrorCode(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->code;
}
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
protocolParallelJobErrorMessage(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->message;
@@ -68,14 +68,14 @@ protocolParallelJobErrorMessage(const ProtocolParallelJob *const this)
void protocolParallelJobErrorSet(ProtocolParallelJob *this, int code, const String *message);
// Job key
-__attribute__((always_inline)) static inline const Variant *
+FN_INLINE_ALWAYS const Variant *
protocolParallelJobKey(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->key;
}
// Process Id
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
protocolParallelJobProcessId(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->processId;
@@ -84,7 +84,7 @@ protocolParallelJobProcessId(const ProtocolParallelJob *const this)
void protocolParallelJobProcessIdSet(ProtocolParallelJob *this, unsigned int processId);
// Job result
-__attribute__((always_inline)) static inline PackRead *
+FN_INLINE_ALWAYS PackRead *
protocolParallelJobResult(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->result;
@@ -93,7 +93,7 @@ protocolParallelJobResult(const ProtocolParallelJob *const this)
void protocolParallelJobResultSet(ProtocolParallelJob *const this, PackRead *const result);
// Job state
-__attribute__((always_inline)) static inline ProtocolParallelJobState
+FN_INLINE_ALWAYS ProtocolParallelJobState
protocolParallelJobState(const ProtocolParallelJob *const this)
{
return THIS_PUB(ProtocolParallelJob)->state;
@@ -105,7 +105,7 @@ void protocolParallelJobStateSet(ProtocolParallelJob *this, ProtocolParallelJobS
Functions
***********************************************************************************************************************************/
// Move to new parent mem context
-__attribute__((always_inline)) static inline ProtocolParallelJob *
+FN_INLINE_ALWAYS ProtocolParallelJob *
protocolParallelJobMove(ProtocolParallelJob *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -114,7 +114,7 @@ protocolParallelJobMove(ProtocolParallelJob *const this, MemContext *const paren
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolParallelJobFree(ProtocolParallelJob *const this)
{
objFree(this);
diff --git a/src/protocol/server.h b/src/protocol/server.h
index ff72b3b2d..ab6fa889b 100644
--- a/src/protocol/server.h
+++ b/src/protocol/server.h
@@ -66,7 +66,7 @@ void protocolServerProcess(
const unsigned int handlerListSize);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline ProtocolServer *
+FN_INLINE_ALWAYS ProtocolServer *
protocolServerMove(ProtocolServer *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -75,7 +75,7 @@ protocolServerMove(ProtocolServer *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
protocolServerFree(ProtocolServer *const this)
{
objFree(this);
diff --git a/src/storage/iterator.h b/src/storage/iterator.h
index c657013a5..19126f525 100644
--- a/src/storage/iterator.h
+++ b/src/storage/iterator.h
@@ -26,7 +26,7 @@ Functions
bool storageItrMore(StorageIterator *this);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline StorageIterator *
+FN_INLINE_ALWAYS StorageIterator *
storageItrMove(StorageIterator *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -39,7 +39,7 @@ StorageInfo storageItrNext(StorageIterator *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageItrFree(StorageIterator *const this)
{
objFree(this);
diff --git a/src/storage/list.h b/src/storage/list.h
index dc1e4ff42..624af4b31 100644
--- a/src/storage/list.h
+++ b/src/storage/list.h
@@ -27,28 +27,28 @@ typedef struct StorageListPub
} StorageListPub;
// Empty?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageLstEmpty(const StorageList *const this)
{
return lstEmpty(THIS_PUB(StorageList)->list);
}
// Storage info level
-__attribute__((always_inline)) static inline StorageInfoLevel
+FN_INLINE_ALWAYS StorageInfoLevel
storageLstLevel(const StorageList *const this)
{
return THIS_PUB(StorageList)->level;
}
// List size
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
storageLstSize(const StorageList *const this)
{
return lstSize(THIS_PUB(StorageList)->list);
}
// List size
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageLstSort(StorageList *const this, const SortOrder sortOrder)
{
lstSort(THIS_PUB(StorageList)->list, sortOrder);
@@ -61,7 +61,7 @@ Functions
void storageLstInsert(StorageList *this, unsigned int idx, const StorageInfo *info);
// Add info
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageLstAdd(StorageList *const this, const StorageInfo *const info)
{
storageLstInsert(this, storageLstSize(this), info);
@@ -71,7 +71,7 @@ storageLstAdd(StorageList *const this, const StorageInfo *const info)
StorageInfo storageLstGet(StorageList *this, unsigned int idx);
// Move to a new parent mem context
-__attribute__((always_inline)) static inline StorageList *
+FN_INLINE_ALWAYS StorageList *
storageLstMove(StorageList *const this, MemContext *const parentNew)
{
return objMove(this, parentNew);
@@ -80,7 +80,7 @@ storageLstMove(StorageList *const this, MemContext *const parentNew)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageLstFree(StorageList *const this)
{
objFree(this);
diff --git a/src/storage/read.h b/src/storage/read.h
index b25291b98..5a3de64cf 100644
--- a/src/storage/read.h
+++ b/src/storage/read.h
@@ -17,7 +17,7 @@ typedef struct StorageRead StorageRead;
/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline StorageRead *
+FN_INLINE_ALWAYS StorageRead *
storageReadMove(StorageRead *const this, MemContext *const parentNew)
{
return objMoveContext(this, parentNew);
@@ -34,42 +34,42 @@ typedef struct StorageReadPub
} StorageReadPub;
// Should a missing file be ignored?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageReadIgnoreMissing(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->interface->ignoreMissing;
}
// Read interface
-__attribute__((always_inline)) static inline IoRead *
+FN_INLINE_ALWAYS IoRead *
storageReadIo(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->io;
}
// Is there a read limit? NULL for no limit.
-__attribute__((always_inline)) static inline const Variant *
+FN_INLINE_ALWAYS const Variant *
storageReadLimit(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->interface->limit;
}
// File name
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
storageReadName(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->interface->name;
}
// Is there a read limit? NULL for no limit.
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
storageReadOffset(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->interface->offset;
}
// Get file type
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
storageReadType(const StorageRead *const this)
{
return THIS_PUB(StorageRead)->interface->type;
@@ -78,7 +78,7 @@ storageReadType(const StorageRead *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageReadFree(StorageRead *const this)
{
objFreeContext(this);
diff --git a/src/storage/storage.h b/src/storage/storage.h
index e462b854f..7c7458dd0 100644
--- a/src/storage/storage.h
+++ b/src/storage/storage.h
@@ -245,14 +245,14 @@ void storageRemove(const Storage *this, const String *fileExp, StorageRemovePara
Getters/Setters
***********************************************************************************************************************************/
// Is the feature supported by this storage?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageFeature(const Storage *const this, const StorageFeature feature)
{
return THIS_PUB(Storage)->interface.feature >> feature & 1;
}
// Storage type (posix, cifs, etc.)
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
storageType(const Storage *const this)
{
return THIS_PUB(Storage)->type;
diff --git a/src/storage/storage.intern.h b/src/storage/storage.intern.h
index 58f69d0cd..73570254d 100644
--- a/src/storage/storage.intern.h
+++ b/src/storage/storage.intern.h
@@ -314,14 +314,14 @@ typedef struct StoragePub
} StoragePub;
// Storage driver
-__attribute__((always_inline)) static inline void *
+FN_INLINE_ALWAYS void *
storageDriver(const Storage *const this)
{
return THIS_PUB(Storage)->driver;
}
// Storage interface
-__attribute__((always_inline)) static inline StorageInterface
+FN_INLINE_ALWAYS StorageInterface
storageInterface(const Storage *const this)
{
return THIS_PUB(Storage)->interface;
diff --git a/src/storage/write.h b/src/storage/write.h
index 9d7c249d1..04426d974 100644
--- a/src/storage/write.h
+++ b/src/storage/write.h
@@ -20,7 +20,7 @@ typedef struct StorageWrite StorageWrite;
Functions
***********************************************************************************************************************************/
// Move to a new parent mem context
-__attribute__((always_inline)) static inline StorageWrite *
+FN_INLINE_ALWAYS StorageWrite *
storageWriteMove(StorageWrite *const this, MemContext *const parentNew)
{
return objMoveContext(this, parentNew);
@@ -38,63 +38,63 @@ typedef struct StorageWritePub
// Will the file be written atomically? Atomic writes means the file will be complete or be missing. Filesystems have different ways
// to accomplish this.
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageWriteAtomic(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->atomic;
}
// Will the path be created if required?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageWriteCreatePath(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->createPath;
}
// Write interface
-__attribute__((always_inline)) static inline IoWrite *
+FN_INLINE_ALWAYS IoWrite *
storageWriteIo(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->io;
}
// File mode
-__attribute__((always_inline)) static inline mode_t
+FN_INLINE_ALWAYS mode_t
storageWriteModeFile(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->modeFile;
}
// Path mode (if the destination path needs to be create)
-__attribute__((always_inline)) static inline mode_t
+FN_INLINE_ALWAYS mode_t
storageWriteModePath(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->modePath;
}
// File name
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
storageWriteName(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->name;
}
// Will the file be synced before it is closed?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageWriteSyncFile(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->syncFile;
}
// Will the path be synced after the file is closed?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
storageWriteSyncPath(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->syncPath;
}
// File type
-__attribute__((always_inline)) static inline StringId
+FN_INLINE_ALWAYS StringId
storageWriteType(const StorageWrite *const this)
{
return THIS_PUB(StorageWrite)->interface->type;
@@ -103,7 +103,7 @@ storageWriteType(const StorageWrite *const this)
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
storageWriteFree(StorageWrite *const this)
{
objFreeContext(this);
diff --git a/test/src/command/test/build.h b/test/src/command/test/build.h
index dfecf8272..4c2c756c8 100644
--- a/test/src/command/test/build.h
+++ b/test/src/command/test/build.h
@@ -47,42 +47,42 @@ typedef struct TestBuildPub
} TestBuildPub;
// Repository path
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
testBldPathRepo(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->pathRepo;
}
// Test path
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
testBldPathTest(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->pathTest;
}
// Repository storage
-__attribute__((always_inline)) static inline const Storage *
+FN_INLINE_ALWAYS const Storage *
testBldStorageRepo(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->storageRepo;
}
// Test storage
-__attribute__((always_inline)) static inline const Storage *
+FN_INLINE_ALWAYS const Storage *
testBldStorageTest(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->storageTest;
}
// Vm
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
testBldVm(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->vm;
}
// Vm id
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
testBldVmId(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->vmId;
@@ -90,63 +90,63 @@ testBldVmId(const TestBuild *const this)
// Test Definition
-__attribute__((always_inline)) static inline const TestDefModule *
+FN_INLINE_ALWAYS const TestDefModule *
testBldModule(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->module;
}
// Specific test to run
-__attribute__((always_inline)) static inline unsigned int
+FN_INLINE_ALWAYS unsigned int
testBldTest(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->test;
}
// Log level
-__attribute__((always_inline)) static inline LogLevel
+FN_INLINE_ALWAYS LogLevel
testBldLogLevel(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->logLevel;
}
// Log time/timestamps
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
testBldLogTime(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->logTime;
}
// Test in timezone
-__attribute__((always_inline)) static inline const String *
+FN_INLINE_ALWAYS const String *
testBldTimeZone(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->timeZone;
}
// Generate coverage?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
testBldCoverage(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->coverage;
}
// Generate profile repo?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
testBldProfile(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->profile;
}
// Optimize code?
-__attribute__((always_inline)) static inline bool
+FN_INLINE_ALWAYS bool
testBldOptimize(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->optimize;
}
// Scale
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
testBldScale(const TestBuild *const this)
{
return THIS_PUB(TestBuild)->scale;
@@ -160,7 +160,7 @@ void testBldUnit(TestBuild *this);
/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
-__attribute__((always_inline)) static inline void
+FN_INLINE_ALWAYS void
testBuildFree(TestBuild *const this)
{
objFree(this);
diff --git a/test/src/common/harnessConfig.c b/test/src/common/harnessConfig.c
index 376b74c34..96a80290f 100644
--- a/test/src/common/harnessConfig.c
+++ b/test/src/common/harnessConfig.c
@@ -199,7 +199,7 @@ hrnCfgArgKeyRawReset(StringList *argList, ConfigOption optionId, unsigned option
}
/**********************************************************************************************************************************/
-__attribute__((always_inline)) static inline const char *
+FN_INLINE_ALWAYS const char *
hrnCfgEnvName(const ConfigOption optionId, const unsigned optionKey)
{
return strZ(
diff --git a/test/src/common/harnessPostgres.h b/test/src/common/harnessPostgres.h
index 51991873c..335e3dcd8 100644
--- a/test/src/common/harnessPostgres.h
+++ b/test/src/common/harnessPostgres.h
@@ -67,7 +67,7 @@ unsigned int hrnPgCatalogVersion(unsigned int pgVersion);
Buffer *hrnPgControlToBuffer(PgControl pgControl);
// Get system id by version
-__attribute__((always_inline)) static inline uint64_t
+FN_INLINE_ALWAYS uint64_t
hrnPgSystemId(const unsigned int pgVersion)
{
return 10000000000000000000ULL + (uint64_t)pgVersion;