#include <alma/ASDM/ArrayTimeInterval.h>
bool ArrayTimeInterval::readStartTimeDurationInBin_ = false;
bool ArrayTimeInterval::readStartTimeDurationInXML_ = false;
ArrayTimeInterval::ArrayTimeInterval (asdmIDLTypes::IDLArrayTimeInterval t) {
start = ArrayTime(t.start);
duration = Interval(t.duration);
const asdmIDLTypes::IDLArrayTimeInterval ArrayTimeInterval::toIDLArrayTimeInterval()const {
asdmIDLTypes::IDLArrayTimeInterval x;
x.duration = duration.get();
void ArrayTimeInterval::toBin(EndianOSStream& eoss) const {
int64_t start = getStart().get();
int64_t midpoint = start + getDuration().get() / 2;
eoss.writeLongLong(midpoint);
eoss.writeLongLong(duration.get());
void ArrayTimeInterval::toBin(const vector<ArrayTimeInterval>& arrayTimeInterval, EndianOSStream& eoss) {
eoss.writeInt((int) arrayTimeInterval.size());
for (unsigned int i = 0; i < arrayTimeInterval.size(); i++) {
arrayTimeInterval.at(i).toBin(eoss);
void ArrayTimeInterval::toBin(const vector<vector<ArrayTimeInterval> >& arrayTimeInterval, EndianOSStream& eoss) {
eoss.writeInt((int) arrayTimeInterval.size());
eoss.writeInt((int) arrayTimeInterval.at(0).size());
for (unsigned int i = 0; i < arrayTimeInterval.size(); i++)
for (unsigned int j = 0; j < arrayTimeInterval.at(0).size(); j++) {
arrayTimeInterval.at(i).at(j).toBin(eoss);
void ArrayTimeInterval::toBin(const vector< vector<vector<ArrayTimeInterval> > >& arrayTimeInterval, EndianOSStream& eoss) {
eoss.writeInt((int) arrayTimeInterval.size());
eoss.writeInt((int) arrayTimeInterval.at(0).size());
eoss.writeInt((int) arrayTimeInterval.at(0).at(0).size());
for (unsigned int i = 0; i < arrayTimeInterval.size(); i++)
for (unsigned int j = 0; j < arrayTimeInterval.at(0).size(); j++)
for (unsigned int k = 0; k < arrayTimeInterval.at(0).at(0).size(); j++) {
arrayTimeInterval.at(i).at(j).at(k).toBin(eoss);
void ArrayTimeInterval::readStartTimeDurationInBin(bool b) {
readStartTimeDurationInBin_ = b;
bool ArrayTimeInterval::readStartTimeDurationInBin() {
return readStartTimeDurationInBin_;
void ArrayTimeInterval::readStartTimeDurationInXML(bool b) {
readStartTimeDurationInXML_ = b;
bool ArrayTimeInterval::readStartTimeDurationInXML() {
return readStartTimeDurationInXML_;
ArrayTimeInterval ArrayTimeInterval::fromBin(EndianIStream & eis) {
if (readStartTimeDurationInBin_) {
start = eis.readLongLong();
duration = eis.readLongLong();
int64_t midpoint = eis.readLongLong();
duration = eis.readLongLong();
start = midpoint - duration / 2;
return ArrayTimeInterval(start, duration);