/* * ALMA - Atacama Large Millimeter Array * (c) European Southern Observatory, 2002 * (c) Associated Universities Inc., 2002 * Copyright by ESO (in the framework of the ALMA collaboration), * Copyright by AUI (in the framework of the ALMA collaboration), * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY, without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * File PartId.cpp */ #include <alma/ASDM/PartId.h> #include <alma/ASDM/OutOfBoundsException.h> #include <alma/ASDM/InvalidArgumentException.h> using namespace std; namespace asdm { /** * Returns a null string if the string x contains a valid * entity-id. Otherwise, the string contains the error message. */ string PartId::validate(string x) { string msg = "Invalid format for PartId: " + x; // Check the partId for the correct format. if (x.length() == 0) return ""; if (x.length() != 9 || x.at(0) != 'X') return msg; for (int i = 1; i < 9; ++i) { if (!((x.at(i) >= '0' && x.at(i) <= '9') || (x.at(i) >= 'a' && x.at(i) <= 'f'))) return msg; } return ""; } PartId::PartId(const string &id) { string msg = validate(id); if (msg.length() != 0) throw InvalidArgumentException(msg); this->id = id; } void PartId::setId(const string &id) { string msg = validate(id); if (msg.length() != 0) throw InvalidArgumentException(msg); this->id = id; } void PartId::toBin(EndianOSStream& eoss) const { eoss.writeString(id); } PartId PartId::fromBin(EndianIStream& eis) { return PartId(eis.readString()); } } // End namespace asdm