X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FIntSet.java;h=3f2e0140bda6f0a2da13dea02e7e24b7a77e8230;hp=3ef19b8f335ec9dbf60aeaf1df6bf818251d67a2;hb=e460fd6f0af60314e2ca28391ef7ff2043016d97;hpb=fe29fd8956c3881e261ec4eee1cdd2ac27bc0554 diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/IntSet.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/IntSet.java index 3ef19b8f3..3f2e0140b 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/IntSet.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/IntSet.java @@ -32,8 +32,7 @@ final public class IntSet implements ResourceSet { public int[] data; - /** the index after the last entry in the list */ - public int sizeOrData; + private int sizeOrData; /** the default capacity for new lists */ protected static final int DEFAULT_CAPACITY = 3; @@ -46,6 +45,8 @@ final public class IntSet implements ResourceSet { private IntSet() { support = null; + data = null; + sizeOrData = NO_DATA; } public IntSet(QuerySupport support) { @@ -299,5 +300,26 @@ final public class IntSet implements ResourceSet { } procedure.finished(graph); } + + public void serialize(QuerySerializer serializer) { + serializer.writeLE(size()); + forEach(new TIntProcedure() { + + @Override + public boolean execute(int value) { + serializer.addResource(value); + return true; + } + }); + } + + public static IntSet deserialize(QueryDeserializer deserializer) throws DatabaseException { + int size = deserializer.readLE4(); + IntSet result = new IntSet(); + for(int i=0;i