blob: af86d9bd2011e5e885b5e016463c09c13638606b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.asterix.external.classad;
import org.apache.asterix.external.classad.Lexer.TokenType;
import org.apache.asterix.external.classad.Value.NumberFactor;
import org.apache.asterix.om.base.AMutableDouble;
import org.apache.asterix.om.base.AMutableInt64;
import org.apache.commons.lang3.mutable.MutableBoolean;
public class TokenValue {
private TokenType tt;
private NumberFactor factor;
private long intValue;
private double realValue;
private boolean boolValue;
private AMutableCharArrayString strValue;
private ClassAdTime time;
public TokenValue() {
tt = TokenType.LEX_TOKEN_ERROR;
factor = NumberFactor.NO_FACTOR;
intValue = 0;
realValue = 0.0;
boolValue = false;
strValue = new AMutableCharArrayString();
time = new ClassAdTime();
}
public void setTokenType(TokenType t) {
tt = t;
}
public void setIntValue(long i, NumberFactor f) {
intValue = i;
factor = f;
}
public void setRealValue(double r, NumberFactor f) {
realValue = r;
factor = f;
}
public void setBoolValue(boolean b) {
boolValue = b;
}
public void setStringValue(char[] str) {
strValue.copyValue(str, str.length);
}
public void setStringValue(char[] str, int length) {
strValue.copyValue(str, length);
}
public void setStringValue(AMutableCharArrayString aString) {
strValue.setValue(aString);
}
public void setAbsTimeValue(ClassAdTime asecs) {
time.setValue(asecs);
}
public void setRelTimeValue(double rsecs) {
time.setValue((long) rsecs);
}
public TokenType getTokenType() {
return tt;
}
public void getIntValue(AMutableInt64 i, AMutableNumberFactor f) {
i.setValue(intValue);
f.setFactor(factor);
}
public void getRealValue(AMutableDouble r, AMutableNumberFactor f) {
r.setValue(realValue);
f.setFactor(factor);
}
public void getBoolValue(MutableBoolean b) {
b.setValue(boolValue);
}
void getStringValue(AMutableCharArrayString str) {
str.copyValue(strValue.getValue(), strValue.getLength());
}
void getAbsTimeValue(ClassAdTime asecs) {
asecs.setValue(time);
}
void getRelTimeValue(ClassAdTime rsecs) {
rsecs.setValue(time.getRelativeTime());
}
void copyFrom(TokenValue tv) {
tt = tv.tt;
factor = tv.factor;
intValue = tv.intValue;
realValue = tv.realValue;
boolValue = tv.boolValue;
time.setValue(tv.time);
strValue.setValue(tv.strValue);
}
public void reset() {
tt = TokenType.LEX_TOKEN_ERROR;
factor = NumberFactor.NO_FACTOR;
intValue = 0;
realValue = 0.0;
boolValue = false;
strValue.reset();
time.reset();
}
public NumberFactor getFactor() {
return factor;
}
public long getIntValue() {
return intValue;
}
public double getRealValue() {
return realValue;
}
public boolean getBoolValue() {
return boolValue;
}
public AMutableCharArrayString getStrValue() {
return strValue;
}
public ClassAdTime getTimeValue() {
return time;
}
}