summaryrefslogtreecommitdiff
path: root/Source/3rdParty/SDL2/src/dynapi/gendynapi.pl
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-19 23:06:27 +0800
committerchai <chaifix@163.com>2019-03-19 23:06:27 +0800
commit1497dccd63a84b7ee2b229b1ad9c5c02718f2a78 (patch)
treef8d1bff50da13e126d08c7345653e002e293202d /Source/3rdParty/SDL2/src/dynapi/gendynapi.pl
parent5e2a973516e0729b225da9de0b03015dc5854ac4 (diff)
*rename
Diffstat (limited to 'Source/3rdParty/SDL2/src/dynapi/gendynapi.pl')
-rw-r--r--Source/3rdParty/SDL2/src/dynapi/gendynapi.pl141
1 files changed, 0 insertions, 141 deletions
diff --git a/Source/3rdParty/SDL2/src/dynapi/gendynapi.pl b/Source/3rdParty/SDL2/src/dynapi/gendynapi.pl
deleted file mode 100644
index 721241b..0000000
--- a/Source/3rdParty/SDL2/src/dynapi/gendynapi.pl
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/usr/bin/perl -w
-
-# Simple DirectMedia Layer
-# Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-
-# WHAT IS THIS?
-# When you add a public API to SDL, please run this script, make sure the
-# output looks sane (hg diff, it adds to existing files), and commit it.
-# It keeps the dynamic API jump table operating correctly.
-
-# If you wanted this to be readable, you shouldn't have used perl.
-
-use warnings;
-use strict;
-use File::Basename;
-
-chdir(dirname(__FILE__) . '/../..');
-my $sdl_dynapi_procs_h = "src/dynapi/SDL_dynapi_procs.h";
-my $sdl_dynapi_overrides_h = "src/dynapi/SDL_dynapi_overrides.h";
-
-my %existing = ();
-if (-f $sdl_dynapi_procs_h) {
- open(SDL_DYNAPI_PROCS_H, '<', $sdl_dynapi_procs_h) or die("Can't open $sdl_dynapi_procs_h: $!\n");
- while (<SDL_DYNAPI_PROCS_H>) {
- if (/\ASDL_DYNAPI_PROC\(.*?,(.*?),/) {
- $existing{$1} = 1;
- }
- }
- close(SDL_DYNAPI_PROCS_H)
-}
-
-open(SDL_DYNAPI_PROCS_H, '>>', $sdl_dynapi_procs_h) or die("Can't open $sdl_dynapi_procs_h: $!\n");
-open(SDL_DYNAPI_OVERRIDES_H, '>>', $sdl_dynapi_overrides_h) or die("Can't open $sdl_dynapi_overrides_h: $!\n");
-
-opendir(HEADERS, 'include') or die("Can't open include dir: $!\n");
-while (readdir(HEADERS)) {
- next if not /\.h\Z/;
- my $header = "include/$_";
- open(HEADER, '<', $header) or die("Can't open $header: $!\n");
- while (<HEADER>) {
- chomp;
- next if not /\A\s*extern\s+DECLSPEC/;
- my $decl = "$_ ";
- if (not $decl =~ /\)\s*;/) {
- while (<HEADER>) {
- chomp;
- s/\A\s+//;
- s/\s+\Z//;
- $decl .= "$_ ";
- last if /\)\s*;/;
- }
- }
-
- $decl =~ s/\s+\Z//;
- #print("DECL: [$decl]\n");
-
- if ($decl =~ /\A\s*extern\s+DECLSPEC\s+(const\s+|)(unsigned\s+|)(.*?)\s*(\*?)\s*SDLCALL\s+(.*?)\s*\((.*?)\);/) {
- my $rc = "$1$2$3$4";
- my $fn = $5;
-
- next if $existing{$fn}; # already slotted into the jump table.
-
- my @params = split(',', $6);
-
- #print("rc == '$rc', fn == '$fn', params == '$params'\n");
-
- my $retstr = ($rc eq 'void') ? '' : 'return';
- my $paramstr = '(';
- my $argstr = '(';
- my $i = 0;
- foreach (@params) {
- my $str = $_;
- $str =~ s/\A\s+//;
- $str =~ s/\s+\Z//;
- #print("1PARAM: $str\n");
- if ($str eq 'void') {
- $paramstr .= 'void';
- } elsif ($str eq '...') {
- if ($i > 0) {
- $paramstr .= ', ';
- }
- $paramstr .= $str;
- } elsif ($str =~ /\A\s*((const\s+|)(unsigned\s+|)([a-zA-Z0-9_]*)\s*([\*\s]*))\s*(.*?)\Z/) {
- #print("PARSED: [$1], [$2], [$3], [$4], [$5]\n");
- my $type = $1;
- my $var = $6;
- $type =~ s/\A\s+//;
- $type =~ s/\s+\Z//;
- $var =~ s/\A\s+//;
- $var =~ s/\s+\Z//;
- $type =~ s/\s*\*\Z/*/g;
- $type =~ s/\s*(\*+)\Z/ $1/;
- #print("SPLIT: ($type, $var)\n");
- my $name = chr(ord('a') + $i);
- if ($i > 0) {
- $paramstr .= ', ';
- $argstr .= ',';
- }
- my $spc = ($type =~ /\*\Z/) ? '' : ' ';
- $paramstr .= "$type$spc$name";
- $argstr .= "$name";
- }
- $i++;
- }
-
- $paramstr = '(void' if ($i == 0); # Just to make this consistent.
-
- $paramstr .= ')';
- $argstr .= ')';
-
- print("NEW: $decl\n");
- print SDL_DYNAPI_PROCS_H "SDL_DYNAPI_PROC($rc,$fn,$paramstr,$argstr,$retstr)\n";
- print SDL_DYNAPI_OVERRIDES_H "#define $fn ${fn}_REAL\n";
- } else {
- print("Failed to parse decl [$decl]!\n");
- }
- }
- close(HEADER);
-}
-closedir(HEADERS);
-
-close(SDL_DYNAPI_PROCS_H);
-close(SDL_DYNAPI_OVERRIDES_H);
-
-# vi: set ts=4 sw=4 expandtab: