<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/preprocessor/pragma-once.slang, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2019-08-19T20:26:41+00:00</updated>
<entry>
<title>Testing using a 'naked' ISlangFileSystemExt option. (#1026)</title>
<updated>2019-08-19T20:26:41+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-08-19T20:26:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=3284144312ff6b86ec6f9dd665ff216c7cd4c737'/>
<id>urn:sha1:3284144312ff6b86ec6f9dd665ff216c7cd4c737</id>
<content type='text'>
</content>
</entry>
<entry>
<title>A more convoluted #pragma once file identity test, using relative paths. (#1021)</title>
<updated>2019-08-15T22:38:59+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-08-15T22:38:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=77fe3dd74446fb07dd0de31114f7033f111ef868'/>
<id>urn:sha1:77fe3dd74446fb07dd0de31114f7033f111ef868</id>
<content type='text'>
* A more convoluted #pragma once file identity test, using relative paths.

* Fix bug with passing - to slang as a command line option causes a crash.
Ability to set file-system to use on command line.
#pragma once tests try with 'normal' and 'read-file' only versions

* OSFileSystem -&gt; OSFileSystemExt
LoadFileOSFileSystem -&gt; OSFileSystem

Implemented OSFileSystem like OSFileSystemExt as as singleton.
Fixes to comments.
</content>
</entry>
<entry>
<title>Path simplification/hash mode, plus bug fixes (#788)</title>
<updated>2019-01-21T20:33:59+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-01-21T20:33:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0a3ef7b4ae02983ea3f986ba8211e7c6af9d254b'/>
<id>urn:sha1:0a3ef7b4ae02983ea3f986ba8211e7c6af9d254b</id>
<content type='text'>
* * Fix memory bug around expanding va_args - needed buffer to have space for terminating 0
* Fix problem with FileWriter defaults being globals, as memory they allocate, will only be freed after return from main - work around by making StdWriters RefObject derived, and kept in scope such the writers are destroyed before checks for leaks is found
* Added SimplifyPathAndHash mode for CacheFileSystem - will simplify the path and see if simplified path is in cache before reading file (limiting amout of underlying file requests)

* * Added calcReplaceChar
* Renamed DefaultFileSystem to OSFileSystem
* Made OSFileSystem convert windows \ to / on linux

* Simplified logic for caching in CacheFileSystem.

* Added pragma-once-c to add extra test, but also so there is an 'include' directory in preprocessor tests.

* Small fixes in pragma once test.

* Simplified cache handling path, so that paths/simplified paths area always added.

* Improve naming of methods for different caches.
</content>
</entry>
<entry>
<title>Feature/hash for source identity (#786)</title>
<updated>2019-01-17T22:50:48+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-01-17T22:50:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=3c7e1be0098f963225afd0ebe83340a991392892'/>
<id>urn:sha1:3c7e1be0098f963225afd0ebe83340a991392892</id>
<content type='text'>
* * Added COMMAND_LINE_SIMPLE test type
* Made how spawning works controllable by paramter/type SpawnType
* Made break-outside-loop and global-uniform run command line slangc

* calcRelativePath -&gt; calcCombinedPath

* Add 64 bit version of GetHash.

* Add support for Hash based mode for CacheFileSystem.
</content>
</entry>
<entry>
<title>Add basic support for #pragma once (#630)</title>
<updated>2018-08-27T19:33:35+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2018-08-27T19:33:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=9a9733091cc7c9628e445313785d561deb229072'/>
<id>urn:sha1:9a9733091cc7c9628e445313785d561deb229072</id>
<content type='text'>
* Improve diagnostic messages for function redefinition

The front-end was using internal "not implemented" errors instead of friendly user-facing errors to handle:

* Redefinition of a function (same signature and both have bodies)

* Multiple function declarations/definitions with the same parameter signature, but differnet return types

This change simply turns both of these into reasonably friendly errors that explain what went wrong and point to the previous definition/declaration as appropriate.

* Add support for detecting #pragma directives and handling them

The logic here mirrors what was set up for preprocessor directives, just for "sub-directives" in this case.
The only case here is the default one, which now reports a warning for directives we don't understand.

* Add basic support for #pragma once

Fixes #494

The approach here is simplistic in the extreme. When we see a `#pragma once` directive, we put the current file path (the location of the `#pragma` directive, as reported by our source manager) into a set, and  then any paths in that set are ignored by subsequent `#include` directives.

This should work for simple cases of `#pragma once`, but it is likely to fail in a variety of cases because our filesystem layer currently makes no attempt to normalize/canonicalize paths. Improving the robustness of the solution is left to future work.

This change includes a simple test case to confirm that a second `#include` of a file with a `#pragma once` is successfully ignored.
</content>
</entry>
</feed>
