Create dummy side project.
authorJohn Kessenich <cepheus@frii.com>
Mon, 28 Jul 2014 04:21:04 +0000 (04:21 +0000)
committerJohn Kessenich <cepheus@frii.com>
Mon, 28 Jul 2014 04:21:04 +0000 (04:21 +0000)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27519 e7fa87d3-cd2b-0410-9028-fcbf551c1848

15 files changed:
BIL/Bil.h [new file with mode: 0644]
BIL/BilBuilder.cpp [new file with mode: 0644]
BIL/BilBuilder.h [new file with mode: 0644]
BIL/BilDisassemble.cpp [new file with mode: 0644]
BIL/BilDisassemble.h [new file with mode: 0644]
BIL/Bir.h [new file with mode: 0644]
BIL/CMakeLists.txt [new file with mode: 0644]
BIL/GlslangToBil.cpp [new file with mode: 0644]
BIL/GlslangToBil.h [new file with mode: 0644]
CMakeLists.txt
StandAlone/CMakeLists.txt
StandAlone/StandAlone.cpp
StandAlone/Worklist.h
Todo.txt
glslang/Include/Types.h

diff --git a/BIL/Bil.h b/BIL/Bil.h
new file mode 100644 (file)
index 0000000..f9ab2c4
--- /dev/null
+++ b/BIL/Bil.h
@@ -0,0 +1,6 @@
+\r
+#pragma once\r
+#ifndef Bil_H\r
+#define Bil_H\r
+\r
+#endif // Bil_H\r
diff --git a/BIL/BilBuilder.cpp b/BIL/BilBuilder.cpp
new file mode 100644 (file)
index 0000000..e39c9f1
--- /dev/null
@@ -0,0 +1,59 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#include <assert.h>\r
+\r
+#include "BilBuilder.h"\r
+\r
+#ifndef _WIN32\r
+    #include <cstdio>\r
+#endif\r
+\r
+namespace glbil {\r
+\r
+Builder::Builder()\r
+{\r
+}\r
+\r
+Builder::~Builder()\r
+{\r
+}\r
+\r
+void MissingFunctionality(const char* fun)\r
+{\r
+    printf("Missing functionality: %s\n", fun);\r
+    exit(1);\r
+}\r
+\r
+}; // end glbil namespace\r
diff --git a/BIL/BilBuilder.h b/BIL/BilBuilder.h
new file mode 100644 (file)
index 0000000..ba993d4
--- /dev/null
@@ -0,0 +1,56 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#pragma once\r
+#ifndef BilBuilder_H\r
+#define BilBuilder_H\r
+\r
+#include "Bil.h"\r
+#include "Bir.h"\r
+\r
+#include <stack>\r
+\r
+namespace glbil {\r
+\r
+class Builder {\r
+public:\r
+    Builder();\r
+    virtual ~Builder();\r
+};\r
+\r
+void MissingFunctionality(const char*);\r
+\r
+};  // end glbil namespace\r
+\r
+#endif // BilBuilder_H\r
diff --git a/BIL/BilDisassemble.cpp b/BIL/BilDisassemble.cpp
new file mode 100644 (file)
index 0000000..6425b86
--- /dev/null
@@ -0,0 +1,35 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#include "BilDisassemble.h"\r
diff --git a/BIL/BilDisassemble.h b/BIL/BilDisassemble.h
new file mode 100644 (file)
index 0000000..3400675
--- /dev/null
@@ -0,0 +1,36 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#include "Bil.h"\r
+\r
diff --git a/BIL/Bir.h b/BIL/Bir.h
new file mode 100644 (file)
index 0000000..eee9dec
--- /dev/null
+++ b/BIL/Bir.h
@@ -0,0 +1,49 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#pragma once\r
+#ifndef Bir_H\r
+#define Bir_H\r
+\r
+#include "Bil.h"\r
+\r
+#include <vector>\r
+#include <iostream>\r
+\r
+namespace glbil {\r
+\r
+\r
+};  // end glbil namespace\r
+\r
+#endif // Bir_H\r
diff --git a/BIL/CMakeLists.txt b/BIL/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a6b4251
--- /dev/null
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 2.8)\r
+\r
+include_directories(.. ${CMAKE_CURRENT_BINARY_DIR})\r
+\r
+set(SOURCES\r
+    GlslangToBil.cpp\r
+    BilBuilder.cpp\r
+    BilDisassemble.cpp)\r
+\r
+set(HEADERS\r
+    GlslangToBil.h\r
+    BilBuilder.h\r
+    Bir.h\r
+    BilDisassemble.h)\r
+\r
+add_library(BIL STATIC ${SOURCES} ${HEADERS})\r
+\r
+if(WIN32)\r
+    source_group("Source" FILES ${SOURCES} ${HEADERS})\r
+endif(WIN32)\r
+\r
+install(TARGETS BIL\r
+        ARCHIVE DESTINATION lib)\r
diff --git a/BIL/GlslangToBil.cpp b/BIL/GlslangToBil.cpp
new file mode 100644 (file)
index 0000000..bb48a6e
--- /dev/null
@@ -0,0 +1,50 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#include "Bil.h"\r
+#include "GlslangToBil.h"\r
+#include "BilBuilder.h"\r
+#include "BilDisassemble.h"\r
+\r
+// Glslang includes\r
+#include "glslang/MachineIndependent/localintermediate.h"\r
+#include "glslang/MachineIndependent/SymbolTable.h"\r
+\r
+namespace glslang {\r
+\r
+void GlslangToBil(const glslang::TIntermediate& intermediate)\r
+{\r
+}\r
+\r
+}; // end namespace glslang\r
diff --git a/BIL/GlslangToBil.h b/BIL/GlslangToBil.h
new file mode 100644 (file)
index 0000000..b030fe3
--- /dev/null
@@ -0,0 +1,41 @@
+//\r
+//Copyright (C) 2014 LunarG, Inc.\r
+//\r
+//All rights reserved.\r
+//\r
+//Redistribution and use in source and binary forms, with or without\r
+//modification, are permitted provided that the following conditions\r
+//are met:\r
+//\r
+//    Redistributions of source code must retain the above copyright\r
+//    notice, this list of conditions and the following disclaimer.\r
+//\r
+//    Redistributions in binary form must reproduce the above\r
+//    copyright notice, this list of conditions and the following\r
+//    disclaimer in the documentation and/or other materials provided\r
+//    with the distribution.\r
+//\r
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its\r
+//    contributors may be used to endorse or promote products derived\r
+//    from this software without specific prior written permission.\r
+//\r
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+//POSSIBILITY OF SUCH DAMAGE.\r
+\r
+#include "../glslang/Include/intermediate.h"\r
+\r
+namespace glslang {\r
+\r
+void GlslangToBil(const glslang::TIntermediate& intermediate);\r
+\r
+};\r
index 2746f8b..d852c48 100644 (file)
@@ -16,3 +16,4 @@ endif(WIN32)
 add_subdirectory(glslang)\r
 add_subdirectory(OGLCompilersDLL)\r
 add_subdirectory(StandAlone)\r
