//
// Copyright (C) 2016 Google, Inc.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//    Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
//    Redistributions in binary form must reproduce the above
//    copyright notice, this list of conditions and the following
//    disclaimer in the documentation and/or other materials provided
//    with the distribution.
//
//    Neither the name of Google Inc. nor the names of its
//    contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

#include <cstdlib>
#include <cstring>
#include <sstream>
#include <cctype>

#include "ResourceLimits.h"

namespace glslang {

const TBuiltInResource DefaultTBuiltInResource = {
    /* .MaxLights = */ 32,
    /* .MaxClipPlanes = */ 6,
    /* .MaxTextureUnits = */ 32,
    /* .MaxTextureCoords = */ 32,
    /* .MaxVertexAttribs = */ 64,
    /* .MaxVertexUniformComponents = */ 4096,
    /* .MaxVaryingFloats = */ 64,
    /* .MaxVertexTextureImageUnits = */ 32,
    /* .MaxCombinedTextureImageUnits = */ 80,
    /* .MaxTextureImageUnits = */ 32,
    /* .MaxFragmentUniformComponents = */ 4096,
    /* .MaxDrawBuffers = */ 32,
    /* .MaxVertexUniformVectors = */ 128,
    /* .MaxVaryingVectors = */ 8,
    /* .MaxFragmentUniformVectors = */ 16,
    /* .MaxVertexOutputVectors = */ 16,
    /* .MaxFragmentInputVectors = */ 15,
    /* .MinProgramTexelOffset = */ -8,
    /* .MaxProgramTexelOffset = */ 7,
    /* .MaxClipDistances = */ 8,
    /* .MaxComputeWorkGroupCountX = */ 65535,
    /* .MaxComputeWorkGroupCountY = */ 65535,
    /* .MaxComputeWorkGroupCountZ = */ 65535,
    /* .MaxComputeWorkGroupSizeX = */ 1024,
    /* .MaxComputeWorkGroupSizeY = */ 1024,
    /* .MaxComputeWorkGroupSizeZ = */ 64,
    /* .MaxComputeUniformComponents = */ 1024,
    /* .MaxComputeTextureImageUnits = */ 16,
    /* .MaxComputeImageUniforms = */ 8,
    /* .MaxComputeAtomicCounters = */ 8,
    /* .MaxComputeAtomicCounterBuffers = */ 1,
    /* .MaxVaryingComponents = */ 60,
    /* .MaxVertexOutputComponents = */ 64,
    /* .MaxGeometryInputComponents = */ 64,
    /* .MaxGeometryOutputComponents = */ 128,
    /* .MaxFragmentInputComponents = */ 128,
    /* .MaxImageUnits = */ 8,
    /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8,
    /* .MaxCombinedShaderOutputResources = */ 8,
    /* .MaxImageSamples = */ 0,
    /* .MaxVertexImageUniforms = */ 0,
    /* .MaxTessControlImageUniforms = */ 0,
    /* .MaxTessEvaluationImageUniforms = */ 0,
    /* .MaxGeometryImageUniforms = */ 0,
    /* .MaxFragmentImageUniforms = */ 8,
    /* .MaxCombinedImageUniforms = */ 8,
    /* .MaxGeometryTextureImageUnits = */ 16,
    /* .MaxGeometryOutputVertices = */ 256,
    /* .MaxGeometryTotalOutputComponents = */ 1024,
    /* .MaxGeometryUniformComponents = */ 1024,
    /* .MaxGeometryVaryingComponents = */ 64,
    /* .MaxTessControlInputComponents = */ 128,
    /* .MaxTessControlOutputComponents = */ 128,
    /* .MaxTessControlTextureImageUnits = */ 16,
    /* .MaxTessControlUniformComponents = */ 1024,
    /* .MaxTessControlTotalOutputComponents = */ 4096,
    /* .MaxTessEvaluationInputComponents = */ 128,
    /* .MaxTessEvaluationOutputComponents = */ 128,
    /* .MaxTessEvaluationTextureImageUnits = */ 16,
    /* .MaxTessEvaluationUniformComponents = */ 1024,
    /* .MaxTessPatchComponents = */ 120,
    /* .MaxPatchVertices = */ 32,
    /* .MaxTessGenLevel = */ 64,
    /* .MaxViewports = */ 16,
    /* .MaxVertexAtomicCounters = */ 0,
    /* .MaxTessControlAtomicCounters = */ 0,
    /* .MaxTessEvaluationAtomicCounters = */ 0,
    /* .MaxGeometryAtomicCounters = */ 0,
    /* .MaxFragmentAtomicCounters = */ 8,
    /* .MaxCombinedAtomicCounters = */ 8,
    /* .MaxAtomicCounterBindings = */ 1,
    /* .MaxVertexAtomicCounterBuffers = */ 0,
    /* .MaxTessControlAtomicCounterBuffers = */ 0,
    /* .MaxTessEvaluationAtomicCounterBuffers = */ 0,
    /* .MaxGeometryAtomicCounterBuffers = */ 0,
    /* .MaxFragmentAtomicCounterBuffers = */ 1,
    /* .MaxCombinedAtomicCounterBuffers = */ 1,
    /* .MaxAtomicCounterBufferSize = */ 16384,
    /* .MaxTransformFeedbackBuffers = */ 4,
    /* .MaxTransformFeedbackInterleavedComponents = */ 64,
    /* .MaxCullDistances = */ 8,
    /* .MaxCombinedClipAndCullDistances = */ 8,
    /* .MaxSamples = */ 4,
    /* .limits = */ {
        /* .nonInductiveForLoops = */ 1,
        /* .whileLoops = */ 1,
        /* .doWhileLoops = */ 1,
        /* .generalUniformIndexing = */ 1,
        /* .generalAttributeMatrixVectorIndexing = */ 1,
        /* .generalVaryingIndexing = */ 1,
        /* .generalSamplerIndexing = */ 1,
        /* .generalVariableIndexing = */ 1,
        /* .generalConstantMatrixVectorIndexing = */ 1,
    }};

std::string GetDefaultTBuiltInResourceString()
{
    std::ostringstream ostream;

    ostream << "MaxLights "                                 << DefaultTBuiltInResource.maxLights << "\n"
            << "MaxClipPlanes "                             << DefaultTBuiltInResource.maxClipPlanes << "\n"
            << "MaxTextureUnits "                           << DefaultTBuiltInResource.maxTextureUnits << "\n"
            << "MaxTextureCoords "                          << DefaultTBuiltInResource.maxTextureCoords << "\n"
            << "MaxVertexAttribs "                          << DefaultTBuiltInResource.maxVertexAttribs << "\n"
            << "MaxVertexUniformComponents "                << DefaultTBuiltInResource.maxVertexUniformComponents << "\n"
            << "MaxVaryingFloats "                          << DefaultTBuiltInResource.maxVaryingFloats << "\n"
            << "MaxVertexTextureImageUnits "                << DefaultTBuiltInResource.maxVertexTextureImageUnits << "\n"
            << "MaxCombinedTextureImageUnits "              << DefaultTBuiltInResource.maxCombinedTextureImageUnits << "\n"
            << "MaxTextureImageUnits "                      << DefaultTBuiltInResource.maxTextureImageUnits << "\n"
            << "MaxFragmentUniformComponents "              << DefaultTBuiltInResource.maxFragmentUniformComponents << "\n"
            << "MaxDrawBuffers "                            << DefaultTBuiltInResource.maxDrawBuffers << "\n"
            << "MaxVertexUniformVectors "                   << DefaultTBuiltInResource.maxVertexUniformVectors << "\n"
            << "MaxVaryingVectors "                         << DefaultTBuiltInResource.maxVaryingVectors << "\n"
            << "MaxFragmentUniformVectors "                 << DefaultTBuiltInResource.maxFragmentUniformVectors << "\n"
            << "MaxVertexOutputVectors "                    << DefaultTBuiltInResource.maxVertexOutputVectors << "\n"
            << "MaxFragmentInputVectors "                   << DefaultTBuiltInResource.maxFragmentInputVectors << "\n"
            << "MinProgramTexelOffset "                     << DefaultTBuiltInResource.minProgramTexelOffset << "\n"
            << "MaxProgramTexelOffset "                     << DefaultTBuiltInResource.maxProgramTexelOffset << "\n"
            << "MaxClipDistances "                          << DefaultTBuiltInResource.maxClipDistances << "\n"
            << "MaxComputeWorkGroupCountX "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountX << "\n"
            << "MaxComputeWorkGroupCountY "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountY << "\n"
            << "MaxComputeWorkGroupCountZ "                 << DefaultTBuiltInResource.maxComputeWorkGroupCountZ << "\n"
            << "MaxComputeWorkGroupSizeX "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeX << "\n"
            << "MaxComputeWorkGroupSizeY "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeY << "\n"
            << "MaxComputeWorkGroupSizeZ "                  << DefaultTBuiltInResource.maxComputeWorkGroupSizeZ << "\n"
            << "MaxComputeUniformComponents "               << DefaultTBuiltInResource.maxComputeUniformComponents << "\n"
            << "MaxComputeTextureImageUnits "               << DefaultTBuiltInResource.maxComputeTextureImageUnits << "\n"
            << "MaxComputeImageUniforms "                   << DefaultTBuiltInResource.maxComputeImageUniforms << "\n"
            << "MaxComputeAtomicCounters "                  << DefaultTBuiltInResource.maxComputeAtomicCounters << "\n"
            << "MaxComputeAtomicCounterBuffers "            << DefaultTBuiltInResource.maxComputeAtomicCounterBuffers << "\n"
            << "MaxVaryingComponents "                      << DefaultTBuiltInResource.maxVaryingComponents << "\n"
            << "MaxVertexOutputComponents "                 << DefaultTBuiltInResource.maxVertexOutputComponents << "\n"
            << "MaxGeometryInputComponents "                << DefaultTBuiltInResource.maxGeometryInputComponents << "\n"
            << "MaxGeometryOutputComponents "               << DefaultTBuiltInResource.maxGeometryOutputComponents << "\n"
            << "MaxFragmentInputComponents "                << DefaultTBuiltInResource.maxFragmentInputComponents << "\n"
            << "MaxImageUnits "                             << DefaultTBuiltInResource.maxImageUnits << "\n"
            << "MaxCombinedImageUnitsAndFragmentOutputs "   << DefaultTBuiltInResource.maxCombinedImageUnitsAndFragmentOutputs << "\n"
            << "MaxCombinedShaderOutputResources "          << DefaultTBuiltInResource.maxCombinedShaderOutputResources << "\n"
            << "MaxImageSamples "                           << DefaultTBuiltInResource.maxImageSamples << "\n"
            << "MaxVertexImageUniforms "                    << DefaultTBuiltInResource.maxVertexImageUniforms << "\n"
            << "MaxTessControlImageUniforms "               << DefaultTBuiltInResource.maxTessControlImageUniforms << "\n"
            << "MaxTessEvaluationImageUniforms "            << DefaultTBuiltInResource.maxTessEvaluationImageUniforms << "\n"
            << "MaxGeometryImageUniforms "                  << DefaultTBuiltInResource.maxGeometryImageUniforms << "\n"
            << "MaxFragmentImageUniforms "                  << DefaultTBuiltInResource.maxFragmentImageUniforms << "\n"
            << "MaxCombinedImageUniforms "                  << DefaultTBuiltInResource.maxCombinedImageUniforms << "\n"
            << "MaxGeometryTextureImageUnits "              << DefaultTBuiltInResource.maxGeometryTextureImageUnits << "\n"
            << "MaxGeometryOutputVertices "                 << DefaultTBuiltInResource.maxGeometryOutputVertices << "\n"
            << "MaxGeometryTotalOutputComponents "          << DefaultTBuiltInResource.maxGeometryTotalOutputComponents << "\n"
            << "MaxGeometryUniformComponents "              << DefaultTBuiltInResource.maxGeometryUniformComponents << "\n"
            << "MaxGeometryVaryingComponents "              << DefaultTBuiltInResource.maxGeometryVaryingComponents << "\n"
            << "MaxTessControlInputComponents "             << DefaultTBuiltInResource.maxTessControlInputComponents << "\n"
            << "MaxTessControlOutputComponents "            << DefaultTBuiltInResource.maxTessControlOutputComponents << "\n"
            << "MaxTessControlTextureImageUnits "           << DefaultTBuiltInResource.maxTessControlTextureImageUnits << "\n"
            << "MaxTessControlUniformComponents "           << DefaultTBuiltInResource.maxTessControlUniformComponents << "\n"
            << "MaxTessControlTotalOutputComponents "       << DefaultTBuiltInResource.maxTessControlTotalOutputComponents << "\n"
            << "MaxTessEvaluationInputComponents "          << DefaultTBuiltInResource.maxTessEvaluationInputComponents << "\n"
            << "MaxTessEvaluationOutputComponents "         << DefaultTBuiltInResource.maxTessEvaluationOutputComponents << "\n"
            << "MaxTessEvaluationTextureImageUnits "        << DefaultTBuiltInResource.maxTessEvaluationTextureImageUnits << "\n"
            << "MaxTessEvaluationUniformComponents "        << DefaultTBuiltInResource.maxTessEvaluationUniformComponents << "\n"
            << "MaxTessPatchComponents "                    << DefaultTBuiltInResource.maxTessPatchComponents << "\n"
            << "MaxPatchVertices "                          << DefaultTBuiltInResource.maxPatchVertices << "\n"
            << "MaxTessGenLevel "                           << DefaultTBuiltInResource.maxTessGenLevel << "\n"
            << "MaxViewports "                              << DefaultTBuiltInResource.maxViewports << "\n"
            << "MaxVertexAtomicCounters "                   << DefaultTBuiltInResource.maxVertexAtomicCounters << "\n"
            << "MaxTessControlAtomicCounters "              << DefaultTBuiltInResource.maxTessControlAtomicCounters << "\n"
            << "MaxTessEvaluationAtomicCounters "           << DefaultTBuiltInResource.maxTessEvaluationAtomicCounters << "\n"
            << "MaxGeometryAtomicCounters "                 << DefaultTBuiltInResource.maxGeometryAtomicCounters << "\n"
            << "MaxFragmentAtomicCounters "                 << DefaultTBuiltInResource.maxFragmentAtomicCounters << "\n"
            << "MaxCombinedAtomicCounters "                 << DefaultTBuiltInResource.maxCombinedAtomicCounters << "\n"
            << "MaxAtomicCounterBindings "                  << DefaultTBuiltInResource.maxAtomicCounterBindings << "\n"
            << "MaxVertexAtomicCounterBuffers "             << DefaultTBuiltInResource.maxVertexAtomicCounterBuffers << "\n"
            << "MaxTessControlAtomicCounterBuffers "        << DefaultTBuiltInResource.maxTessControlAtomicCounterBuffers << "\n"
            << "MaxTessEvaluationAtomicCounterBuffers "     << DefaultTBuiltInResource.maxTessEvaluationAtomicCounterBuffers << "\n"
            << "MaxGeometryAtomicCounterBuffers "           << DefaultTBuiltInResource.maxGeometryAtomicCounterBuffers << "\n"
            << "MaxFragmentAtomicCounterBuffers "           << DefaultTBuiltInResource.maxFragmentAtomicCounterBuffers << "\n"
            << "MaxCombinedAtomicCounterBuffers "           << DefaultTBuiltInResource.maxCombinedAtomicCounterBuffers << "\n"
            << "MaxAtomicCounterBufferSize "                << DefaultTBuiltInResource.maxAtomicCounterBufferSize << "\n"
            << "MaxTransformFeedbackBuffers "               << DefaultTBuiltInResource.maxTransformFeedbackBuffers << "\n"
            << "MaxTransformFeedbackInterleavedComponents " << DefaultTBuiltInResource.maxTransformFeedbackInterleavedComponents << "\n"
            << "MaxCullDistances "                          << DefaultTBuiltInResource.maxCullDistances << "\n"
            << "MaxCombinedClipAndCullDistances "           << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n"
            << "MaxSamples "                                << DefaultTBuiltInResource.maxSamples << "\n"

            << "nonInductiveForLoops "                      << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
            << "whileLoops "                                << DefaultTBuiltInResource.limits.whileLoops << "\n"
            << "doWhileLoops "                              << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
            << "generalUniformIndexing "                    << DefaultTBuiltInResource.limits.generalUniformIndexing << "\n"
            << "generalAttributeMatrixVectorIndexing "      << DefaultTBuiltInResource.limits.generalAttributeMatrixVectorIndexing << "\n"
            << "generalVaryingIndexing "                    << DefaultTBuiltInResource.limits.generalVaryingIndexing << "\n"
            << "generalSamplerIndexing "                    << DefaultTBuiltInResource.limits.generalSamplerIndexing << "\n"
            << "generalVariableIndexing "                   << DefaultTBuiltInResource.limits.generalVariableIndexing << "\n"
            << "generalConstantMatrixVectorIndexing "       << DefaultTBuiltInResource.limits.generalConstantMatrixVectorIndexing << "\n"
      ;

    return ostream.str();
}

void DecodeResourceLimits(TBuiltInResource* resources, char* config)
{
    static const char* delims = " \t\n\r";

    size_t pos     = 0;
    std::string configStr(config);

    while ((pos = configStr.find_first_not_of(delims, pos)) != std::string::npos) {
        const size_t token_s = pos;
        const size_t token_e = configStr.find_first_of(delims, token_s);
        const size_t value_s = configStr.find_first_not_of(delims, token_e);
        const size_t value_e = configStr.find_first_of(delims, value_s);
        pos = value_e;

        // Faster to use compare(), but prefering readability.
        const std::string tokenStr = configStr.substr(token_s, token_e-token_s);
        const std::string valueStr = configStr.substr(value_s, value_e-value_s);

        if (value_s == std::string::npos || ! (valueStr[0] == '-' || isdigit(valueStr[0]))) {
            printf("Error: '%s' bad .conf file.  Each name must be followed by one number.\n",
                   valueStr.c_str());
            return;
        }

        const int value = std::atoi(valueStr.c_str());

        if (tokenStr == "MaxLights")
            resources->maxLights = value;
        else if (tokenStr == "MaxClipPlanes")
            resources->maxClipPlanes = value;
        else if (tokenStr == "MaxTextureUnits")
            resources->maxTextureUnits = value;
        else if (tokenStr == "MaxTextureCoords")
            resources->maxTextureCoords = value;
        else if (tokenStr == "MaxVertexAttribs")
            resources->maxVertexAttribs = value;
        else if (tokenStr == "MaxVertexUniformComponents")
            resources->maxVertexUniformComponents = value;
        else if (tokenStr == "MaxVaryingFloats")
            resources->maxVaryingFloats = value;
        else if (tokenStr == "MaxVertexTextureImageUnits")
            resources->maxVertexTextureImageUnits = value;
        else if (tokenStr == "MaxCombinedTextureImageUnits")
            resources->maxCombinedTextureImageUnits = value;
        else if (tokenStr == "MaxTextureImageUnits")
            resources->maxTextureImageUnits = value;
        else if (tokenStr == "MaxFragmentUniformComponents")
            resources->maxFragmentUniformComponents = value;
        else if (tokenStr == "MaxDrawBuffers")
            resources->maxDrawBuffers = value;
        else if (tokenStr == "MaxVertexUniformVectors")
            resources->maxVertexUniformVectors = value;
        else if (tokenStr == "MaxVaryingVectors")
            resources->maxVaryingVectors = value;
        else if (tokenStr == "MaxFragmentUniformVectors")
            resources->maxFragmentUniformVectors = value;
        else if (tokenStr == "MaxVertexOutputVectors")
            resources->maxVertexOutputVectors = value;
        else if (tokenStr == "MaxFragmentInputVectors")
            resources->maxFragmentInputVectors = value;
        else if (tokenStr == "MinProgramTexelOffset")
            resources->minProgramTexelOffset = value;
        else if (tokenStr == "MaxProgramTexelOffset")
            resources->maxProgramTexelOffset = value;
        else if (tokenStr == "MaxClipDistances")
            resources->maxClipDistances = value;
        else if (tokenStr == "MaxComputeWorkGroupCountX")
            resources->maxComputeWorkGroupCountX = value;
        else if (tokenStr == "MaxComputeWorkGroupCountY")
            resources->maxComputeWorkGroupCountY = value;
        else if (tokenStr == "MaxComputeWorkGroupCountZ")
            resources->maxComputeWorkGroupCountZ = value;
        else if (tokenStr == "MaxComputeWorkGroupSizeX")
            resources->maxComputeWorkGroupSizeX = value;
        else if (tokenStr == "MaxComputeWorkGroupSizeY")
            resources->maxComputeWorkGroupSizeY = value;
        else if (tokenStr == "MaxComputeWorkGroupSizeZ")
            resources->maxComputeWorkGroupSizeZ = value;
        else if (tokenStr == "MaxComputeUniformComponents")
            resources->maxComputeUniformComponents = value;
        else if (tokenStr == "MaxComputeTextureImageUnits")
            resources->maxComputeTextureImageUnits = value;
        else if (tokenStr == "MaxComputeImageUniforms")
            resources->maxComputeImageUniforms = value;
        else if (tokenStr == "MaxComputeAtomicCounters")
            resources->maxComputeAtomicCounters = value;
        else if (tokenStr == "MaxComputeAtomicCounterBuffers")
            resources->maxComputeAtomicCounterBuffers = value;
        else if (tokenStr == "MaxVaryingComponents")
            resources->maxVaryingComponents = value;
        else if (tokenStr == "MaxVertexOutputComponents")
            resources->maxVertexOutputComponents = value;
        else if (tokenStr == "MaxGeometryInputComponents")
            resources->maxGeometryInputComponents = value;
        else if (tokenStr == "MaxGeometryOutputComponents")
            resources->maxGeometryOutputComponents = value;
        else if (tokenStr == "MaxFragmentInputComponents")
            resources->maxFragmentInputComponents = value;
        else if (tokenStr == "MaxImageUnits")
            resources->maxImageUnits = value;
        else if (tokenStr == "MaxCombinedImageUnitsAndFragmentOutputs")
            resources->maxCombinedImageUnitsAndFragmentOutputs = value;
        else if (tokenStr == "MaxCombinedShaderOutputResources")
            resources->maxCombinedShaderOutputResources = value;
        else if (tokenStr == "MaxImageSamples")
            resources->maxImageSamples = value;
        else if (tokenStr == "MaxVertexImageUniforms")
            resources->maxVertexImageUniforms = value;
        else if (tokenStr == "MaxTessControlImageUniforms")
            resources->maxTessControlImageUniforms = value;
        else if (tokenStr == "MaxTessEvaluationImageUniforms")
            resources->maxTessEvaluationImageUniforms = value;
        else if (tokenStr == "MaxGeometryImageUniforms")
            resources->maxGeometryImageUniforms = value;
        else if (tokenStr == "MaxFragmentImageUniforms")
            resources->maxFragmentImageUniforms = value;
        else if (tokenStr == "MaxCombinedImageUniforms")
            resources->maxCombinedImageUniforms = value;
        else if (tokenStr == "MaxGeometryTextureImageUnits")
            resources->maxGeometryTextureImageUnits = value;
        else if (tokenStr == "MaxGeometryOutputVertices")
            resources->maxGeometryOutputVertices = value;
        else if (tokenStr == "MaxGeometryTotalOutputComponents")
            resources->maxGeometryTotalOutputComponents = value;
        else if (tokenStr == "MaxGeometryUniformComponents")
            resources->maxGeometryUniformComponents = value;
        else if (tokenStr == "MaxGeometryVaryingComponents")
            resources->maxGeometryVaryingComponents = value;
        else if (tokenStr == "MaxTessControlInputComponents")
            resources->maxTessControlInputComponents = value;
        else if (tokenStr == "MaxTessControlOutputComponents")
            resources->maxTessControlOutputComponents = value;
        else if (tokenStr == "MaxTessControlTextureImageUnits")
            resources->maxTessControlTextureImageUnits = value;
        else if (tokenStr == "MaxTessControlUniformComponents")
            resources->maxTessControlUniformComponents = value;
        else if (tokenStr == "MaxTessControlTotalOutputComponents")
            resources->maxTessControlTotalOutputComponents = value;
        else if (tokenStr == "MaxTessEvaluationInputComponents")
            resources->maxTessEvaluationInputComponents = value;
        else if (tokenStr == "MaxTessEvaluationOutputComponents")
            resources->maxTessEvaluationOutputComponents = value;
        else if (tokenStr == "MaxTessEvaluationTextureImageUnits")
            resources->maxTessEvaluationTextureImageUnits = value;
        else if (tokenStr == "MaxTessEvaluationUniformComponents")
            resources->maxTessEvaluationUniformComponents = value;
        else if (tokenStr == "MaxTessPatchComponents")
            resources->maxTessPatchComponents = value;
        else if (tokenStr == "MaxPatchVertices")
            resources->maxPatchVertices = value;
        else if (tokenStr == "MaxTessGenLevel")
            resources->maxTessGenLevel = value;
        else if (tokenStr == "MaxViewports")
            resources->maxViewports = value;
        else if (tokenStr == "MaxVertexAtomicCounters")
            resources->maxVertexAtomicCounters = value;
        else if (tokenStr == "MaxTessControlAtomicCounters")
            resources->maxTessControlAtomicCounters = value;
        else if (tokenStr == "MaxTessEvaluationAtomicCounters")
            resources->maxTessEvaluationAtomicCounters = value;
        else if (tokenStr == "MaxGeometryAtomicCounters")
            resources->maxGeometryAtomicCounters = value;
        else if (tokenStr == "MaxFragmentAtomicCounters")
            resources->maxFragmentAtomicCounters = value;
        else if (tokenStr == "MaxCombinedAtomicCounters")
            resources->maxCombinedAtomicCounters = value;
        else if (tokenStr == "MaxAtomicCounterBindings")
            resources->maxAtomicCounterBindings = value;
        else if (tokenStr == "MaxVertexAtomicCounterBuffers")
            resources->maxVertexAtomicCounterBuffers = value;
        else if (tokenStr == "MaxTessControlAtomicCounterBuffers")
            resources->maxTessControlAtomicCounterBuffers = value;
        else if (tokenStr == "MaxTessEvaluationAtomicCounterBuffers")
            resources->maxTessEvaluationAtomicCounterBuffers = value;
        else if (tokenStr == "MaxGeometryAtomicCounterBuffers")
            resources->maxGeometryAtomicCounterBuffers = value;
        else if (tokenStr == "MaxFragmentAtomicCounterBuffers")
            resources->maxFragmentAtomicCounterBuffers = value;
        else if (tokenStr == "MaxCombinedAtomicCounterBuffers")
            resources->maxCombinedAtomicCounterBuffers = value;
        else if (tokenStr == "MaxAtomicCounterBufferSize")
            resources->maxAtomicCounterBufferSize = value;
        else if (tokenStr == "MaxTransformFeedbackBuffers")
            resources->maxTransformFeedbackBuffers = value;
        else if (tokenStr == "MaxTransformFeedbackInterleavedComponents")
            resources->maxTransformFeedbackInterleavedComponents = value;
        else if (tokenStr == "MaxCullDistances")
            resources->maxCullDistances = value;
        else if (tokenStr == "MaxCombinedClipAndCullDistances")
            resources->maxCombinedClipAndCullDistances = value;
        else if (tokenStr == "MaxSamples")
            resources->maxSamples = value;
        else if (tokenStr == "nonInductiveForLoops")
            resources->limits.nonInductiveForLoops = (value != 0);
        else if (tokenStr == "whileLoops")
            resources->limits.whileLoops = (value != 0);
        else if (tokenStr == "doWhileLoops")
            resources->limits.doWhileLoops = (value != 0);
        else if (tokenStr == "generalUniformIndexing")
            resources->limits.generalUniformIndexing = (value != 0);
        else if (tokenStr == "generalAttributeMatrixVectorIndexing")
            resources->limits.generalAttributeMatrixVectorIndexing = (value != 0);
        else if (tokenStr == "generalVaryingIndexing")
            resources->limits.generalVaryingIndexing = (value != 0);
        else if (tokenStr == "generalSamplerIndexing")
            resources->limits.generalSamplerIndexing = (value != 0);
        else if (tokenStr == "generalVariableIndexing")
            resources->limits.generalVariableIndexing = (value != 0);
        else if (tokenStr == "generalConstantMatrixVectorIndexing")
            resources->limits.generalConstantMatrixVectorIndexing = (value != 0);
        else
            printf("Warning: unrecognized limit (%s) in configuration file.\n", tokenStr.c_str());

    }
}

}  // end namespace glslang
