//
// 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,
    /* .maxMeshOutputVerticesNV = */ 256,
    /* .maxMeshOutputPrimitivesNV = */ 512,
    /* .maxMeshWorkGroupSizeX_NV = */ 32,
    /* .maxMeshWorkGroupSizeY_NV = */ 1,
    /* .maxMeshWorkGroupSizeZ_NV = */ 1,
    /* .maxTaskWorkGroupSizeX_NV = */ 32,
    /* .maxTaskWorkGroupSizeY_NV = */ 1,
    /* .maxTaskWorkGroupSizeZ_NV = */ 1,
    /* .maxMeshViewCountNV = */ 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"
            << "MaxMeshOutputVerticesNV "                   << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n"
            << "MaxMeshOutputPrimitivesNV "                 << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n"
            << "MaxMeshWorkGroupSizeX_NV "                  << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n"
            << "MaxMeshWorkGroupSizeY_NV "                  << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_NV << "\n"
            << "MaxMeshWorkGroupSizeZ_NV "                  << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_NV << "\n"
            << "MaxTaskWorkGroupSizeX_NV "                  << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_NV << "\n"
            << "MaxTaskWorkGroupSizeY_NV "                  << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
            << "MaxTaskWorkGroupSizeZ_NV "                  << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
            << "MaxMeshViewCountNV "                        << DefaultTBuiltInResource.maxMeshViewCountNV << "\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 == "MaxMeshOutputVerticesNV")
            resources->maxMeshOutputVerticesNV = value;
        else if (tokenStr == "MaxMeshOutputPrimitivesNV")
            resources->maxMeshOutputPrimitivesNV = value;
        else if (tokenStr == "MaxMeshWorkGroupSizeX_NV")
            resources->maxMeshWorkGroupSizeX_NV = value;
        else if (tokenStr == "MaxMeshWorkGroupSizeY_NV")
            resources->maxMeshWorkGroupSizeY_NV = value;
        else if (tokenStr == "MaxMeshWorkGroupSizeZ_NV")
            resources->maxMeshWorkGroupSizeZ_NV = value;
        else if (tokenStr == "MaxTaskWorkGroupSizeX_NV")
            resources->maxTaskWorkGroupSizeX_NV = value;
        else if (tokenStr == "MaxTaskWorkGroupSizeY_NV")
            resources->maxTaskWorkGroupSizeY_NV = value;
        else if (tokenStr == "MaxTaskWorkGroupSizeZ_NV")
            resources->maxTaskWorkGroupSizeZ_NV = value;
        else if (tokenStr == "MaxMeshViewCountNV")
            resources->maxMeshViewCountNV = 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
