void PanasonicProtocol::generateChecksum( const CommandSequence &device, const CommandSequence &subdevice, const CommandSequence &command, CommandSequence &checksum) { checksum.clear(); // probably unnecessary sanity check. CommandSequence::const_iterator diter = device.begin(); CommandSequence::const_iterator siter = subdevice.begin(); CommandSequence::const_iterator citer = command.begin(); while (diter !=device.end() && siter != subdevice.end() && citer != command.end()) { checksum.push_back(*diter ^ *siter ^ *citer); ++diter; ++siter; ++citer; } }