Source

glLoadGen / modules / CommonStruct.lua

Full commit
Jason McKesson b7684b2 




Jason McKesson 087cb87 
Jason McKesson b7684b2 





Jason McKesson 087cb87 

Jason McKesson b7684b2 






Jason McKesson 087cb87 
Jason McKesson b7684b2 

























Jason McKesson 087cb87 

Jason McKesson b7684b2 






Jason McKesson 087cb87 






Jason McKesson b7684b2 





Jason McKesson 087cb87 












Jason McKesson b7684b2 
Jason McKesson 087cb87 


Jason McKesson b7684b2 

local common = {}

--Iterates over all requested extensions
--Calls Extension(hFile, extName, spec, options)
local extensions = 
{ type="group",
	{ type="ext-iter",
		{ type="write", name="Extension(hFile, extName, spec, options)", },
	},
}

function common.Extensions() return extensions end

--Iterates over every enumerator, in order:
-- Requested extension enums.
-- For each version:
--  Core extension enumerators from version X
--  Core enumerators from version X
-- Calls Enumerator(hFile, enum, enumTable, spec, options, enumSeen)
-- Optional small headers
local enumerators =
{ type="group",
{ type="enum-seen",
	{ type="ext-iter",
		{type="enum-iter",
			{ type="write", name="SmallHeader(hFile, value, options)", value="Extension: %extName", first=true, optional=true},
			{ type="write", name="Enumerator(hFile, enum, enumTable, spec, options, enumSeen)", },
			{ type="blank", last=true },
		},
	},
	{ type="version-iter",
		{ type="core-ext-cull-iter",
			{type="enum-iter",
				{ type="write", name="SmallHeader(hFile, value, options)", value="Core Extension: %extName", first=true, optional=true},
				{ type="write", name="Enumerator(hFile, enum, enumTable, spec, options, enumSeen)", },
				{ type="blank", last=true },
			},
		},
		{type="enum-iter",
			{ type="write", name="SmallHeader(hFile, value, options)", value="Version: %version", first=true, optional=true},
			{ type="write", name="Enumerator(hFile, enum, enumTable, spec, options, enumSeen)", },
			{ type="blank", last=true },
		},
	},
},
}

function common.Enumerators() return enumerators end

--Iterates over each function, in order:
-- Requested extension functions.
-- For each version:
--  Core extensions from for version X
--  Core functions from version X
-- Calls Function(hFile, func, typemap, spec, options, funcSeen)
-- Optional small headers.
-- Can provide an optional ending table, that will be placed within
-- the "func-seen" block.
function common.Functions(ending)
	ending = ending or { type="group" }
	return
	{ type="func-seen",
		{ type="ext-iter",
			{type="func-iter",
				{ type="write", name="SmallHeader(hFile, value, options)", value="Extension: %extName", first=true, optional=true},
				{ type="write", name="Function(hFile, func, typemap, spec, options, funcSeen)", },
				{ type="blank", last=true },
			},
		},
		{ type="version-iter",
			{ type="core-ext-cull-iter",
				{type="func-iter",
					{ type="write", name="SmallHeader(hFile, value, options)", value="Extension: %extName", first=true, optional=true},
					{ type="write", name="Function(hFile, func, typemap, spec, options, funcSeen)", },
					{ type="blank", last=true },
				},
			},
			{type="func-iter",
				{ type="write", name="SmallHeader(hFile, value, options)", value="Extension: %version", first=true, optional=true},
				{ type="write", name="Function(hFile, func, typemap, spec, options, funcSeen)", },
				{ type="blank", last=true },
			},
		},
		ending,
	}
end

return common