src/dynapi/SDL_dynapi.h
author Ryan C. Gordon <icculus@icculus.org>
Fri, 01 May 2015 01:12:48 -0400
changeset 9580 d37ef6990bf9
parent 9442 6073a89fc0eb
child 9619 b94b6d0bff0f
permissions -rw-r--r--
checkkeys: Readded the KEYUP event test.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     1
/*
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     2
  Simple DirectMedia Layer
8149
681eb46b8ac4 Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents: 8121
diff changeset
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     4
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     5
  This software is provided 'as-is', without any express or implied
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     6
  warranty.  In no event will the authors be held liable for any damages
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     7
  arising from the use of this software.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     8
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     9
  Permission is granted to anyone to use this software for any purpose,
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    10
  including commercial applications, and to alter it and redistribute it
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    11
  freely, subject to the following restrictions:
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    12
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    13
  1. The origin of this software must not be misrepresented; you must not
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    14
     claim that you wrote the original software. If you use this software
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    15
     in a product, an acknowledgment in the product documentation would be
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    16
     appreciated but is not required.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    17
  2. Altered source versions must be plainly marked as such, and must not be
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    18
     misrepresented as being the original software.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    19
  3. This notice may not be removed or altered from any source distribution.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    20
*/
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    21
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    22
#ifndef _SDL_dynapi_h
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    23
#define _SDL_dynapi_h
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    24
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    25
/* IMPORTANT:
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    26
   This is the master switch to disabling the dynamic API. We made it so you
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    27
   have to hand-edit an internal source file in SDL to turn it off; you
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    28
   can do it if you want it badly enough, but hopefully you won't want to.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    29
   You should understand the ramifications of turning this off: it makes it
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    30
   hard to update your SDL in the field, and impossible if you've statically
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    31
   linked SDL into your app. Understand that platforms change, and if we can't
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    32
   drop in an updated SDL, your application can definitely break some time
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    33
   in the future, even if it's fine today.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    34
   To be sure, as new system-level video and audio APIs are introduced, an
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    35
   updated SDL can transparently take advantage of them, but your program will
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    36
   not without this feature. Think hard before turning it off.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    37
*/
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    38
#ifdef SDL_DYNAMIC_API  /* Tried to force it on the command line? */
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    39
#error Nope, you have to edit this file to force this off.
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    40
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    41
8121
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    42
#ifdef __APPLE__
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    43
#include "TargetConditionals.h"
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    44
#endif
1b62b081a83b Fix detection of iOS for disabling dynamic API.
Ryan C. Gordon <icculus@icculus.org>
parents: 8094
diff changeset
    45
9278
8900afb78a19 Initial merge of Emscripten port!
Ryan C. Gordon <icculus@icculus.org>
parents: 8833
diff changeset
    46
#if TARGET_OS_IPHONE || __native_client__ || __EMSCRIPTEN__  /* probably not useful on iOS, NACL or Emscripten. */
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    47
#define SDL_DYNAMIC_API 0
8611
a762dfc67e1a Fixed various build and runtime errors when using WinRT with VS2012.
David Ludwig <dludwig@pobox.com>
parents: 8149
diff changeset
    48
#elif SDL_BUILDING_WINRT /* probaly not useful on WinRT, given current .dll loading restrictions */
a762dfc67e1a Fixed various build and runtime errors when using WinRT with VS2012.
David Ludwig <dludwig@pobox.com>
parents: 8149
diff changeset
    49
#define SDL_DYNAMIC_API 0
8640
89bab8249c74 Don't overwrite SDL_dynapi.h in checker-buildbot.sh.
Ryan C. Gordon <icculus@icculus.org>
parents: 8611
diff changeset
    50
#elif defined(__clang_analyzer__)
89bab8249c74 Don't overwrite SDL_dynapi.h in checker-buildbot.sh.
Ryan C. Gordon <icculus@icculus.org>
parents: 8611
diff changeset
    51
#define SDL_DYNAMIC_API 0  /* Turn off for static analysis, so reports are more clear. */
9442
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    52
#endif
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    53
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    54
/* everyone else. This is where we turn on the API if nothing forced it off. */
6073a89fc0eb Make the Dynamic API master switch more clear.
Ryan C. Gordon <icculus@icculus.org>
parents: 9278
diff changeset
    55
#ifndef SDL_DYNAMIC_API
8094
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    56
#define SDL_DYNAMIC_API 1
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    57
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    58
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    59
#endif
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    60
9efaae827924 Implemented the Dynamic API magic.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    61
/* vi: set ts=4 sw=4 expandtab: */