1 /* 2 * Copyright (c) 2025 Shenzhen Kaihong Digital. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 package grammar; 17 18 import utils.TsToken; 19 20 import java.util.List; 21 import java.util.concurrent.CopyOnWriteArrayList; 22 23 /** 24 * <h3>类名:该类用于xxx</h3> 25 * description param grammar 26 * 27 * @author Administrator 28 * date 2025-02-28 29 * @version 1.0 30 * @since 2025-02-28 31 */ 32 public class ParamObj extends GBaseObject { 33 /** 34 * 参数约束:constant,abstract 35 */ 36 private String qualifier; 37 38 /** 39 * 参数修饰:可选(optional),必选(required) 40 */ 41 private String decorator; 42 43 /** 44 * 参数类型 45 */ 46 private String type; 47 48 /** 49 * 参数名称 50 */ 51 private String name; 52 53 /** 54 * 参数数组数量 55 */ 56 private int arraySize; 57 58 /** 59 * 参数赋值 60 */ 61 private int[] asList; 62 63 /** 64 * 参数值 65 */ 66 private List<String> vList; 67 68 /** 69 * 结构体初始化 70 */ 71 private List<ParamObj> paList; 72 73 /** 74 * 回调函数定义 75 */ 76 private List<FuncObj> foList; 77 78 /** 79 * 构造函数 80 */ ParamObj()81 public ParamObj() { 82 this.decorator = TsToken.TS_TOKEN_REQUIRED; 83 vList = new CopyOnWriteArrayList<>(); 84 paList = new CopyOnWriteArrayList<>(); 85 foList = new CopyOnWriteArrayList<>(); 86 } 87 88 /** 89 * 构造函数 90 * 91 * @param tv 类型 92 * @param nv 名称 93 * @param as 数组下标 94 * @param asl 数组下标数组 95 */ ParamObj(String tv, String nv, int as, int[] asl)96 public ParamObj(String tv, String nv, int as, int[] asl) { 97 this(); 98 this.type = tv; 99 this.name = nv; 100 this.arraySize = as; 101 this.asList = asl; 102 } 103 104 /** 105 * 确定参数关键字 106 * 107 * @return 参数关键字 108 */ getQualifier()109 public String getQualifier() { 110 return qualifier; 111 } 112 113 /** 114 * 设置参数关键字 115 * 116 * @param qualifier 关键字 117 */ setQualifier(String qualifier)118 public void setQualifier(String qualifier) { 119 this.qualifier = qualifier; 120 } 121 122 /** 123 * 获取修饰 124 * 125 * @return 修饰 126 */ getDecorator()127 public String getDecorator() { 128 return decorator; 129 } 130 131 /** 132 * 设置 修饰 133 * 134 * @param decorator 修饰 135 */ setDecorator(String decorator)136 public void setDecorator(String decorator) { 137 this.decorator = decorator; 138 } 139 140 /** 141 * 获取名字 142 * 143 * @return 名称 144 */ getName()145 public String getName() { 146 return name; 147 } 148 149 /** 150 * 设置名称 151 * 152 * @param name 名称 153 */ setName(String name)154 public void setName(String name) { 155 this.name = name; 156 } 157 158 /** 159 * 获取类型 160 * 161 * @return 类型 162 */ getType()163 public String getType() { 164 return type; 165 } 166 167 /** 168 * 设置类型 169 * 170 * @param type 类型 171 */ setType(String type)172 public void setType(String type) { 173 this.type = type; 174 } 175 176 /** 177 * 获取数组下标 178 * 179 * @return 数组下标 180 */ getArraySize()181 public int getArraySize() { 182 return arraySize; 183 } 184 185 /** 186 * 获取数组下标 187 * 188 * @return 数组下班 189 */ getAsList()190 public int[] getAsList() { 191 return asList; 192 } 193 194 /** 195 * 获取值数组 196 * 197 * @return 值数组 198 */ getvList()199 public List<String> getvList() { 200 return vList; 201 } 202 203 /** 204 * 设置值数据 205 * 206 * @param vList 值数据 207 */ setvList(List<String> vList)208 public void setvList(List<String> vList) { 209 this.vList = vList; 210 } 211 212 /** 213 * 设置值 214 * 215 * @param value 初始化值 216 */ setStrValue(String value)217 public void setStrValue(String value) { 218 this.vList.add(value); 219 } 220 221 /** 222 * 获取类参数值 223 * 224 * @param i 下标 225 * @return 返回参数值 226 */ getStrValue(int i)227 public String getStrValue(int i) { 228 return vList.isEmpty() ? "" : vList.get(i); 229 } 230 231 /** 232 * 获取类参数值 233 * 234 * @param i 下标 235 * @return 返回参数值 236 */ getIntValue(int i)237 public int getIntValue(int i) { 238 return asList[i]; 239 } 240 241 /** 242 * 设置数组下标 243 * 244 * @param arraySize 数组下标 245 */ setArraySize(int arraySize)246 public void setArraySize(int arraySize) { 247 this.arraySize = arraySize; 248 } 249 250 /** 251 * 设置数组下标 252 * 253 * @param asList 数组下标 254 */ setAsList(int[] asList)255 public void setAsList(int[] asList) { 256 this.asList = asList; 257 } 258 259 /** 260 * 获取初始化结构 261 * 262 * @return 初始化结构 263 */ getPaList()264 public List<ParamObj> getPaList() { 265 return paList; 266 } 267 268 /** 269 * 设置初始化结构 270 * 271 * @param paList 初始化结构 272 */ setPaList(List<ParamObj> paList)273 public void setPaList(List<ParamObj> paList) { 274 this.paList = paList; 275 } 276 277 /** 278 * 增加子参数 279 * 280 * @param pa 子参数 281 */ addParam(ParamObj pa)282 public void addParam(ParamObj pa) { 283 this.paList.add(pa); 284 } 285 286 /** 287 * 获取回调函数列表 288 * 289 * @return 回调函数列表 290 */ getFoList()291 public List<FuncObj> getFoList() { 292 return foList; 293 } 294 295 /** 296 * 设置回调函数列表 297 * 298 * @param foList 回调函数列表 299 */ setFoList(List<FuncObj> foList)300 public void setFoList(List<FuncObj> foList) { 301 this.foList = foList; 302 } 303 304 /** 305 * 增加回调函数方法 306 * 307 * @param fo 回调函数 308 */ addFunc(FuncObj fo)309 public void addFunc(FuncObj fo) { 310 this.foList.add(fo); 311 } 312 } 313