001package gudusoft.gsqlparser.nodes;
002/*
003 * Date: 13-12-4
004 */
005
006import gudusoft.gsqlparser.TSourceToken;
007
008public class TCreateFunctionOption extends TParseTreeNode {
009
010
011    private ECreateFunctionOptionType optionType;
012
013
014    public ECreateFunctionOptionType getOptionType() {
015
016        return optionType;
017    }
018
019    private TStatementListSqlNode sqlNodes;
020    private TConstant language;
021    private TBlockSqlNode blockSqlNode;
022    private TConstant objfile;
023    private TConstant linkSymbol;
024    private TConstant functionBody;
025
026    public TConstant getFunctionBody() {
027        return functionBody;
028    }
029
030    public TConstant getLanguage() {
031        return language;
032    }
033
034    public TStatementListSqlNode getSqlNodes() {
035        return sqlNodes;
036    }
037
038    public TBlockSqlNode getBlockSqlNode() {
039        return blockSqlNode;
040    }
041
042
043    public TConstant getLinkSymbol() {
044        return linkSymbol;
045    }
046
047    public TConstant getObjfile() {
048        return objfile;
049    }
050
051    public void init(Object arg1,Object arg2,Object arg3){
052        optionType = (ECreateFunctionOptionType)arg1;
053        switch (optionType){
054            case objfile:
055                objfile = (TConstant)arg2;
056                linkSymbol = (TConstant)arg3;
057                break;
058        }
059    }
060
061    public void init(Object arg1,Object arg2){
062        optionType = (ECreateFunctionOptionType)arg1;
063        switch (optionType){
064            case block:
065                functionBody = (TConstant)arg2;
066                break;
067            case stmts:
068                functionBody = (TConstant)arg2;
069                break;
070            case language:
071                language = (TConstant)arg2;
072                break;
073        }
074    }
075
076    public void init(Object arg1){
077
078       if (arg1 instanceof TBlockSqlNode){
079           blockSqlNode = (TBlockSqlNode)arg1;
080           optionType = ECreateFunctionOptionType.block;
081       }else  if (arg1 instanceof TStatementListSqlNode){
082           sqlNodes = (TStatementListSqlNode)arg1;
083           optionType = ECreateFunctionOptionType.stmts;
084       }else if (arg1 instanceof TConstant){
085           language = (TConstant)arg1;
086           optionType = ECreateFunctionOptionType.language;
087       }else if (arg1 instanceof TSourceToken){
088           optionType = ECreateFunctionOptionType.window;
089       }else if (arg1 instanceof TDummy){
090           optionType = ECreateFunctionOptionType.common;
091       }else if (arg1 instanceof ECreateFunctionOptionType){
092           optionType = (ECreateFunctionOptionType)arg1;
093       }
094    }
095}