John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							279012d8c4 
							
						 
					 
					
						
						
							
							Merge pull request  #16  from google/pp-directive  
						
						 
						
						... 
						
						
						
						Preprocessing directive handling 
						
						
					 
					
						2015-07-14 19:36:29 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Andrew Woloszyn 
							
						 
					 
					
						
						
						
						
							
						
						
							aae1ad8296 
							
						 
					 
					
						
						
							
							Added error output to the preprocessor.  
						
						 
						
						... 
						
						
						
						This patch distinguishes preprocessing errors with normal parsing
errors and gives glslangValidator the ability to output preprocessing
errors. 
						
						
					 
					
						2015-07-14 16:02:25 -04:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Lei Zhang 
							
						 
					 
					
						
						
						
						
							
						
						
							46ea5396ef 
							
						 
					 
					
						
						
							
							Fix empty line handling in line directive callback.  
						
						 
						
						... 
						
						
						
						The current line number for the #line directive should be passed
in as parameter to the line directive callback. Without it, we
don't know how many empty lines we should output. 
						
						
					 
					
						2015-07-14 14:38:14 -04:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Lei Zhang 
							
						 
					 
					
						
						
						
						
							
						
						
							5cbc990a0a 
							
						 
					 
					
						
						
							
							Fix line number handling in line directive callback.  
						
						 
						
						... 
						
						
						
						The line argument passed into the lineCallback function is the
literal value of the first argument of the #line directive.
lastLine in DoPreprocessing() should be updated taking into
consideration the different definitions for #line between specs.
Add a test to reveal the bug. 
						
						
					 
					
						2015-07-14 14:37:59 -04:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							68d78fd31e 
							
						 
					 
					
						
						
							
							Updated command-line options, adding -o for saving binaries, -G for OpenGL SPIR-V validation, -v etc.  
						
						 
						
						... 
						
						
						
						Old uses should still work as they did before.
