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}