about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xrebuild_wrappers.py265
-rw-r--r--src/wrapped/generated/functions_list.txt901
-rw-r--r--src/wrapped/generated/wrappedbz2types.h2
-rw-r--r--src/wrapped/generated/wrappedcryptotypes.h2
-rw-r--r--src/wrapped/generated/wrappedcurltypes.h2
-rw-r--r--src/wrapped/generated/wrappeddbustypes.h2
-rw-r--r--src/wrapped/generated/wrappedexpattypes.h2
-rw-r--r--src/wrapped/generated/wrappedflactypes.h2
-rw-r--r--src/wrapped/generated/wrappedfontconfigtypes.h2
-rw-r--r--src/wrapped/generated/wrappedfreetypetypes.h2
-rw-r--r--src/wrapped/generated/wrappedgnutlstypes.h2
-rw-r--r--src/wrapped/generated/wrappedldlinuxtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibasoundtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibctypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibdltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibgltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibglutypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurses6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursestypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurseswtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibpthreadtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibrttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibsmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibssltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfo6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfotypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11types.h2
-rw-r--r--src/wrapped/generated/wrappedlibxexttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtsttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibztypes.h2
-rw-r--r--src/wrapped/generated/wrappedopenaltypes.h2
-rw-r--r--src/wrapped/generated/wrappedpangotypes.h2
-rw-r--r--src/wrapped/generated/wrappedpng16types.h2
-rw-r--r--src/wrapped/generated/wrappedpulsetypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1imagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1mixertypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1soundtypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1ttftypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1types.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2imagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2mixertypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2ttftypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2types.h2
-rw-r--r--src/wrapped/generated/wrappedsmpeg2types.h2
-rw-r--r--src/wrapped/generated/wrappedsmpegtypes.h2
-rw-r--r--src/wrapped/generated/wrappedutiltypes.h2
-rw-r--r--src/wrapped/generated/wrappedvorbisfiletypes.h2
-rw-r--r--src/wrapped/generated/wrappedxml2types.h2
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h2
51 files changed, 1098 insertions, 166 deletions
diff --git a/rebuild_wrappers.py b/rebuild_wrappers.py
index 39c2698b..67be322b 100755
--- a/rebuild_wrappers.py
+++ b/rebuild_wrappers.py
@@ -1,52 +1,93 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 try:
-	# Python 3.5.2+
-	from typing import Union, List, Sequence, Dict, Tuple, NewType, final
+	# Python 3.5.2+ (NewType)
+	from typing import Union, List, Sequence, Dict, Tuple, NewType, TypeVar
 except ImportError:
-	print("Your Python version does not have the typing module, fallback to empty 'types'")
-	# Stubs
-	class GTStub:
+	#print("Your Python version does not have the typing module, fallback to empty 'types'")
+	# Dummies
+	class GTDummy:
 		def __getitem__(self, t):
-			return None
-	Union = GTStub() # type: ignore
-	List = GTStub() # type: ignore
-	Sequence = GTStub() # type: ignore
-	Dict = GTStub() # type: ignore
-	Tuple = GTStub() # type: ignore
-	def NewType(T, *largs): return largs[0] if len(largs) > 0 else None # type: ignore
-	final = lambda x: x # type: ignore
+			return self
+	Union = GTDummy() # type: ignore
+	List = GTDummy() # type: ignore
+	Sequence = GTDummy() # type: ignore
+	Dict = GTDummy() # type: ignore
+	Tuple = GTDummy() # type: ignore
+	def NewType(T, b): return b # type: ignore
+	def TypeVar(T): return object # type: ignore
+try:
+	# Python 3.8+
+	from typing import final
+	import typing
+except ImportError:
+	#print("Your Python version does not have all typing utilities, fallback to dummy ones")
+	def _overload_dummy(*args, **kwds):
+		raise NotImplementedError(
+				"You should not call an overloaded function. "
+				"A series of @overload-decorated functions "
+				"outside a stub module should always be followed "
+				"by an implementation that is not @overload-ed.")
+	def overload(fun): return _overload_dummy # type: ignore
+	class Typing:
+		pass
+	typing = Typing() # type: ignore
+	typing.overload = overload # type: ignore
+	final = lambda fun: fun # type: ignore
+
+import os
+import sys
+
+class FunctionType(str):
+	values: List[str] = ['E', 'e', 'v', 'c', 'w', 'i', 'I', 'C', 'W', 'u', 'U', 'f', 'd', 'D', 'K', 'l', 'L', 'p', 'V', 'O', 'S', 'N', 'M', 'H', 'P']
+	
+	@staticmethod
+	def validate(s: str, post: str) -> bool:
+		if len(s) < 3:
+			raise NotImplementedError("Type {0} too short{1}".format(s, post))
+		if "E" in s:
+			if ("E" in s[:2]) or ("E" in s[3:]):
+				raise NotImplementedError(
+					"emu64_t* not as the first parameter{0}".format(post))
+			if len(s) < 4:
+				raise NotImplementedError("Type {0} too short{1}".format(s, post))
+		
+		if s[1] not in ["F"]:
+			raise NotImplementedError("Bad middle letter {0}{1}".format(s[1], post))
+		
+		return all(c in FunctionType.values for c in s[2:]) and (('v' not in s[2:]) or (len(s) == 3))
+	
+	def splitchar(self) -> List[int]:
+		"""
+		splitchar -- Sorting key function for function signatures
+		
+		The longest strings are at the end, and for identical length, the string
+		are sorted using a pseudo-lexicographic sort, where characters have a value
+		of `values.index`.
+		"""
+		try:
+			ret = [len(self), FunctionType.values.index(self[0])]
+			for c in self[2:]:
+				ret.append(FunctionType.values.index(c))
+			return ret
+		except ValueError as e:
+			raise ValueError("Value is " + self) from e
+	
+	def __getitem__(self, i: Union[int, slice]) -> 'FunctionType':
+		return FunctionType(super().__getitem__(i))
+
+assert(all(c not in FunctionType.values[:i] for i, c in enumerate(FunctionType.values)))
 
-#FunctionType = NewType('FunctionType', str)
-FunctionType = str
 RedirectType = NewType('RedirectType', FunctionType)
 #DefineType = NewType('DefineType', str)
 DefineType = str
 
+T = TypeVar('T')
+U = TypeVar('U')
+
 Filename = str
 ClausesStr = str
 
-import os
-import sys
-
-values: List[str] = ['E', 'e', 'v', 'c', 'w', 'i', 'I', 'C', 'W', 'u', 'U', 'f', 'd', 'D', 'K', 'l', 'L', 'p', 'V', 'O', 'S', 'N', 'M', 'H', 'P']
-assert(all(c not in values[:i] for i, c in enumerate(values)))
-def splitchar(s: str) -> List[int]:
-	"""
-	splitchar -- Sorting key function for function signatures
-	
-	The longest strings are at the end, and for identical length, the string
-	are sorted using a pseudo-lexicographic sort, where characters have a value
-	of `values.index`.
-	"""
-	try:
-		ret = [len(s), values.index(s[0])]
-		for c in s[2:]:
-			ret.append(values.index(c))
-		return ret
-	except ValueError as e:
-		raise ValueError("Value is " + s) from e
-
 @final
 class Define:
 	name: DefineType
@@ -73,7 +114,7 @@ class Define:
 		self.inverted_ = not self.inverted_
 	def inverted(self) -> "Define":
 		"""
-		invert -- Transform a `defined()` into a `!defined()` and vice-versa, out-of-place.
+		inverted -- Transform a `defined()` into a `!defined()` and vice-versa, out-of-place.
 		"""
 		return Define(self.name, not self.inverted_)
 	
@@ -82,7 +123,6 @@ class Define:
 			return "!defined(" + self.name + ")"
 		else:
 			return "defined(" + self.name + ")"
-
 @final
 class Defines:
 	defines: List[Define]
@@ -113,7 +153,6 @@ class Defines:
 	
 	def __str__(self) -> str:
 		return " && ".join(map(str, self.defines))
-
 @final
 class Clauses:
 	"""
@@ -163,9 +202,9 @@ class Clauses:
 			return "(" + ") || (".join(map(str, self.definess)) + ")"
 
 def readFiles(files: Sequence[Filename]) -> \
-		Tuple[Dict[str, List[FunctionType]],
-		      Dict[str,      Dict[RedirectType, FunctionType]],
-		      Dict[Filename, Dict[RedirectType, List[str]]]]:
+		Tuple[Dict[ClausesStr, List[FunctionType]],
+		      Dict[ClausesStr, Dict[RedirectType, FunctionType]],
+		      Dict[Filename,   Dict[RedirectType, List[str]]]]:
 	"""
 	readFiles
 	
@@ -223,22 +262,10 @@ def readFiles(files: Sequence[Filename]) -> \
 							filename, line[:-1]
 						))
 					
