/* * Copyright (C) 2007 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef NodeInfo_h #define NodeInfo_h #include "Nodes.h" #include "Parser.h" namespace JSC { template <typename T> struct NodeInfo { T m_node; CodeFeatures m_features; int m_numConstants; }; typedef NodeInfo<FuncDeclNode*> FuncDeclNodeInfo; typedef NodeInfo<FuncExprNode*> FuncExprNodeInfo; typedef NodeInfo<ExpressionNode*> ExpressionNodeInfo; typedef NodeInfo<ArgumentsNode*> ArgumentsNodeInfo; typedef NodeInfo<ConstDeclNode*> ConstDeclNodeInfo; typedef NodeInfo<PropertyNode*> PropertyNodeInfo; typedef NodeInfo<PropertyList> PropertyListInfo; typedef NodeInfo<ElementList> ElementListInfo; typedef NodeInfo<ArgumentList> ArgumentListInfo; template <typename T> struct NodeDeclarationInfo { T m_node; ParserArenaData<DeclarationStacks::VarStack>* m_varDeclarations; ParserArenaData<DeclarationStacks::FunctionStack>* m_funcDeclarations; CodeFeatures m_features; int m_numConstants; }; typedef NodeDeclarationInfo<StatementNode*> StatementNodeInfo; typedef NodeDeclarationInfo<CaseBlockNode*> CaseBlockNodeInfo; typedef NodeDeclarationInfo<CaseClauseNode*> CaseClauseNodeInfo; typedef NodeDeclarationInfo<SourceElements*> SourceElementsInfo; typedef NodeDeclarationInfo<ClauseList> ClauseListInfo; typedef NodeDeclarationInfo<ExpressionNode*> VarDeclListInfo; typedef NodeDeclarationInfo<ConstDeclList> ConstDeclListInfo; typedef NodeDeclarationInfo<ParameterList> ParameterListInfo; } // namespace JSC #endif // NodeInfo_h