public static AstContractDefinition[] GetLinearizedBaseContracts(AstContractDefinition contractNode) { // Obtain our linearized contracts AstContractDefinition[] linearizedContracts = contractNode.LinearizedBaseContracts.Select(x => GetNode <AstContractDefinition>(x)).ToArray(); // Return the array return(linearizedContracts); }
public static AstVariableDeclaration[] GetStateVariableDeclarations(AstContractDefinition contractNode) { // Loop for each linearized base contract (includes the contract id itself). AstContractDefinition[] linearizedContracts = GetLinearizedBaseContracts(contractNode); // Create a list of our resulting state variables. List <AstVariableDeclaration> stateVariables = new List <AstVariableDeclaration>(); // Loop for each contract our target contract is based off of, and add it's variable declarations. for (int i = linearizedContracts.Length - 1; i >= 0; i--) { stateVariables.AddRange(linearizedContracts[i].VariableDeclarations); } // Return our state variable array. return(stateVariables.ToArray()); }