Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/**
* Copyright (c) 2020 Mauro Trevisan
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
package io.github.mtrevisan.boxon.codecs;
import io.github.mtrevisan.boxon.annotations.BindLong;
import io.github.mtrevisan.boxon.annotations.converters.Converter;
import io.github.mtrevisan.boxon.external.BitReader;
import io.github.mtrevisan.boxon.external.BitWriter;
import java.lang.annotation.Annotation;
final class CodecLong implements CodecInterface{
@Override
public Object decode(final BitReader reader, final Annotation annotation, final Object rootObject){
final BindLong binding = extractBinding(annotation);
final long v = reader.getLong(binding.byteOrder());
final Class> chosenConverter = CodecHelper.chooseConverter(binding.selectConverterFrom(), binding.converter(), rootObject);
final Object value = CodecHelper.converterDecode(chosenConverter, v);
CodecHelper.validateData(binding.match(), binding.validator(), value);
return value;
}
@Override
public void encode(final BitWriter writer, final Annotation annotation, final Object rootObject, final Object value){
final BindLong binding = extractBinding(annotation);
CodecHelper.validateData(binding.match(), binding.validator(), value);
final Class> chosenConverter = CodecHelper.chooseConverter(binding.selectConverterFrom(), binding.converter(), rootObject);
final long v = CodecHelper.converterEncode(chosenConverter, value);
writer.putLong(v, binding.byteOrder());
}
}