1/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ 2/* 3 * soup-version.h: Version information 4 * 5 * Copyright (C) 2012 Igalia S.L. 6 */ 7 8#pragma once 9 10#include <glib.h> 11 12G_BEGIN_DECLS 13 14#define SOUP_MAJOR_VERSION ({major_version}) 15#define SOUP_MINOR_VERSION ({minor_version}) 16#define SOUP_MICRO_VERSION ({micro_version}) 17 18#define SOUP_CHECK_VERSION(major, minor, micro) \ 19 (SOUP_MAJOR_VERSION > (major) || \ 20 (SOUP_MAJOR_VERSION == (major) && SOUP_MINOR_VERSION > (minor)) || \ 21 (SOUP_MAJOR_VERSION == (major) && SOUP_MINOR_VERSION == (minor) && \ 22 SOUP_MICRO_VERSION >= (micro))) 23 24#ifndef _SOUP_EXTERN 25#define _SOUP_EXTERN extern 26#endif 27 28/* We prefix variable declarations so they can 29 * properly get exported in Windows DLLs. 30 */ 31#ifndef SOUP_VAR 32# ifdef G_PLATFORM_WIN32 33# ifdef LIBSOUP_COMPILATION 34# ifdef DLL_EXPORT 35# define SOUP_VAR __declspec(dllexport) 36# else /* !DLL_EXPORT */ 37# define SOUP_VAR extern 38# endif /* !DLL_EXPORT */ 39# else /* !SOUP_COMPILATION */ 40# define SOUP_VAR extern __declspec(dllimport) 41# endif /* !LIBSOUP_COMPILATION */ 42# else /* !G_PLATFORM_WIN32 */ 43# define SOUP_VAR _SOUP_EXTERN 44# endif /* !G_PLATFORM_WIN32 */ 45#endif /* SOUP_VAR */ 46 47/* Deprecation / Availability macros */ 48{version_macros} 49 50/* evaluates to the current stable version; for development cycles, 51 * this means the next stable target 52 */ 53#if (SOUP_MINOR_VERSION % 2) 54#define SOUP_VERSION_CUR_STABLE (G_ENCODE_VERSION (SOUP_MAJOR_VERSION, SOUP_MINOR_VERSION + 1)) 55#else 56#define SOUP_VERSION_CUR_STABLE (G_ENCODE_VERSION (SOUP_MAJOR_VERSION, SOUP_MINOR_VERSION)) 57#endif 58 59/* evaluates to the previous stable version */ 60#if (SOUP_MINOR_VERSION == 0) 61/* Can't have -1 for previous version */ 62# define SOUP_VERSION_PREV_STABLE (G_ENCODE_VERSION (SOUP_MAJOR_VERSION, 0)) 63#else 64# if (SOUP_MINOR_VERSION % 2) 65# define SOUP_VERSION_PREV_STABLE (G_ENCODE_VERSION (SOUP_MAJOR_VERSION, SOUP_MINOR_VERSION - 1)) 66# else 67# define SOUP_VERSION_PREV_STABLE (G_ENCODE_VERSION (SOUP_MAJOR_VERSION, SOUP_MINOR_VERSION - 2)) 68# endif 69#endif 70 71#ifndef SOUP_VERSION_MIN_REQUIRED 72# define SOUP_VERSION_MIN_REQUIRED (SOUP_VERSION_CUR_STABLE) 73#elif SOUP_VERSION_MIN_REQUIRED == 0 74# undef SOUP_VERSION_MIN_REQUIRED 75# define SOUP_VERSION_MIN_REQUIRED (SOUP_VERSION_CUR_STABLE + 2) 76#endif 77 78#if !defined (SOUP_VERSION_MAX_ALLOWED) || (SOUP_VERSION_MAX_ALLOWED == 0) 79# undef SOUP_VERSION_MAX_ALLOWED 80# define SOUP_VERSION_MAX_ALLOWED (SOUP_VERSION_CUR_STABLE) 81#endif 82 83/* sanity checks */ 84#if SOUP_VERSION_MIN_REQUIRED > SOUP_VERSION_CUR_STABLE 85#error "SOUP_VERSION_MIN_REQUIRED must be <= SOUP_VERSION_CUR_STABLE" 86#endif 87#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_MIN_REQUIRED 88#error "SOUP_VERSION_MAX_ALLOWED must be >= SOUP_VERSION_MIN_REQUIRED" 89#endif 90#if SOUP_VERSION_MIN_REQUIRED < SOUP_VERSION_3_0 91#error "SOUP_VERSION_MIN_REQUIRED must be >= SOUP_VERSION_3_0" 92#endif 93 94#define SOUP_AVAILABLE_IN_ALL _SOUP_EXTERN 95 96{version_attributes} 97 98SOUP_AVAILABLE_IN_ALL 99guint soup_get_major_version (void); 100 101SOUP_AVAILABLE_IN_ALL 102guint soup_get_minor_version (void); 103 104SOUP_AVAILABLE_IN_ALL 105guint soup_get_micro_version (void); 106 107SOUP_AVAILABLE_IN_ALL 108gboolean soup_check_version (guint major, 109 guint minor, 110 guint micro); 111 112G_END_DECLS 113