-					if len(ln) < 3:
-						raise NotImplementedError("Type {0} too short ({1}:{2})".format(ln, filename, line[:-1]))
-					if "E" in ln:
-						if ("E" in ln[:2]) or ("E" in ln[3:]):
-							raise NotImplementedError(
-								"emu64_t* not as the first parameter ({0}:{1})".format(filename, line[:-1]))
-						if len(ln) < 4:
-							raise NotImplementedError("Type {0} too short ({1}:{2})".format(ln, filename, line[:-1]))
-					
-					if ln[1] not in ["F"]:
-						raise NotImplementedError("Bad middle letter {0} ({1}:{2})".format(ln[1], filename, line[:-1]))
-					
-					if any(c not in values for c in ln[2:]) or (('v' in ln[2:]) and (len(ln) > 3)):
-						old = RedirectType(ln)
+					if not FunctionType.validate(ln, " ({0}:{1})".format(filename, line[:-1])):
+						old = RedirectType(FunctionType(ln))
 						# This needs more work
-						acceptables = ['v', '0', '1'] + values
+						acceptables = ['v', '0', '1'] + FunctionType.values
 						if any(c not in acceptables for c in ln[2:]):
 							raise NotImplementedError("{0} ({1}:{2})".format(ln[2:], filename, line[:-1]))
 						# Ok, this is acceptable: there is 0, 1 and/or void
@@ -248,18 +275,18 @@ def readFiles(files: Sequence[Filename]) -> \
 							.replace("1", "i")) # 1      -> integer
 						assert(len(ln) >= 3)
 						redirects.setdefault(str(dependants), {})
-						redirects[str(dependants)][old] = ln
+						redirects[str(dependants)][old] = FunctionType(ln)
 					# Simply append the function type if it's not yet existing
 					gbl.setdefault(str(dependants), [])
 					if ln not in gbl[str(dependants)]:
-						gbl[str(dependants)].append(ln)
+						gbl[str(dependants)].append(FunctionType(ln))
 					
 					if ln[2] == "E":
 						# filename isn't stored with the '_private.h' part
 						if len(ln) > 3:
-							funtype = RedirectType(ln[:2] + ln[3:])
+							funtype = RedirectType(FunctionType(ln[:2] + ln[3:]))
 						else:
-							funtype = RedirectType(ln[:2] + "v")
+							funtype = RedirectType(FunctionType(ln[:2] + "v"))
 						mytypedefs.setdefault(filename[:-10], {})
 						mytypedefs[filename[:-10]].setdefault(funtype, [])
 						mytypedefs[filename[:-10]][funtype].append(funname)
@@ -273,17 +300,15 @@ def readFiles(files: Sequence[Filename]) -> \
 	
 	return gbl, redirects, mytypedefs
 
+COrderedDict = Tuple[Dict[T, U], List[T]]
 def sortArrays(
 	gbl_tmp   : Dict[str,      List[FunctionType]],
 	red_tmp   : Dict[str,      Dict[RedirectType, FunctionType]],
 	mytypedefs: Dict[Filename, Dict[RedirectType, List[str]]]) -> \
 		Tuple[
-			Tuple[Dict[ClausesStr, List[FunctionType]],
-				List[ClausesStr]],
-			Tuple[Dict[ClausesStr, List[Tuple[RedirectType, FunctionType]]],
-				List[ClausesStr]],
-			Tuple[Dict[Filename, Dict[RedirectType, List[str]]],
-				Dict[Filename, List[RedirectType]]]
+			COrderedDict[ClausesStr, List[FunctionType]],
+			COrderedDict[ClausesStr, List[Tuple[RedirectType, FunctionType]]],
+			Dict[Filename, COrderedDict[RedirectType, List[str]]]
 		]:
 	# Now, take all function types, and make a new table gbl_vals
 	# This table contains all #if conditions for when a function type needs to
