1 22 23 package org.xquark.xquery.typing; 24 25 import java.util.ArrayList ; 26 import java.util.List ; 27 28 public class PrimeList extends ArrayList { 29 30 public PrimeList() { 31 super(); 32 } 33 34 public void add(QType qtype) { 35 if (qtype == null) 36 return; 37 List list = qtype.getList(); 38 if (list != null) { 39 addAll(list); 40 return; 41 } 42 byte occ = qtype.getOccurence(); 43 boolean toBeAdded = true; 44 for (int i=0;i<size();i++) { 45 QType qtypei = (QType) get(i); 46 if (!qtypei.equals(qtype)) 47 continue; 48 byte occi = qtypei.getOccurence(); 49 if (occi == QType.OCC_0_N || occi == occ || occ == QType.OCC_1_1) 50 return; 51 if (occ == QType.OCC_0_N || occi == QType.OCC_1_1) { 52 set(i,qtype); 53 return; 54 } 55 set(i,qtype.changeOccurence(QType.OCC_0_N)); 56 return; 57 } 58 if (toBeAdded) 59 add((Object )qtype); 60 } 61 62 public void addAll(List list) { 63 if (list == null || list.isEmpty()) 64 return; 65 for (int i=0;i<list.size();i++) { 66 add((QType)list.get(i)); 67 } 68 } 69 70 } 71 | Popular Tags |