Edit

kc3-lang/angle/src/compiler/preprocessor/new/Preprocessor.cpp

Branch :

  • Show log

    Commit

  • Author : alokp@chromium.org
    Date : 2011-08-30 05:10:53
    Hash : 3a01d1bc
    Message : Preparation for macro expansion. Review URL: http://codereview.appspot.com/4919045 git-svn-id: https://angleproject.googlecode.com/svn/trunk@741 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/preprocessor/new/Preprocessor.cpp
  • //
    // Copyright (c) 2011 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.
    //
    
    #include "Preprocessor.h"
    
    #include <algorithm>
    
    #include "compiler/debug.h"
    #include "Context.h"
    #include "stl_utils.h"
    
    namespace pp
    {
    
    Preprocessor::Preprocessor() : mContext(NULL)
    {
    }
    
    Preprocessor::~Preprocessor()
    {
        delete mContext;
    }
    
    bool Preprocessor::init()
    {
        mContext = new Context;
        return mContext->init();
    }
    
    bool Preprocessor::process(int count,
                               const char* const string[],
                               const int length[])
    {
        ASSERT((count >=0) && (string != NULL));
        if ((count < 0) || (string == NULL))
            return false;
    
        reset();
    
        return mContext->process(count, string, length, &mTokens);
    }
    
    void Preprocessor::reset()
    {
        std::for_each(mTokens.begin(), mTokens.end(), Delete());
        mTokens.clear();
    }
    
    }  // namespace pp