Also encapsulated use of these flags during parsing, for the parse context.
Added SPIR-V version to -v. 
						
						
					 
					
						2015-07-12 19:28:10 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							b329715caf 
							
						 
					 
					
						
						
							
							Fix clang static analyzer issues, as reported by floooh.  
						
						 
						
						
						
						
					 
					
						2015-07-11 18:01:03 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							c555dddd53 
							
						 
					 
					
						
						
							
							glslang preprocessing: Add -E option to print out preprocessed GLSL, and do the work needed to generate a preprocessed stream.  From Andrew Woloszyn <awoloszyn@google.com>.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31508  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2015-06-17 02:38:44 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							9288f46b95 
							
						 
					 
					
						
						
							
							glslang front-end: Added a callback mechanism for #line/#pragma/#version/#extension.  From Andrew Woloszyn <awoloszyn@google.com>.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31507  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2015-06-16 23:08:00 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							93dfbe1309 
							
						 
					 
					
						
						
							
							glslang: Fix over 100 warnings from MSVC warning level 4.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31202  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2015-05-15 17:30:55 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							2b20dcb64d 
							
						 
					 
					
						
						
							
							Fix public bug 1277: #line L sets the next line to L+1 or just L, based on the version of the language.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@29277  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2014-12-20 07:03:18 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							cf0206c341 
							
						 
					 
					
						
						
							
							Restore r26245 and all tests and test results since 4/1:  
						
						 
						
						... 
						
						
						
						r26245: Remove "not yet complete" warning for versions 130 and 140, after tidying up a bit and adding tests.  Token pasting is the only known missing feature, and gives its own message now on use.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26226  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2014-04-14 15:46:40 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							fcb4ed054c 
							
						 
					 
					
						
						
							
							Preprocessor: Rationalize, simplify, and correct the stack of input sources and their tokenization.  This included  
						
						 
						
						... 
						
						
						
						- consistently dealing with EOF and its effect on error recovery (bug 11444, #1 )
 - turning a simulated OO hierarchy of function pointers and typecasting into a real C++ class hierarchy
 - correctly handling '\' everywhere, in all classes of tokens, as a layer before preprocessing itself
 - conditionally handling '\n' in macro expansion input, depending on whether it is in a macro expression or not
 - delete some unused "memory cleanup" code
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24626  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-30 20:34:28 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							bd95819123 
							
						 
					 
					
						
						
							
							1) Allow '\' before a non-newline as a token in the preprocessor, and 2) localize line-continuation to just the pp scanner.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24530  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-16 23:58:15 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							2d2f31625d 
							
						 
					 
					
						
						
							
							Preprocessor:  Implement skipping of macros that evaluate to nothing while evaluating expressions.  They had been causing early termination of an expression's evaluation.  
						
						 
						
						... 
						
						
						
						Also includes some unrelated updates of documentation.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24420  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-10 00:25:14 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							64bcb105c9 
							
						 
					 
					
						
						
							
							Made '\' at end of C++ comments be a warning.  It is line continuation for some versions, but not others.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24396  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-06 21:45:15 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							3e0efe5981 
							
						 
					 
					
						
						
							
							Fix g++ warnings.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24391  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-06 18:24:47 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							7fc3669195 
							
						 
					 
					
						
						
							
							Preprocessor: Add short-circuit logic so ES errors are not given on undefined variables that are short circuited in && and || preprocessing expressions.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24390  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-06 18:19:22 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							e28beee891 
							
						 
					 
					
						
						
							
							Preprocessor:  Fixed that some comments incorrectly substituted a new line instead of space.  Also generally cleaned up the space-related coding.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24387  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-06 16:13:47 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							8e789e8d62 
							
						 
					 
					
						
						
							
							Fixed a couple places that missed the error check for #else/#elif after #else.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24378  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-05 21:51:40 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							66cdf36521 
							
						 
					 
					
						
						
							
							Detect and give error on second occurrence of #version.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24347  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-04 20:08:16 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							e1f0f5b31f 
							
						 
					 
					
						
						
							
							Re-allow non-language characters in ES 100 comments, including '\', except for '\' just before a new line.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24331  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-04 17:23:03 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							1abc4045ce 
							
						 
					 
					
						
						
							
							Add #line functionality to allow expressions instead of just literals.  Also made some preprocessor code slightly more clear.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24294  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-03 17:19:03 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							98434bed00 
							
						 
					 
					
						
						
							
							Preprocessor fixes:  
						
						 
						
						... 
						
						
						
						- Correctly handle non-directive lines starting with "#"
 - Correctly ignore unrecognized #pragma
 - Partial fix for new lines in the middle of macro invocation
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24266  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-12-02 15:56:38 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							e1dba1b59f 
							
						 
					 
					
						
						
							
							Fix a preprocessor memory leak by cleaning up some preprocessor memory management.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24125  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-11-19 20:52:56 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							69aa9c1b84 
							
						 
					 
					
						
						
							
							Fixes to scanning:  
						
						 
						
						... 
						
						
						
						- do version checking for the line-continuation character
 - check for built-in names in #undef
 - bug fix for #elif after #else
 - do version checking for use of floating point suffixes (f, LF, etc.)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24011  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-11-12 03:31:24 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							4d6570a1b3 
							
						 
					 
					
						
						
							
							Fix several issues in the preprocessor:  
						
						 
						
						... 
						
						
						
						- macro expansion of hexidecimal numbers 
 - give errors instead of warnings/silence on extra tokens after #endif, #else, etc.
 - give errors on reserved macro name use, reuse of argument, and redefinition with different whitespace presence
 - detect and give error for all cases of #elif and #else after #else
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23982  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-11-10 23:07:36 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							ea869fb403 
							
						 
					 
					
						
						
							
							Improve preprocessor by using GLSL scanner, allowing read-only strings to be compiled, unifying of line # tracking, and correct detection that ES #version appeared after a comment.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23721  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-10-28 18:12:06 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							c973c004d4 
							
						 
					 
					
						
						
							
							Non-functional: Use better token names for the preprocessor.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23624  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-10-20 18:37:53 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							1f4104fbb1 
							
						 
					 
					
						
						
							
							Fix memory corruption problem in the preprocessor, removing custom hash-tables/etc. and replacing with std containers.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23623  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-10-20 18:18:36 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							61c2d1410a 
							
						 
					 
					
						
						
							
							Document how to add a new feature enabled by an extension in Versions.cpp.  Also reorganized slightly to localize related functions.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23376  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-10-03 20:23:57 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							b603f918a4 
							
						 
					 
					
						
						
							
							Put all glslang internals (but not the external interface) into the glslang namespace.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22882  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-08-29 00:39:25 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								John Kessenich 
							
						 
					 
					
						
						
						
						
							
						
						
							7213324259 
							
						 
					 
					
						
						
							
							Reframe the preprocessor as a C++ class, with instances, removing all C code, removing all global variables.  Upgrade bison version to pass a parse context on through to the preprocessor.  All the basic things to make something thread safe.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22291  e7fa87d3-cd2b-0410-9028-fcbf551c1848 
						
						
					 
					
						2013-07-08 19:39:16 +00:00