@@ -386,20 +411,20 @@ def sortArrays(
 	
 	# Sort the function types as defined in `splitchar`
 	for k3 in gbl:
-		gbl[k3].sort(key=lambda v: splitchar(v))
+		gbl[k3].sort(key=FunctionType.splitchar)
 	
-	global values
-	values = values + ['0', '1']
+	FunctionType.values = FunctionType.values + ['0', '1']
 	for k3 in redirects:
-		redirects[k3].sort(key=lambda v: splitchar(v[0]) + splitchar(v[1]))
-	values = values[:-2]
+		redirects[k3].sort(key=lambda v: v[0].splitchar() + v[1].splitchar())
+	FunctionType.values = FunctionType.values[:-2]
 	
-	mytypedefs_vals: Dict[Filename, List[RedirectType]] = dict((fn, sorted(mytypedefs[fn].keys(), key=lambda v: splitchar(v))) for fn in mytypedefs)
+	mytypedefs_vals: Dict[Filename, List[RedirectType]] = dict((fn, sorted(mytypedefs[fn].keys(), key=FunctionType.splitchar)) for fn in mytypedefs)
 	for fn in mytypedefs:
 		for v in mytypedefs_vals[fn]:
 			mytypedefs[fn][v].sort()
 	
-	return (gbl, gbl_idxs), (redirects, redirects_idxs), (mytypedefs, mytypedefs_vals)
+	return (gbl, gbl_idxs), (redirects, redirects_idxs), \
+		dict((fn, (mytypedefs[fn], mytypedefs_vals[fn])) for fn in mytypedefs)
 	
 def main(root: str, files: Sequence[Filename], ver: str):
 	"""
@@ -416,22 +441,22 @@ def main(root: str, files: Sequence[Filename], ver: str):
 	#  "defined() && ..." -> [vFEv -> vFv, ...]
 	# tdf_tmp:
 	#  "filename" -> [vFEv -> fopen, ...]
-	gbl_tmp: Dict[str,      List[FunctionType]]
-	red_tmp: Dict[str,      Dict[RedirectType, FunctionType]]
-	tdf_tmp: Dict[Filename, Dict[RedirectType, List[str]]]
+	gbl_tmp: Dict[ClausesStr, List[FunctionType]]
+	red_tmp: Dict[ClausesStr, Dict[RedirectType, FunctionType]]
+	tdf_tmp: Dict[Filename,   Dict[RedirectType, List[str]]]
 	
 	gbl_tmp, red_tmp, tdf_tmp = readFiles(files)
 	
-	gbl            : Dict[ClausesStr, List[FunctionType]]
-	redirects      : Dict[ClausesStr, List[Tuple[RedirectType, FunctionType]]]
-	mytypedefs     : Dict[Filename, Dict[RedirectType, List[str]]]
-	gbl_idxs       : List[ClausesStr]
-	redirects_idxs : List[ClausesStr]
-	mytypedefs_vals: Dict[Filename, List[RedirectType]]
+	gbls      : COrderedDict[ClausesStr, List[FunctionType]]
+	redirects_: COrderedDict[ClausesStr, List[Tuple[RedirectType, FunctionType]]]
+	mytypedefs: Dict[Filename, COrderedDict[RedirectType, List[str]]]
 	
-	(gbl, gbl_idxs), (redirects, redirects_idxs), (mytypedefs, mytypedefs_vals) = \
+	gbls, redirects_, mytypedefs = \
 		sortArrays(gbl_tmp, red_tmp, tdf_tmp)
 	
+	gbl, gbl_idxs = gbls
+	redirects, redirects_idxs = redirects_
+	
 	# Check if there was any new functions compared to last run
 	functions_list: str = ""
 	for k in [str(Clauses())] + gbl_idxs:
@@ -440,6 +465,12 @@ def main(root: str, files: Sequence[Filename], ver: str):
 	for k in [str(Clauses())] + redirects_idxs:
 		for vr, vf in redirects[k]:
 			functions_list = functions_list + "#" + k + " " + vr + " -> " + vf + "\n"
+	for filename in sorted(mytypedefs.keys()):
+		functions_list = functions_list + filename + ":\n"
+		for vr in mytypedefs[filename][1]:
+			functions_list = functions_list + "- " + vr + ":\n"
+			for fn in mytypedefs[filename][0][vr]:
+				functions_list = functions_list + "  - " + fn + "\n"
 	
 	# functions_list is a unique string, compare it with the last run
 	try:
@@ -466,11 +497,11 @@ def main(root: str, files: Sequence[Filename], ver: str):
 	
 	# Sanity checks
 	forbidden_simple: str = "EeDKVOSNMHP"
-	assert(len(allowed_simply) + len(allowed_regs) + len(allowed_fpr) + len(forbidden_simple) == len(values))
+	assert(len(allowed_simply) + len(allowed_regs) + len(allowed_fpr) + len(forbidden_simple) == len(FunctionType.values))
 	assert(all(c not in allowed_regs for c in allowed_simply))
 	assert(all(c not in allowed_simply + allowed_regs for c in allowed_fpr))
 	assert(all(c not in allowed_simply + allowed_regs + allowed_fpr for c in forbidden_simple))
-	assert(all(c in allowed_simply + allowed_regs + allowed_fpr + forbidden_simple for c in values))
+	assert(all(c in allowed_simply + allowed_regs + allowed_fpr + forbidden_simple for c in FunctionType.values))
 	
 	# Only search on real wrappers
 	for k in [str(Clauses())] + gbl_idxs:
@@ -596,12 +627,12 @@ int isSimpleWrapper(wrapper_t fun);
 		# i and u should only be 32 bits
 		#         E            e             v       c         w          i          I          C          W           u           U           f        d         D              K         l           L            p        V        O          S        N      M      H                    P
 		types = ["x64emu_t*", "x64emu_t**", "void", "int8_t", "int16_t", "int64_t", "int64_t", "uint8_t", "uint16_t", "uint64_t", "uint64_t", "float", "double", "long double", "double", "intptr_t", "uintptr_t", "void*", "void*", "int32_t", "void*", "...", "...", "unsigned __int128", "void*"]
-		if len(values) != len(types):
-			raise NotImplementedError("len(values) = {lenval} != len(types) = {lentypes}".format(lenval=len(values), lentypes=len(types)))
+		if len(FunctionType.values) != len(types):
+			raise NotImplementedError("len(values) = {lenval} != len(types) = {lentypes}".format(lenval=len(FunctionType.values), lentypes=len(types)))
 		
 		for v in arr:
-			file.write("typedef " + types[values.index(v[0])] + " (*" + v + "_t)"
-				+ "(" + ', '.join(types[values.index(t)] for t in v[2:]) + ");\n")
+			file.write("typedef " + types[FunctionType.values.index(v[0])] + " (*" + v + "_t)"
+				+ "(" + ', '.join(types[FunctionType.values.index(t)] for t in v[2:]) + ");\n")
 	
 	with open(os.path.join(root, "src", "wrapped", "generated", "wrapper.c"), 'w') as file:
 		file.write(files_header["wrapper.c"].format(lbr="{", rbr="}", version=ver))
@@ -771,24 +802,24 @@ int isSimpleWrapper(wrapper_t fun);
 		]
 
 		# Asserts
-		if len(values) != len(vstack):
-			raise NotImplementedError("len(values) = {lenval} != len(vstack) = {lenvstack}".format(lenval=len(values), lenvstack=len(vstack)))
-		if len(values) != len(vreg):
-			raise NotImplementedError("len(values) = {lenval} != len(vreg) = {lenvreg}".format(lenval=len(values), lenvreg=len(vreg)))
-		if len(values) != len(vxmm):
-			raise NotImplementedError("len(values) = {lenval} != len(vxmm) = {lenvxmm}".format(lenval=len(values), lenvxmm=len(vxmm)))
-		if len(values) != len(vother):
-			raise NotImplementedError("len(values) = {lenval} != len(vother) = {lenvother}".format(lenval=len(values), lenvother=len(vother)))
-		if len(values) != len(arg_s):
-			raise NotImplementedError("len(values) = {lenval} != len(arg_s) = {lenargs}".format(lenval=len(values), lenargs=len(arg_s)))
-		if len(values) != len(arg_r):
-			raise NotImplementedError("len(values) = {lenval} != len(arg_r) = {lenargr}".format(lenval=len(values), lenargr=len(arg_r)))
-		if len(values) != len(arg_x):
-			raise NotImplementedError("len(values) = {lenval} != len(arg_x) = {lenargx}".format(lenval=len(values), lenargx=len(arg_x)))
-		if len(values) != len(arg_o):
-			raise NotImplementedError("len(values) = {lenval} != len(arg_o) = {lenargo}".format(lenval=len(values), lenargo=len(arg_o)))
-		if len(values) != len(vals):
-			raise NotImplementedError("len(values) = {lenval} != len(vals) = {lenvals}".format(lenval=len(values), lenvals=len(vals)))
+		if len(FunctionType.values) != len(vstack):
+			raise NotImplementedError("len(values) = {lenval} != len(vstack) = {lenvstack}".format(lenval=len(FunctionType.values), lenvstack=len(vstack)))
+		if len(FunctionType.values) != len(vreg):
+			raise NotImplementedError("len(values) = {lenval} != len(vreg) = {lenvreg}".format(lenval=len(FunctionType.values), lenvreg=len(vreg)))
+		if len(FunctionType.values) != len(vxmm):
+			raise NotImplementedError("len(values) = {lenval} != len(vxmm) = {lenvxmm}".format(lenval=len(FunctionType.values), lenvxmm=len(vxmm)))
+		if len(FunctionType.values) != len(vother):
+			raise NotImplementedError("len(values) = {lenval} != len(vother) = {lenvother}".format(lenval=len(FunctionType.values), lenvother=len(vother)))
+		if len(FunctionType.values) != len(arg_s):
+			raise NotImplementedError("len(values) = {lenval} != len(arg_s) = {lenargs}".format(lenval=len(FunctionType.values), lenargs=len(arg_s)))
+		if len(FunctionType.values) != len(arg_r):
+			raise NotImplementedError("len(values) = {lenval} != len(arg_r) = {lenargr}".format(lenval=len(FunctionType.values), lenargr=len(arg_r)))
+		if len(FunctionType.values) != len(arg_x):
+			raise NotImplementedError("len(values) = {lenval} != len(arg_x) = {lenargx}".format(lenval=len(FunctionType.values), lenargx=len(arg_x)))
+		if len(FunctionType.values) != len(arg_o):
+			raise NotImplementedError("len(values) = {lenval} != len(arg_o) = {lenargo}".format(lenval=len(FunctionType.values), lenargo=len(arg_o)))
+		if len(FunctionType.values) != len(vals):
+			raise NotImplementedError("len(values) = {lenval} != len(vals) = {lenvals}".format(lenval=len(FunctionType.values), lenvals=len(vals)))
 		
 		# Helper functions to write the function definitions
 		def function_args(args: FunctionType, d: int = 8, r: int = 0, x: int = 0) -> str:
@@ -805,7 +836,7 @@ int isSimpleWrapper(wrapper_t fun);
 			elif args[0] == "1":
 				return "1, " + function_args(args[1:], d, r, x)
 			
-			idx = values.index(args[0])
+			idx = FunctionType.values.index(args[0])
 			if (r < 6) and (vreg[idx] > 0):
 				# Value is in a general register (and there is still one available)
 				if (vreg[idx] == 2) and (r == 6):
@@ -824,17 +855,17 @@ int isSimpleWrapper(wrapper_t fun);
 				# Value is somewhere else
 				return arg_o[idx].format(p=d) + function_args(args[1:], d, r, x)
 		
-		def function_writer(f, N: FunctionType, W: FunctionType) -> None:
+		def function_writer(f, N: FunctionType, W: str) -> None:
 			# Write to f the function type N (real type W)
 			# rettype is a single character, args is the string of argument types
 			# (those could actually be deduced from N)
 			
 			f.write("void {0}(x64emu_t *emu, uintptr_t fcn) {2} {1} fn = ({1})fcn; ".format(N, W, "{"))
 			# Generic function
-			f.write(vals[values.index(N[0])].format(function_args(N[2:])[:-2]) + " }\n")
+			f.write(vals[FunctionType.values.index(N[0])].format(function_args(N[2:])[:-2]) + " }\n")
 		
 		for v in gbl[str(Clauses())]:
-			if v == "vFv":
+			if v == FunctionType("vFv"):
 				# Suppress all warnings...
 				file.write("void vFv(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); (void)emu; }\n")
 			else:
@@ -892,10 +923,10 @@ int isSimpleWrapper(wrapper_t fun);
 	for fn in mytypedefs:
 		with open(os.path.join(root, "src", "wrapped", "generated", fn + "types.h"), 'w') as file:
 			file.write(files_header["fntypes.h"].format(lbr="{", rbr="}", version=ver, filename=fn))
-			generate_typedefs(mytypedefs_vals[fn], file)
+			generate_typedefs(mytypedefs[fn][1], file)
 			file.write("\n#define SUPER() ADDED_FUNCTIONS()")
-			for v in mytypedefs_vals[fn]:
-				for f in mytypedefs[fn][v]:
+			for v in mytypedefs[fn][1]:
+				for f in mytypedefs[fn][0][v]:
 					file.write(" \\\n\tGO({0}, {1}_t)".format(f, v))
 			file.write("\n")
 			file.write(files_guard["fntypes.h"].format(lbr="{", rbr="}", version=ver, filename=fn))
@@ -912,6 +943,6 @@ if __name__ == '__main__':
 		if v == "--":
 			limit.append(i)
 	Define.defines = sys.argv[2:limit[0]]
-	if main(sys.argv[1], sys.argv[limit[0]+1:], "2.0.0.13") != 0:
+	if main(sys.argv[1], sys.argv[limit[0]+1:], "2.0.1.14") != 0:
 		exit(2)
 	exit(0)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index f5216c4f..ca266ed4 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1291,3 +1291,904 @@
 #() iFEpvvppp -> iFEpppp
 #() iFEpLvvpp -> iFEpLpp
 #() iFEpuvvppp -> iFEpuppp
+wrappedbz2:
+- iFp:
+  - BZ2_bzCompressEnd
+  - BZ2_bzDecompress
+  - BZ2_bzDecompressEnd
+- iFpi:
+  - BZ2_bzCompress
+- iFpii:
+  - BZ2_bzDecompressInit
+- iFpiii:
+  - BZ2_bzCompressInit
+wrappedcrypto:
+- vFp:
+  - CRYPTO_set_id_callback
+  - CRYPTO_set_locking_callback
+- pFp:
+  - sk_new
+- vFpp:
+  - sk_pop_free
+- pFpppp:
+  - PEM_read_bio_DSAPrivateKey
+  - PEM_read_bio_DSA_PUBKEY
+  - PEM_read_bio_ECPrivateKey
+  - PEM_read_bio_EC_PUBKEY
+  - PEM_read_bio_RSAPrivateKey
+  - PEM_read_bio_RSA_PUBKEY
+- iFpiipp:
+  - ENGINE_ctrl
+- iFppppipp:
+  - PEM_write_bio_DSAPrivateKey
+  - PEM_write_bio_ECPrivateKey
+  - PEM_write_bio_RSAPrivateKey
+wrappedcurl:
+- uFpup:
+  - curl_easy_setopt
+wrappeddbus:
+- vFppp:
+  - dbus_connection_remove_filter
+  - dbus_timeout_set_data
+  - dbus_watch_set_data
+- vFpppp:
+  - dbus_connection_set_dispatch_status_function
+  - dbus_connection_set_wakeup_main_function
+- iFpipp:
+  - dbus_connection_set_data
+  - dbus_message_set_data
+  - dbus_pending_call_set_data
+- iFppip:
+  - dbus_message_get_args_valist
+- iFpppp:
+  - dbus_connection_add_filter
+  - dbus_pending_call_set_notify
+- iFppppp:
+  - dbus_connection_try_register_fallback
+  - dbus_connection_try_register_object_path
+- iFpppppp:
+  - dbus_connection_set_timeout_functions
+  - dbus_connection_set_watch_functions
+wrappedexpat:
+- vFpp:
+  - XML_SetCharacterDataHandler
+- vFppp:
+  - XML_SetElementHandler
+wrappedflac:
+- iFppPPPPPP:
+  - FLAC__metadata_chain_read_with_callbacks
+- iFppppppppp:
+  - FLAC__stream_decoder_init_stream
+wrappedfontconfig:
+- iFppiLi:
+  - FcPatternAddWeak
+wrappedfreetype:
+- iFpplp:
+  - FT_Open_Face
+- iFpuuLppp:
+  - FTC_Manager_New
+wrappedgnutls:
+- vFp:
+  - gnutls_global_set_log_function
+- vFpp:
+  - gnutls_transport_set_pull_function
+  - gnutls_transport_set_push_function
+wrappedldlinux:
+- pFp:
+  - __tls_get_addr
+wrappedlibasound:
+- iFp:
+  - snd_dlclose
+  - snd_lib_error_set_handler
+- pFppp:
+  - snd_dlsym
+- iFpipp:
+  - snd_async_add_handler
+- iFpppp:
+  - snd_async_add_pcm_handler
+- pFpipL:
+  - snd_dlopen
+wrappedlibc:
+- vFv:
+  - __stack_chk_fail
+- vFp:
+  - _ITM_deregisterTMCloneTable
+  - __cxa_finalize
+- iFp:
+  - _setjmp
+  - getcontext
+  - setjmp
+- lFv:
+  - fork
+- LFv:
+  - syscall
+- vFpi:
+  - __longjmp_chk
+  - _longjmp
+  - longjmp
+- vFpu:
+  - _ITM_registerTMCloneTable
+- iFpi:
+  - __sigsetjmp
+  - backtrace
+  - siglongjmp
+- iFpL:
+  - munmap
+- iFpp:
+  - __vprintf_chk
+  - dl_iterate_phdr
+  - execvp
+  - sigaltstack
+  - swapcontext
+  - vprintf
+- iFpV:
+  - execlp
+  - printf
+- iFSp:
+  - _IO_file_stat
+- pFip:
+  - __sysv_signal
+  - signal
+  - sigset
+  - sysv_signal
+- pFpi:
+  - backtrace_symbols
+- pFpp:
+  - __realpath_chk
+  - fopen
+  - fopen64
+  - realpath
+- vFipp:
+  - vsyslog
+- vFipV:
+  - syslog
+- vFpii:
+  - backtrace_symbols_fd
+- vFpup:
+  - _ITM_addUserCommitAction
+- iFiip:
+  - __fxstat
+  - __fxstat64
+- iFiiN:
+  - __fcntl
+  - fcntl
+  - fcntl64
+- iFipp:
+  - __lxstat
+  - __lxstat64
+  - __sigaction
+  - __xstat
+  - __xstat64
+  - sigaction
+- iFipV:
+  - __printf_chk
+- iFpLi:
+  - mprotect
+- iFppi:
+  - ftw
+  - ftw64
+- iFppp:
+  - __cxa_atexit
+  - __isoc99_vsscanf
+  - __vfprintf_chk
+  - __vsscanf
+  - vasprintf
+  - vfprintf
+  - vsscanf
+- iFppV:
+  - __isoc99_fscanf
+  - __isoc99_sscanf
+  - fprintf
+  - fscanf
+  - fwprintf
+  - sprintf
+  - sscanf
+  - swscanf
+- iFpOu:
+  - __open
+  - open
+  - open64
+- lFppL:
+  - readlink
+- pFpip:
+  - fts_open
+- vFiipV:
+  - __syslog_chk
+- vFpLLp:
+  - qsort
+- iFiiip:
+  - epoll_ctl
+- iFipii:
+  - epoll_wait
+- iFpipp:
+  - __vasprintf_chk
+  - glob
+  - glob64
+- iFpipV:
+  - __fprintf_chk
+- iFpLpp:
+  - __vsnprintf
+  - __vsnprintf_chk
+  - vsnprintf
+- iFpLpV:
+  - __snprintf
+  - snprintf
+  - swprintf
+- iFppii:
+  - nftw64
+- iFppiV:
+  - makecontext
+- iFpppp:
+  - __register_atfork
+  - __vsprintf_chk
+  - scandir
+  - scandir64
+  - vsprintf
+- vFpLLpp:
+  - qsort_r
+- iFiippi:
+  - __fxstatat
+  - __fxstatat64
+- iFpilpV:
+  - __sprintf_chk
+- iFpuppp:
+  - __vswprintf_chk
+  - vswprintf
+- pFpLLiN:
+  - mremap
+- pFppLLp:
+  - bsearch
+- pFpppLp:
+  - lfind
+  - lsearch
+- iFpLiLpV:
+  - __snprintf_chk
+  - __swprintf_chk
+- pFpLiiiI:
+  - mmap
+  - mmap64
+- iFpippppp:
+  - __libc_start_main
+wrappedlibdl:
+- iFp:
+  - dlclose
+- pFv:
+  - dlerror
+- iFpp:
+  - dladdr
+- pFpi:
+  - dlopen
+- pFpp:
+  - dlsym
+- iFpip:
+  - dlinfo
+- pFppi:
+  - dlmopen
+- pFppp:
+  - dlvsym
+wrappedlibgl:
+- pFp:
+  - glXGetProcAddress
+  - glXGetProcAddressARB
+- vFpp:
+  - glDebugMessageCallback
+  - glDebugMessageCallbackARB
+wrappedlibglu:
+- vFpip:
+  - gluNurbsCallback
+  - gluQuadricCallback
+  - gluTessCallback
+wrappedlibncurses:
+- iFpV:
+  - printw
+- iFppp:
+  - vwprintw
+- iFiipV:
+  - mvprintw
+- iFpiipV:
+  - mvwprintw
+wrappedlibncurses6:
+- iFpV:
+  - printw
+- iFppp:
+  - vwprintw
+- iFpiipV:
+  - mvwprintw
+wrappedlibncursesw:
+- iFpV:
+  - printw
+- iFppp:
+  - vwprintw
+- iFpiipV:
+  - mvwprintw
+wrappedlibpthread:
+- vFp:
+  - __pthread_register_cancel
+  - __pthread_unregister_cancel
+  - __pthread_unwind_next
+- iFp:
+  - __pthread_mutexattr_destroy
+  - __pthread_mutexattr_init
+  - pthread_attr_destroy
+  - pthread_attr_init
+  - pthread_barrierattr_destroy
+  - pthread_barrierattr_init
+  - pthread_condattr_destroy
+  - pthread_condattr_init
+  - pthread_mutexattr_destroy
+  - pthread_mutexattr_init
+- vFpi:
+  - _pthread_cleanup_pop
+  - _pthread_cleanup_pop_restore
+- iFpi:
+  - __pthread_mutexattr_settype
+  - pthread_attr_setdetachstate
+  - pthread_attr_setinheritsched
+  - pthread_attr_setschedpolicy
+  - pthread_attr_setscope
+  - pthread_barrierattr_setpshared
+  - pthread_condattr_setclock
+  - pthread_condattr_setpshared
+  - pthread_kill
+  - pthread_mutexattr_setkind_np
+  - pthread_mutexattr_setprotocol
+  - pthread_mutexattr_setpshared
+  - pthread_mutexattr_settype
+- iFpL:
+  - pthread_attr_setguardsize
+  - pthread_attr_setstacksize
+- iFpp:
+  - __pthread_key_create
+  - __pthread_once
+  - pthread_attr_getdetachstate
+  - pthread_attr_getguardsize
+  - pthread_attr_getinheritsched
+  - pthread_attr_getschedparam
+  - pthread_attr_getschedpolicy
+  - pthread_attr_getscope
+  - pthread_attr_getstackaddr
+  - pthread_attr_getstacksize
+  - pthread_attr_setschedparam
+  - pthread_attr_setstackaddr
+  - pthread_barrierattr_getpshared
+  - pthread_cond_init
+  - pthread_cond_wait
+  - pthread_condattr_getclock
+  - pthread_condattr_getpshared
+  - pthread_key_create
+  - pthread_mutexattr_getkind_np
+  - pthread_mutexattr_gettype
+  - pthread_once
+- vFppp:
+  - _pthread_cleanup_push
+  - _pthread_cleanup_push_defer
+- iFpLp:
+  - pthread_attr_setaffinity_np
+  - pthread_getaffinity_np
+  - pthread_setaffinity_np
+- iFppu:
+  - pthread_barrier_init
+- iFppL:
+  - pthread_attr_setstack
+- iFppp:
+  - __pthread_atfork
+  - pthread_atfork
+  - pthread_attr_getstack
+  - pthread_cond_timedwait
+- iFpppp:
+  - pthread_create
+wrappedlibrt:
+- iFupp:
+  - timer_create
+wrappedlibsm:
+- iFppp:
+  - SmcRequestSaveYourselfPhase2
+- iFpipp:
+  - SmcInteractRequest
+- pFppiiLpppip:
+  - SmcOpenConnection
+wrappedlibssl:
+- vFpp:
+  - SSL_CTX_set_default_passwd_cb
+  - SSL_set_psk_client_callback
+- vFpip:
+  - SSL_CTX_set_verify
+  - SSL_set_verify
+- vFppp:
+  - SSL_CTX_set_next_proto_select_cb
+- lFpip:
+  - SSL_CTX_callback_ctrl
+  - SSL_callback_ctrl
+- iFlpppp:
+  - SSL_get_ex_new_index
+wrappedlibtinfo:
+- iFpip:
+  - tputs
+wrappedlibtinfo6:
+- iFpip:
+  - tputs
+wrappedlibx11:
+- iFp:
+  - XDestroyImage
+  - XInitImage
+- pFp:
+  - XSetErrorHandler
+  - XSetIOErrorHandler
+- vFpp:
+  - _XDeqAsyncHandler
+- pFpi:
+  - XSynchronize
+- pFpp:
+  - XSetAfterFunction
+- iFppp:
+  - XAddConnectionWatch
+  - XRemoveConnectionWatch
+- pFpip:
+  - XESetCloseDisplay
+  - XESetError
+  - XESetEventToWire
+  - XESetWireToEvent
+- iFpppp:
+  - XCheckIfEvent
+  - XIfEvent
+  - XPeekIfEvent
+- iFppppp:
+  - XQueryExtension
+- iFpppppp:
+  - XRegisterIMInstantiateCallback
+  - XUnregisterIMInstantiateCallback
+- pFppiiuuLi:
+  - XGetImage
+- iFppppiiiiuu:
+  - XPutImage
+- pFppuiipuuii:
+  - XCreateImage
+- pFppiiuuuipii:
+  - XGetSubImage
+wrappedlibxext:
+- pFp:
+  - XSetExtensionErrorHandler
+- iFpppiiu:
+  - XShmGetImage
+- pFppppip:
+  - XextAddDisplay
+- pFppuippuu:
+  - XShmCreateImage
+- iFppppiiiiuui:
+  - XShmPutImage
+wrappedlibxt:
+- vFpuipp:
+  - XtAddEventHandler
+wrappedlibxtst:
+- iFpppp:
+  - XRecordEnableContext
+  - XRecordEnableContextAsync
+wrappedlibz:
+- iFp:
+  - deflateEnd
+  - inflateEnd
+  - inflateInit
+- iFppi:
+  - inflateInit_
+- iFpipi:
+  - deflateInit_
+  - inflateInit2_
+- iFpiiiiipi:
+  - deflateInit2_
+wrappedopenal:
+- vFv:
+  - alRequestFoldbackStop
+- pFp:
+  - alGetProcAddress
+- pFpp:
+  - alcGetProcAddress
+- vFiiipp:
+  - alRequestFoldbackStart
+wrappedpango:
+- vFpp:
+  - pango_attribute_init
+wrappedpng16:
+- vFpp:
+  - png_set_read_user_transform_fn
+- vFppp:
+  - png_set_read_fn
+- vFpppp:
+  - png_set_error_fn
+  - png_set_write_fn
+- pFpppp:
+  - png_create_read_struct
+- vFppppp:
+  - png_set_progressive_read_fn
+- pFppppppp:
+  - png_create_read_struct_2
+  - png_create_write_struct_2
+wrappedpulse:
+- vFp:
+  - pa_mainloop_free
+  - pa_threaded_mainloop_free
+- iFp:
+  - pa_signal_init
+- pFp:
+  - pa_mainloop_get_api
+  - pa_threaded_mainloop_get_api
+- vFpp:
+  - pa_signal_set_destroy
+- pFpp:
+  - pa_context_new
+- vFppp:
+  - pa_context_set_event_callback
+  - pa_context_set_state_callback
+  - pa_context_set_subscribe_callback
+  - pa_mainloop_set_poll_func
+  - pa_stream_set_buffer_attr_callback
+  - pa_stream_set_event_callback
+  - pa_stream_set_latency_update_callback
+  - pa_stream_set_moved_callback
+  - pa_stream_set_overflow_callback
+  - pa_stream_set_read_callback
+  - pa_stream_set_started_callback
+  - pa_stream_set_state_callback
+  - pa_stream_set_suspended_callback
+  - pa_stream_set_underflow_callback
+  - pa_stream_set_write_callback
+- pFipp:
+  - pa_signal_new
+- pFppp:
+  - pa_context_drain
+  - pa_context_exit_daemon
+  - pa_context_get_client_info_list
+  - pa_context_get_module_info_list
+  - pa_context_get_server_info
+  - pa_context_get_sink_info_list
+  - pa_context_get_sink_input_info_list
+  - pa_context_get_source_info_list
+  - pa_context_new_with_proplist
+  - pa_stream_drain
+  - pa_stream_flush
+  - pa_stream_prebuf
+  - pa_stream_trigger
+  - pa_stream_update_timing_info
+- iFppip:
+  - pa_context_connect
+- iFpppV:
+  - pa_proplist_setf
+- pFpipp:
+  - pa_stream_cork
+- pFpupp:
+  - pa_context_get_sink_info_by_index
+  - pa_context_get_sink_input_info
+  - pa_context_get_source_info_by_index
+  - pa_context_subscribe
+  - pa_context_unload_module
+  - pa_stream_update_sample_rate
+- pFpppp:
+  - pa_context_get_sink_info_by_name
+  - pa_context_get_source_info_by_name
+  - pa_context_proplist_remove
+  - pa_context_set_default_sink
+  - pa_context_set_default_source
+  - pa_context_set_name
+  - pa_stream_proplist_remove
+  - pa_stream_set_buffer_attr
+  - pa_stream_set_name
+- pFpippp:
+  - pa_context_proplist_update
+  - pa_stream_proplist_update
+- pFpuipp:
+  - pa_context_set_sink_input_mute
+  - pa_context_set_source_mute_by_index
+- pFpuupp:
+  - pa_context_move_sink_input_by_index
+- pFpuppp:
+  - pa_context_set_sink_input_volume
+  - pa_context_set_sink_volume_by_index
+  - pa_context_set_source_volume_by_index
+- pFppppp:
+  - pa_context_load_module
+  - pa_context_set_source_volume_by_name
+- iFppLpIi:
+  - pa_stream_write
+wrappedsdl1:
+- vFp:
+  - SDL_KillThread
+  - SDL_SetEventFilter
+  - SDL_UnloadObject
+- iFp:
+  - SDL_GetWMInfo
+  - SDL_RemoveTimer
+- uFp:
+  - SDL_ReadBE16
+  - SDL_ReadBE32
+  - SDL_ReadLE16
+  - SDL_ReadLE32
+- UFp:
+  - SDL_ReadBE64
+  - SDL_ReadLE64
+- pFv:
+  - SDL_GetEventFilter
+- pFp:
+  - SDL_GL_GetProcAddress
+  - SDL_LoadObject
+- iFup:
+  - SDL_SetTimer
+- iFpp:
+  - SDL_OpenAudio
+- uFpW:
+  - SDL_WriteBE16
+  - SDL_WriteLE16
+- uFpu:
+  - SDL_WriteBE32
+  - SDL_WriteLE32
+- uFpU:
+  - SDL_WriteBE64
+  - SDL_WriteLE64
+- pFpi:
+  - SDL_LoadBMP_RW
+  - SDL_RWFromConstMem
+  - SDL_RWFromFP
+  - SDL_RWFromMem
+- pFpp:
+  - SDL_CreateThread
+  - SDL_LoadFunction
+  - SDL_RWFromFile
+- iFppi:
+  - SDL_SaveBMP_RW
+- pFupp:
+  - SDL_AddTimer
+- pFpippp:
+  - SDL_LoadWAV_RW
+wrappedsdl1image:
+- pFp:
+  - IMG_LoadBMP_RW
+  - IMG_LoadCUR_RW
+  - IMG_LoadGIF_RW
+  - IMG_LoadICO_RW
+  - IMG_LoadJPG_RW
+  - IMG_LoadLBM_RW
+  - IMG_LoadPCX_RW
+  - IMG_LoadPNG_RW
+  - IMG_LoadPNM_RW
+  - IMG_LoadTGA_RW
+  - IMG_LoadTIF_RW
+  - IMG_LoadWEBP_RW
+  - IMG_LoadXCF_RW
+  - IMG_LoadXPM_RW
+  - IMG_LoadXV_RW
+- pFpi:
+  - IMG_Load_RW
+- pFpip:
+  - IMG_LoadTyped_RW
+wrappedsdl1mixer:
+- vFp:
+  - Mix_ChannelFinished
+  - Mix_HookMusicFinished
+- pFp:
+  - Mix_LoadMUS_RW
+- vFpp:
+  - Mix_HookMusic
+  - Mix_SetPostMix
+- iFip:
+  - Mix_UnregisterEffect
+- pFpi:
+  - Mix_LoadWAV_RW
+- pFpii:
+  - Mix_LoadMUSType_RW
+- iFippp:
+  - Mix_RegisterEffect
+wrappedsdl1sound:
+- pFpppu:
+  - Sound_NewSample
+wrappedsdl1ttf:
+- pFpii:
+  - TTF_OpenFontRW
+- pFpiii:
+  - TTF_OpenFontIndexRW
+wrappedsdl2:
+- vFp:
+  - SDL_UnloadObject
+- iFp:
+  - SDL_RWclose
+  - SDL_RemoveTimer
+  - SDL_SaveAllDollarTemplates
+- IFp:
+  - SDL_RWtell
+- uFp:
+  - SDL_ReadBE16
+  - SDL_ReadBE32
+  - SDL_ReadLE16
+  - SDL_ReadLE32
+  - SDL_ReadU8
+- UFp:
+  - SDL_ReadBE64
+  - SDL_ReadLE64
+- pFv:
+  - SDL_GetBasePath
+  - SDL_Vulkan_GetVkGetInstanceProcAddr
+- pFp:
+  - SDL_GL_GetProcAddress
+  - SDL_LoadObject
+- vFpp:
+  - SDL_AddEventWatch
+  - SDL_DelEventWatch
+  - SDL_LogGetOutputFunction
+  - SDL_LogSetOutputFunction
+  - SDL_SetEventFilter
+- vFpV:
+  - SDL_Log
+- iFip:
+  - SDL_SaveDollarTemplate
+- iFWW:
+  - SDL_IsJoystickNintendoSwitchPro
+  - SDL_IsJoystickPS4
+  - SDL_IsJoystickSteamController
+  - SDL_IsJoystickXbox360
+  - SDL_IsJoystickXboxOne
+- iFUU:
+  - SDL_IsJoystickHIDAPI
+  - SDL_IsJoystickXInput
+- iFpi:
+  - SDL_GameControllerAddMappingsFromRW
+- iFpp:
+  - SDL_GetEventFilter
+  - SDL_OpenAudio
+- uFpW:
+  - SDL_WriteBE16
+  - SDL_WriteLE16
+- uFpu:
+  - SDL_WriteBE32
+  - SDL_WriteLE32
+  - SDL_WriteU8
+- uFpU:
+  - SDL_WriteBE64
+  - SDL_WriteLE64
+- pFpi:
+  - SDL_LoadBMP_RW
+  - SDL_RWFromConstMem
+  - SDL_RWFromFP
+  - SDL_RWFromMem
+- pFpp:
+  - SDL_LoadFunction
+  - SDL_RWFromFile
+- vFipV:
+  - SDL_LogCritical
+  - SDL_LogDebug
+  - SDL_LogError
+  - SDL_LogInfo
+  - SDL_LogVerbose
+  - SDL_LogWarn
+- iFupp:
+  - SDL_TLSSet
+- iFppi:
+  - SDL_SaveBMP_RW
+- iFppV:
+  - SDL_sscanf
+- IFpIi:
+  - SDL_RWseek
+- pFupp:
+  - SDL_AddTimer
+- pFppi:
+  - SDL_LoadFile_RW
+- pFppp:
+  - SDL_CreateThread
+- vFpuup:
+  - SDL_qsort
+- iFpLpp:
+  - SDL_vsnprintf
+- iFpLpV:
+  - SDL_snprintf
+- uFppuu:
+  - SDL_RWread
+  - SDL_RWwrite
+- iFpippi:
+  - SDL_OpenAudioDevice
+- pFpippp:
+  - SDL_LoadWAV_RW
+wrappedsdl2image:
+- pFp:
+  - IMG_LoadBMP_RW
+  - IMG_LoadCUR_RW
+  - IMG_LoadGIF_RW
+  - IMG_LoadICO_RW
+  - IMG_LoadJPG_RW
+  - IMG_LoadLBM_RW
+  - IMG_LoadPCX_RW
+  - IMG_LoadPNG_RW
+  - IMG_LoadPNM_RW
+  - IMG_LoadTGA_RW
+  - IMG_LoadTIF_RW
+  - IMG_LoadWEBP_RW
+  - IMG_LoadXCF_RW
+  - IMG_LoadXPM_RW
+  - IMG_LoadXV_RW
+- pFpi:
+  - IMG_Load_RW
+- iFppi:
+  - IMG_SavePNG_RW
+- pFpip:
+  - IMG_LoadTyped_RW
+- pFppi:
+  - IMG_LoadTexture_RW
+- pFppip:
+  - IMG_LoadTextureTyped_RW
+wrappedsdl2mixer:
+- vFp:
+  - Mix_ChannelFinished
+  - Mix_HookMusicFinished
+- vFpp:
+  - Mix_HookMusic
+  - Mix_SetPostMix
+- iFiw:
+  - MinorityMix_SetPosition
+- iFip:
+  - Mix_UnregisterEffect
+- pFpi:
+  - Mix_LoadMUS_RW
+  - Mix_LoadWAV_RW
+- pFpii:
+  - Mix_LoadMUSType_RW
+- iFippp:
+  - Mix_RegisterEffect
+wrappedsdl2ttf:
+- pFpii:
+  - TTF_OpenFontRW
+- pFpiii:
+  - TTF_OpenFontIndexRW
+wrappedsmpeg:
+- pFppi:
+  - SMPEG_new_rwops
+- vFpppp:
+  - SMPEG_setdisplay
+wrappedsmpeg2:
+- vFpppp:
+  - SMPEG_setdisplay
+- pFppii:
+  - SMPEG_new_rwops
+wrappedutil:
+- iFpppp:
+  - forkpty
+wrappedvorbisfile:
+- iFppplPPPP:
+  - ov_open_callbacks
+  - ov_test_callbacks
+wrappedxml2:
+- vFp:
+  - xmlSetExternalEntityLoader
+- iFp:
+  - xmlParseDocument
+- pFv:
+  - xmlGetExternalEntityLoader
+- vFpp:
+  - xmlHashFree
+- pFpp:
+  - xmlHashCopy
+- vFppp:
+  - xmlHashScan
+  - xmlHashScanFull
+  - xmlSchemaSetParserStructuredErrors
+  - xmlSchemaSetValidStructuredErrors
+- iFppp:
+  - xmlHashRemoveEntry
+  - xmlXPathRegisterFunc
+- pFppp:
+  - xmlNewCharEncodingHandler
+- vFpppp:
+  - xmlSchemaSetParserErrors
+  - xmlSchemaSetValidErrors
+- iFpppp:
+  - xmlHashRemoveEntry2
+  - xmlHashUpdateEntry
+  - xmlRegisterInputCallbacks
+- pFpppi:
+  - xmlParserInputBufferCreateIO
+- pFpppp:
+  - xmlOutputBufferCreateIO
+- iFppppp:
+  - xmlHashRemoveEntry3
+  - xmlHashUpdateEntry2
+- pFppppi:
+  - xmlSaveToIO
+- vFpppppp:
+  - xmlHashScan3
+  - xmlHashScanFull3
+- iFpppppp:
+  - xmlHashUpdateEntry3
diff --git a/src/wrapped/generated/wrappedbz2types.h b/src/wrapped/generated/wrappedbz2types.h
index d55ec009..c2494d06 100644
--- a/src/wrapped/generated/wrappedbz2types.h
+++ b/src/wrapped/generated/wrappedbz2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedbz2TYPES_H_
 #define __wrappedbz2TYPES_H_
diff --git a/src/wrapped/generated/wrappedcryptotypes.h b/src/wrapped/generated/wrappedcryptotypes.h
index dc766cd4..15add64f 100644
--- a/src/wrapped/generated/wrappedcryptotypes.h
+++ b/src/wrapped/generated/wrappedcryptotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedcryptoTYPES_H_
 #define __wrappedcryptoTYPES_H_
diff --git a/src/wrapped/generated/wrappedcurltypes.h b/src/wrapped/generated/wrappedcurltypes.h
index 51016b24..5afb7115 100644
--- a/src/wrapped/generated/wrappedcurltypes.h
+++ b/src/wrapped/generated/wrappedcurltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedcurlTYPES_H_
 #define __wrappedcurlTYPES_H_
diff --git a/src/wrapped/generated/wrappeddbustypes.h b/src/wrapped/generated/wrappeddbustypes.h
index edd8c998..2f304395 100644
--- a/src/wrapped/generated/wrappeddbustypes.h
+++ b/src/wrapped/generated/wrappeddbustypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappeddbusTYPES_H_
 #define __wrappeddbusTYPES_H_
diff --git a/src/wrapped/generated/wrappedexpattypes.h b/src/wrapped/generated/wrappedexpattypes.h
index 5cb6d168..3c46f1bc 100644
--- a/src/wrapped/generated/wrappedexpattypes.h
+++ b/src/wrapped/generated/wrappedexpattypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedexpatTYPES_H_
 #define __wrappedexpatTYPES_H_
diff --git a/src/wrapped/generated/wrappedflactypes.h b/src/wrapped/generated/wrappedflactypes.h
index 72321809..fbb112fa 100644
--- a/src/wrapped/generated/wrappedflactypes.h
+++ b/src/wrapped/generated/wrappedflactypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedflacTYPES_H_
 #define __wrappedflacTYPES_H_
diff --git a/src/wrapped/generated/wrappedfontconfigtypes.h b/src/wrapped/generated/wrappedfontconfigtypes.h
index 404df1a4..20aace5f 100644
--- a/src/wrapped/generated/wrappedfontconfigtypes.h
+++ b/src/wrapped/generated/wrappedfontconfigtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedfontconfigTYPES_H_
 #define __wrappedfontconfigTYPES_H_
diff --git a/src/wrapped/generated/wrappedfreetypetypes.h b/src/wrapped/generated/wrappedfreetypetypes.h
index f0ccf9a2..901bb072 100644
--- a/src/wrapped/generated/wrappedfreetypetypes.h
+++ b/src/wrapped/generated/wrappedfreetypetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedfreetypeTYPES_H_
 #define __wrappedfreetypeTYPES_H_
diff --git a/src/wrapped/generated/wrappedgnutlstypes.h b/src/wrapped/generated/wrappedgnutlstypes.h
index ed3803ce..8d809be6 100644
--- a/src/wrapped/generated/wrappedgnutlstypes.h
+++ b/src/wrapped/generated/wrappedgnutlstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedgnutlsTYPES_H_
 #define __wrappedgnutlsTYPES_H_
diff --git a/src/wrapped/generated/wrappedldlinuxtypes.h b/src/wrapped/generated/wrappedldlinuxtypes.h
index 0d03cc90..36fbfebb 100644
--- a/src/wrapped/generated/wrappedldlinuxtypes.h
+++ b/src/wrapped/generated/wrappedldlinuxtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedldlinuxTYPES_H_
 #define __wrappedldlinuxTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibasoundtypes.h b/src/wrapped/generated/wrappedlibasoundtypes.h
index 7cafcc34..8be41bbd 100644
--- a/src/wrapped/generated/wrappedlibasoundtypes.h
+++ b/src/wrapped/generated/wrappedlibasoundtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibasoundTYPES_H_
 #define __wrappedlibasoundTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h
index 81f51164..e5bc173e 100644
--- a/src/wrapped/generated/wrappedlibctypes.h
+++ b/src/wrapped/generated/wrappedlibctypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibcTYPES_H_
 #define __wrappedlibcTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibdltypes.h b/src/wrapped/generated/wrappedlibdltypes.h
index f12f52df..c2d5fac2 100644
--- a/src/wrapped/generated/wrappedlibdltypes.h
+++ b/src/wrapped/generated/wrappedlibdltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibdlTYPES_H_
 #define __wrappedlibdlTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibgltypes.h b/src/wrapped/generated/wrappedlibgltypes.h
index 7154e6e3..0cba72ae 100644
--- a/src/wrapped/generated/wrappedlibgltypes.h
+++ b/src/wrapped/generated/wrappedlibgltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibglTYPES_H_
 #define __wrappedlibglTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibglutypes.h b/src/wrapped/generated/wrappedlibglutypes.h
index a2dd9c43..6880a014 100644
--- a/src/wrapped/generated/wrappedlibglutypes.h
+++ b/src/wrapped/generated/wrappedlibglutypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibgluTYPES_H_
 #define __wrappedlibgluTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncurses6types.h b/src/wrapped/generated/wrappedlibncurses6types.h
index b95fa86e..0904b0ae 100644
--- a/src/wrapped/generated/wrappedlibncurses6types.h
+++ b/src/wrapped/generated/wrappedlibncurses6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v1.3.0.11) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibncurses6TYPES_H_
 #define __wrappedlibncurses6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncursestypes.h b/src/wrapped/generated/wrappedlibncursestypes.h
index 6eb59de9..367dd61b 100644
--- a/src/wrapped/generated/wrappedlibncursestypes.h
+++ b/src/wrapped/generated/wrappedlibncursestypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v1.3.0.11) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibncursesTYPES_H_
 #define __wrappedlibncursesTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncurseswtypes.h b/src/wrapped/generated/wrappedlibncurseswtypes.h
index 3e84b20f..ddad87e9 100644
--- a/src/wrapped/generated/wrappedlibncurseswtypes.h
+++ b/src/wrapped/generated/wrappedlibncurseswtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v1.3.0.11) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibncurseswTYPES_H_
 #define __wrappedlibncurseswTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibpthreadtypes.h b/src/wrapped/generated/wrappedlibpthreadtypes.h
index 3d4c0a26..8b7157cb 100644
--- a/src/wrapped/generated/wrappedlibpthreadtypes.h
+++ b/src/wrapped/generated/wrappedlibpthreadtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibpthreadTYPES_H_
 #define __wrappedlibpthreadTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibrttypes.h b/src/wrapped/generated/wrappedlibrttypes.h
index b31ceaf8..a07115bd 100644
--- a/src/wrapped/generated/wrappedlibrttypes.h
+++ b/src/wrapped/generated/wrappedlibrttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibrtTYPES_H_
 #define __wrappedlibrtTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibsmtypes.h b/src/wrapped/generated/wrappedlibsmtypes.h
index 08779089..8f20cffb 100644
--- a/src/wrapped/generated/wrappedlibsmtypes.h
+++ b/src/wrapped/generated/wrappedlibsmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibsmTYPES_H_
 #define __wrappedlibsmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibssltypes.h b/src/wrapped/generated/wrappedlibssltypes.h
index 805b0445..efb1b707 100644
--- a/src/wrapped/generated/wrappedlibssltypes.h
+++ b/src/wrapped/generated/wrappedlibssltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibsslTYPES_H_
 #define __wrappedlibsslTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtinfo6types.h b/src/wrapped/generated/wrappedlibtinfo6types.h
index 775a4714..cb8bcc0f 100644
--- a/src/wrapped/generated/wrappedlibtinfo6types.h
+++ b/src/wrapped/generated/wrappedlibtinfo6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v1.3.0.11) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibtinfo6TYPES_H_
 #define __wrappedlibtinfo6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtinfotypes.h b/src/wrapped/generated/wrappedlibtinfotypes.h
index c378345e..f6446e3b 100644
--- a/src/wrapped/generated/wrappedlibtinfotypes.h
+++ b/src/wrapped/generated/wrappedlibtinfotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v1.3.0.11) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibtinfoTYPES_H_
 #define __wrappedlibtinfoTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibx11types.h b/src/wrapped/generated/wrappedlibx11types.h
index afef27e6..457993e8 100644
--- a/src/wrapped/generated/wrappedlibx11types.h
+++ b/src/wrapped/generated/wrappedlibx11types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibx11TYPES_H_
 #define __wrappedlibx11TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxexttypes.h b/src/wrapped/generated/wrappedlibxexttypes.h
index 60324d87..02d68618 100644
--- a/src/wrapped/generated/wrappedlibxexttypes.h
+++ b/src/wrapped/generated/wrappedlibxexttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibxextTYPES_H_
 #define __wrappedlibxextTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxtsttypes.h b/src/wrapped/generated/wrappedlibxtsttypes.h
index e8fa799d..1762f8b9 100644
--- a/src/wrapped/generated/wrappedlibxtsttypes.h
+++ b/src/wrapped/generated/wrappedlibxtsttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibxtstTYPES_H_
 #define __wrappedlibxtstTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxttypes.h b/src/wrapped/generated/wrappedlibxttypes.h
index b8ed27b9..29a2b126 100644
--- a/src/wrapped/generated/wrappedlibxttypes.h
+++ b/src/wrapped/generated/wrappedlibxttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibxtTYPES_H_
 #define __wrappedlibxtTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibztypes.h b/src/wrapped/generated/wrappedlibztypes.h
index 896fa768..24dee671 100644
--- a/src/wrapped/generated/wrappedlibztypes.h
+++ b/src/wrapped/generated/wrappedlibztypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedlibzTYPES_H_
 #define __wrappedlibzTYPES_H_
diff --git a/src/wrapped/generated/wrappedopenaltypes.h b/src/wrapped/generated/wrappedopenaltypes.h
index 23d9eb44..02193222 100644
--- a/src/wrapped/generated/wrappedopenaltypes.h
+++ b/src/wrapped/generated/wrappedopenaltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedopenalTYPES_H_
 #define __wrappedopenalTYPES_H_
diff --git a/src/wrapped/generated/wrappedpangotypes.h b/src/wrapped/generated/wrappedpangotypes.h
index 056c7d89..c32d3800 100644
--- a/src/wrapped/generated/wrappedpangotypes.h
+++ b/src/wrapped/generated/wrappedpangotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedpangoTYPES_H_
 #define __wrappedpangoTYPES_H_
diff --git a/src/wrapped/generated/wrappedpng16types.h b/src/wrapped/generated/wrappedpng16types.h
index c0b5ed6c..d6c3a6c6 100644
--- a/src/wrapped/generated/wrappedpng16types.h
+++ b/src/wrapped/generated/wrappedpng16types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedpng16TYPES_H_
 #define __wrappedpng16TYPES_H_
diff --git a/src/wrapped/generated/wrappedpulsetypes.h b/src/wrapped/generated/wrappedpulsetypes.h
index 58e95b84..bec7cd77 100644
--- a/src/wrapped/generated/wrappedpulsetypes.h
+++ b/src/wrapped/generated/wrappedpulsetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedpulseTYPES_H_
 #define __wrappedpulseTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1imagetypes.h b/src/wrapped/generated/wrappedsdl1imagetypes.h
index 86085912..801f1b8c 100644
--- a/src/wrapped/generated/wrappedsdl1imagetypes.h
+++ b/src/wrapped/generated/wrappedsdl1imagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl1imageTYPES_H_
 #define __wrappedsdl1imageTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1mixertypes.h b/src/wrapped/generated/wrappedsdl1mixertypes.h
index ced84f3b..5c101512 100644
--- a/src/wrapped/generated/wrappedsdl1mixertypes.h
+++ b/src/wrapped/generated/wrappedsdl1mixertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl1mixerTYPES_H_
 #define __wrappedsdl1mixerTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1soundtypes.h b/src/wrapped/generated/wrappedsdl1soundtypes.h
index ce521f5b..72cf99b5 100644
--- a/src/wrapped/generated/wrappedsdl1soundtypes.h
+++ b/src/wrapped/generated/wrappedsdl1soundtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl1soundTYPES_H_
 #define __wrappedsdl1soundTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1ttftypes.h b/src/wrapped/generated/wrappedsdl1ttftypes.h
index 4f020df2..f534a830 100644
--- a/src/wrapped/generated/wrappedsdl1ttftypes.h
+++ b/src/wrapped/generated/wrappedsdl1ttftypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl1ttfTYPES_H_
 #define __wrappedsdl1ttfTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1types.h b/src/wrapped/generated/wrappedsdl1types.h
index ed1e5ccb..0dd02b2d 100644
--- a/src/wrapped/generated/wrappedsdl1types.h
+++ b/src/wrapped/generated/wrappedsdl1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl1TYPES_H_
 #define __wrappedsdl1TYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2imagetypes.h b/src/wrapped/generated/wrappedsdl2imagetypes.h
index f54a6928..caa292aa 100644
--- a/src/wrapped/generated/wrappedsdl2imagetypes.h
+++ b/src/wrapped/generated/wrappedsdl2imagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl2imageTYPES_H_
 #define __wrappedsdl2imageTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2mixertypes.h b/src/wrapped/generated/wrappedsdl2mixertypes.h
index ee90054f..5950e0b6 100644
--- a/src/wrapped/generated/wrappedsdl2mixertypes.h
+++ b/src/wrapped/generated/wrappedsdl2mixertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl2mixerTYPES_H_
 #define __wrappedsdl2mixerTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2ttftypes.h b/src/wrapped/generated/wrappedsdl2ttftypes.h
index 9e481582..3802bc25 100644
--- a/src/wrapped/generated/wrappedsdl2ttftypes.h
+++ b/src/wrapped/generated/wrappedsdl2ttftypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl2ttfTYPES_H_
 #define __wrappedsdl2ttfTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2types.h b/src/wrapped/generated/wrappedsdl2types.h
index 6123d9d6..dc3c54dd 100644
--- a/src/wrapped/generated/wrappedsdl2types.h
+++ b/src/wrapped/generated/wrappedsdl2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsdl2TYPES_H_
 #define __wrappedsdl2TYPES_H_
diff --git a/src/wrapped/generated/wrappedsmpeg2types.h b/src/wrapped/generated/wrappedsmpeg2types.h
index e8b138bf..f18c0852 100644
--- a/src/wrapped/generated/wrappedsmpeg2types.h
+++ b/src/wrapped/generated/wrappedsmpeg2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsmpeg2TYPES_H_
 #define __wrappedsmpeg2TYPES_H_
diff --git a/src/wrapped/generated/wrappedsmpegtypes.h b/src/wrapped/generated/wrappedsmpegtypes.h
index 75b4cf9f..8cd196f5 100644
--- a/src/wrapped/generated/wrappedsmpegtypes.h
+++ b/src/wrapped/generated/wrappedsmpegtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedsmpegTYPES_H_
 #define __wrappedsmpegTYPES_H_
diff --git a/src/wrapped/generated/wrappedutiltypes.h b/src/wrapped/generated/wrappedutiltypes.h
index cfaabed6..2c4cd66a 100644
--- a/src/wrapped/generated/wrappedutiltypes.h
+++ b/src/wrapped/generated/wrappedutiltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedutilTYPES_H_
 #define __wrappedutilTYPES_H_
diff --git a/src/wrapped/generated/wrappedvorbisfiletypes.h b/src/wrapped/generated/wrappedvorbisfiletypes.h
index a88c6330..2acf3593 100644
--- a/src/wrapped/generated/wrappedvorbisfiletypes.h
+++ b/src/wrapped/generated/wrappedvorbisfiletypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedvorbisfileTYPES_H_
 #define __wrappedvorbisfileTYPES_H_
diff --git a/src/wrapped/generated/wrappedxml2types.h b/src/wrapped/generated/wrappedxml2types.h
index 89f58f8d..a86d7aa7 100644
--- a/src/wrapped/generated/wrappedxml2types.h
+++ b/src/wrapped/generated/wrappedxml2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __wrappedxml2TYPES_H_
 #define __wrappedxml2TYPES_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index e047339e..67007d4c 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 6f5c2078..37b2a501 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.0.0.13) *
+ * File automatically generated by rebuild_wrappers.py (v2.0.1.14) *
  *******************************************************************/
 #ifndef __WRAPPER_H_
 #define __WRAPPER_H_