+add_subdirectory(BIL)\r
index 4c60c4a..ec4ba66 100644 (file)
@@ -16,7 +16,8 @@ add_executable(glslangValidator ${SOURCES})
 set(LIBRARIES\r
     glslang\r
     OGLCompiler\r
-    OSDependent)\r
+    OSDependent\r
+    BIL)\r
 \r
 if(WIN32)\r
     set(LIBRARIES ${LIBRARIES} psapi)\r
index 10da8e1..8d3f5ca 100644 (file)
@@ -40,6 +40,7 @@
 #include "Worklist.h"
 #include "./../glslang/Include/ShHandle.h"
 #include "./../glslang/Public/ShaderLang.h"
+#include "../BIL/GlslangToBil.h"
 #include <string.h>
 #include <stdlib.h>
 #include <math.h>
@@ -64,6 +65,7 @@ enum TOptions {
     EOptionDumpReflection     = 0x100,
     EOptionSuppressWarnings   = 0x200,
     EOptionDumpVersions       = 0x400,
+    EOptionBil                = 0x800,
 };
 
 //
@@ -464,6 +466,9 @@ bool ProcessArguments(int argc, char* argv[])
         Work[argc] = 0;
         if (argv[0][0] == '-') {
             switch (argv[0][1]) {
+            case 'b':
+                Options |= EOptionBil;
+                break;
             case 'c':
                 Options |= EOptionDumpConfig;
                 break;
@@ -615,6 +620,17 @@ void CompileAndLinkShaders()
         program.dumpReflection();
     }
 
+    if (Options & EOptionBil) {
+        if (CompileFailed || LinkFailed)
+            printf("Bil is not generated for failed compile or link\n");
+        else {
+            for (int stage = 0; stage < EShLangCount; ++stage) {
+                if (program.getIntermediate((EShLanguage)stage))
+                    glslang::GlslangToBil(*program.getIntermediate((EShLanguage)stage));
+            }
+        }
+    }
+
     // Free everything up, program has to go before the shaders
     // because it might have merged stuff from the shaders, and
     // the stuff from the shaders has to have its destructors called
@@ -813,6 +829,7 @@ void usage()
            "\n"
            "To get other information, use one of the following options:\n"
            "(Each option must be specified separately, but can go anywhere in the command line.)\n"
+           "  -b  create BIL\n"
            "  -c  configuration dump; use to create default configuration file (redirect to a .conf file)\n"
            "  -i  intermediate tree (glslang AST) is printed out\n"
            "  -l  link validation of all input files\n"
index 1dabec9..c304007 100644 (file)
@@ -48,6 +48,7 @@ namespace glslang {
             name(s) { }
         std::string name;
         std::string results;
+        std::string resultsIndex;
     };
 
     class TWorklist {
index 6549c97..afd370a 100644 (file)
--- a/Todo.txt
+++ b/Todo.txt
@@ -1,5 +1,8 @@
 Current functionality level: ESSL 3.0, GLSL 1.5
 
+Bugs
+ - implicitly-sized gl_ClipDistance[] (at least in tessellation shaders) with sizes greater than one are not getting sizes greater than one
+
 + create version system
 
 Link Validation
index 42ce63b..9ab22eb 100644 (file)
@@ -479,6 +479,10 @@ public:
         return layoutLocation  != layoutLocationEnd ||
                layoutComponent != layoutComponentEnd;
     }
+    bool hasComponent() const
+    {
+        return layoutComponent != layoutComponentEnd;
+    }
     bool hasBinding() const
     {
         return layoutBinding != layoutBindingEnd;