-- File that defines macros for our SQL preprocessing
#define __CONCAT__(x, y) x##y
#define __EXPANDED_EXTENSION_FUNCTION__(PREFIX, NAME) __CONCAT__(PREFIX,NAME)

#define __EXTENSION_OBJECT__(NAME) __EXPANDED_EXTENSION_FUNCTION__(__EXTENSION_OBJECT_PREFIX__, NAME)
#define __EXTENSION_OBJECT_V2__(NAME) __EXPANDED_EXTENSION_FUNCTION__(__EXTENSION_OBJECT_PREFIX_V2__, NAME)


#define __SINGLE_QUOTE_CHAR__ '
#define __CONCAT_3__(x, y, z) x##y##z
#define __CONCAT_4__(w, x, y, z) w##x##y##z

#define __CONCAT_NAME_FUNCTION__(PREFIX, NAME, SUFFIX) __CONCAT_3__(PREFIX, NAME, SUFFIX)
#define __SINGLE_QUOTED_STRING__(x) __CONCAT_NAME_FUNCTION__(__SINGLE_QUOTE_CHAR__, x, __SINGLE_QUOTE_CHAR__)

#define __EXTENSION_INDEX_OPCLASS__(NAME, INDEXOPCLASSTYPE) __CONCAT_4__(bson_, NAME, _, INDEXOPCLASSTYPE)
#define __EXTENSION_SHORTENED_INDEX_OPCLASS__(NAME, INDEXOPCLASSTYPE) __CONCAT_4__(documentdb_, NAME, INDEXOPCLASSTYPE, _ops)