001package gudusoft.gsqlparser.nodes; 002/* 003 * Date: 11-5-23 004 */ 005 006import gudusoft.gsqlparser.TSourceToken; 007 008/** 009 * Postgresql, redshift 010 */ 011public class TIndirection extends TParseTreeNode { 012 private TPTNodeList <TIndices> indices; 013 014 public TPTNodeList<TIndices> getIndices() { 015 return indices; 016 } 017 018 public void init(Object arg1){ 019 this.indices = (TPTNodeList)arg1; 020 021 } 022 023 public boolean isArrayAccess(){ 024 return isRealIndices() && (indices.size() == 1); 025 } 026 027 public TExpression getArrayAccessExpr(){ 028 if (!isArrayAccess()) return null; 029 return indices.getElement(0).getLowerSubscript(); 030 } 031 public boolean isRealIndices(){ 032 boolean ret = false; 033 for(int i=0;i<indices.size();i++){ 034 if(indices.elementAt(i).isRealIndices()){ 035 ret = true; 036 break; 037 } 038 } 039 return ret; 040 } 041 042 public TSourceToken getStartToken(){ 043 if (this.indices.size() == 0){ 044 return null; 045 }else{ 046 return this.indices.getElement(0).getStartToken(); 047 } 048 } 049 050 public TSourceToken getEndToken(){ 051 if (this.indices.size() == 0){ 052 return null; 053 }else{ 054 return this.indices.getElement(this.indices.size()-1).getEndToken(); 055 } 056 } 057 058 public void setIndices(TPTNodeList<TIndices> indices) { 059 this.indices = indices; 060 } 061}