public static long pmapBuilderString(long pmap, int token, boolean isNull){ int type = TokenBuilder.extractType(token); if (TypeMask.isOptional(type)){ pmap = (pmap << 1) + (isNull? LEAST_FREQUENT_CASE:MOST_FREQUENT_CASE); } return pmap; }
private static boolean exitSearch(FieldReferenceOffsetManager from, int x) { int token = from.tokens[x]; int type = TokenBuilder.extractType(token); boolean isGroupClosed = TypeMask.Group == type && (0 != (token & (OperatorMask.Group_Bit_Close << TokenBuilder.SHIFT_OPER))) && (0 != (token & (OperatorMask.Group_Bit_Templ << TokenBuilder.SHIFT_OPER))); return isGroupClosed; }
private static String errorMessageForMessageStartValidation(StackStateWalker rw, long llwHeadPosCache) { return "Templated message must start with group open and this starts with "+TokenBuilder.tokenToString(rw.from.tokens[rw.msgIdx])+ " readBase "+rw.activeReadFragmentStack[0] + " nextWorkingTail:"+rw.nextWorkingTail+" headPosCache:"+llwHeadPosCache; }
public static String tokenToString(int token) { assert(token<0) : "This is not a token"; if (token == -1) { return "Unknown"; } int type = extractType(token); int count = token & TokenBuilder.MAX_INSTANCE; int opp = (token >> TokenBuilder.SHIFT_OPER) & TokenBuilder.MASK_OPER; if (isInValidCombo(type, opp)) { throw new UnsupportedOperationException("bad token"); } if (TypeMask.Group==type || TypeMask.Dictionary==type) { return TypeMask.methodTypeName[type] + TypeMask.methodTypeSuffix[type] + "/" + OperatorMask.toString(type, opp) + "/" + count; } else { return TypeMask.methodTypeName[type] + TypeMask.methodTypeSuffix[type] + "/" + OperatorMask.methodOperatorName[opp] + "/" + count; } }
/** * Writes byte to specified pipe * @param pipe to be updated * @param loc for the field to be updated * @param value byte to write to specified location */ public static void writeByte(Pipe pipe, int loc, byte value) { assert(LOCUtil.isLocOfAnyType(loc, TypeMask.IntegerSigned, TypeMask.IntegerSignedOptional, TypeMask.IntegerUnsigned, TypeMask.IntegerUnsignedOptional)): "Value found "+LOCUtil.typeAsString(loc); Pipe.slab(pipe)[pipe.slabMask &((int)pipe.ringWalker.activeWriteFragmentStack[STACK_OFF_MASK&(loc>>STACK_OFF_SHIFT)] + (OFF_MASK&loc))] = value; }
public static boolean isGroupSequence(FieldReferenceOffsetManager from, int cursor) { return 0 != (OperatorMask.Group_Bit_Seq&TokenBuilder.extractOper(from.tokens[cursor])); }
/** * Reads decimal exponent from specified pipe * @param pipe to read from * @param loc location to read from * @return decimal */ public static int readDecimalExponent(Pipe pipe, int loc) { assert((loc&0x1E<<OFF_BITS)==(0x0C<<OFF_BITS)) : "Expected to read some type of decimal but found "+TypeMask.toString((loc>>OFF_BITS)&TokenBuilder.MASK_TYPE); return Pipe.readInt(Pipe.slab(pipe),pipe.slabMask,pipe.ringWalker.activeReadFragmentStack[STACK_OFF_MASK&(loc>>STACK_OFF_SHIFT)] + (OFF_MASK&loc)); }
/** * Reads byte from specified pipe * @param pipe to be read * @param loc location of byte to read * @return data from specified location */ public static byte readByte(Pipe pipe, int loc) { assert(LOCUtil.isLocOfAnyType(loc, TypeMask.IntegerSigned, TypeMask.IntegerSignedOptional, TypeMask.IntegerUnsigned, TypeMask.IntegerUnsignedOptional)): "Value found "+LOCUtil.typeAsString(loc); return (byte)Pipe.readInt(Pipe.slab(pipe), pipe.slabMask, pipe.ringWalker.activeReadFragmentStack[STACK_OFF_MASK&(loc>>STACK_OFF_SHIFT)]+(OFF_MASK&loc)); }
private static boolean exitSearch(FieldReferenceOffsetManager from, int x) { int token = from.tokens[x]; int type = TokenBuilder.extractType(token); boolean isGroupClosed = TypeMask.Group == type && (0 != (token & (OperatorMask.Group_Bit_Close << TokenBuilder.SHIFT_OPER))) && (0 != (token & (OperatorMask.Group_Bit_Templ << TokenBuilder.SHIFT_OPER))); return isGroupClosed; }
private static String errorMessageForMessageStartValidation(StackStateWalker rw, long llwHeadPosCache) { return "Templated message must start with group open and this starts with "+TokenBuilder.tokenToString(rw.from.tokens[rw.msgIdx])+ " readBase "+rw.activeReadFragmentStack[0] + " nextWorkingTail:"+rw.nextWorkingTail+" headPosCache:"+llwHeadPosCache; }
public static boolean isGroupSequence(FieldReferenceOffsetManager from, int cursor) { return 0 != (OperatorMask.Group_Bit_Seq&TokenBuilder.extractOper(from.tokens[cursor])); }
/** * Reads long from specified pipe * @param pipe to be read * @param loc location of long to read * @return data from specified location */ public static long readLong(Pipe pipe, int loc) { assert(LOCUtil.isLocOfAnyType(loc, TypeMask.LongSigned, TypeMask.LongSignedOptional, TypeMask.LongUnsigned, TypeMask.LongUnsignedOptional)): "Value found "+LOCUtil.typeAsString(loc); return Pipe.readLong(Pipe.slab(pipe), pipe.slabMask, pipe.ringWalker.activeReadFragmentStack[STACK_OFF_MASK&(loc>>STACK_OFF_SHIFT)] +(OFF_MASK&loc)); }
private static boolean exitSearch(FieldReferenceOffsetManager from, int x) { int token = from.tokens[x]; int type = TokenBuilder.extractType(token); boolean isGroupClosed = TypeMask.Group == type && (0 != (token & (OperatorMask.Group_Bit_Close << TokenBuilder.SHIFT_OPER))) && (0 != (token & (OperatorMask.Group_Bit_Templ << TokenBuilder.SHIFT_OPER))); return isGroupClosed; }
private static String errorMessageForMessageStartValidation(StackStateWalker rw, long llwHeadPosCache) { return "Templated message must start with group open and this starts with "+TokenBuilder.tokenToString(rw.from.tokens[rw.msgIdx])+ " readBase "+rw.activeReadFragmentStack[0] + " nextWorkingTail:"+rw.nextWorkingTail+" headPosCache:"+llwHeadPosCache; }
public static boolean isGroupSequence(FieldReferenceOffsetManager from, int cursor) { return 0 != (OperatorMask.Group_Bit_Seq&TokenBuilder.extractOper(from.tokens[cursor])); }
/** * Reads int securely from specified pipe * @param pipe to read from * @param loc location of int to read * @param clearValue value to replace previous int with * @return data from specified location */ public static int readIntSecure(Pipe pipe, int loc, int clearValue) { assert(LOCUtil.isLocOfAnyType(loc, TypeMask.IntegerSigned, TypeMask.IntegerSignedOptional, TypeMask.IntegerUnsigned, TypeMask.IntegerUnsignedOptional, TypeMask.GroupLength)): "Value found "+LOCUtil.typeAsString(loc); return Pipe.readIntSecure(Pipe.slab(pipe), pipe.slabMask, pipe.ringWalker.activeReadFragmentStack[STACK_OFF_MASK&(loc>>STACK_OFF_SHIFT)]+(OFF_MASK&loc),clearValue); }
public static boolean isGroup(FieldReferenceOffsetManager from, int cursor) { return TypeMask.Group == TokenBuilder.extractType(from.tokens[cursor]); }
/** * Writes UTF8 to defined location in specified pipe * @param pipe to be written to * @param loc field to be written to * @param source char[] to write to specified location */ public static void writeUTF8(Pipe pipe, int loc, char[] source) { assert(LOCUtil.isLocOfAnyType(loc, TypeMask.TextUTF8, TypeMask.TextUTF8Optional, TypeMask.ByteVector, TypeMask.ByteVectorOptional)): "Value found "+LOCUtil.typeAsString(loc); int sourceLen = null==source? -1 : source.length; Pipe.validateVarLength(pipe, sourceLen<<3); //UTF8 encoded bytes are longer than the char count (6 is the max but math for 8 is cheaper) Pipe.setBytePosAndLen(Pipe.slab(pipe), pipe.slabMask, pipe.ringWalker.activeWriteFragmentStack[PipeWriter.STACK_OFF_MASK&(loc>>PipeWriter.STACK_OFF_SHIFT)] + (PipeWriter.OFF_MASK&loc), Pipe.getWorkingBlobHeadPosition((Pipe<?>) pipe), Pipe.copyUTF8ToByte(source, sourceLen, pipe), Pipe.bytesWriteBase(pipe)); }
public static boolean isGroup(FieldReferenceOffsetManager from, int cursor) { return TypeMask.Group == TokenBuilder.extractType(from.tokens[cursor]); }
public static boolean isGroup(FieldReferenceOffsetManager from, int cursor) { return TypeMask.Group == TokenBuilder.extractType(from.tokens[cursor]); }