Edit

kc3-lang/angle/src/compiler/translator/ValidateMaxParameters.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2016-11-07 13:58:48
    Hash : 45bcc784
    Message : translator: Scope all classes with "sh". I was seeing an odd problem with our PoolAlloc conflicting with the glslang/Vulkan TIntermNode, so the fix was to move everything to a separate namespace. The bison grammars are also regenerated. No functional changes. BUG=angleproject:1576 Change-Id: I959c7afe4c092f0d458432c07b4dcee4d39513f3 Reviewed-on: https://chromium-review.googlesource.com/408267 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/compiler/translator/ValidateMaxParameters.cpp
  • //
    // Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    // ValidateMaxParameters checks if function definitions have more than a set number of parameters.
    
    #include "compiler/translator/ValidateMaxParameters.h"
    
    namespace sh
    {
    
    ValidateMaxParameters::ValidateMaxParameters(unsigned int maxParameters)
        : TIntermTraverser(true, false, false), mMaxParameters(maxParameters), mValid(true)
    {
    }
    
    bool ValidateMaxParameters::visitAggregate(Visit visit, TIntermAggregate *node)
    {
        if (!mValid)
        {
            return false;
        }
    
        if (node->getOp() == EOpParameters && node->getSequence()->size() > mMaxParameters)
        {
            mValid = false;
        }
    
        return mValid;
    }
    
    bool ValidateMaxParameters::validate(TIntermNode *root, unsigned int maxParameters)
    {
        ValidateMaxParameters argsTraverser(maxParameters);
        root->traverse(&argsTraverser);
        return argsTraverser.mValid;
    }
    
    }  // namespace sh