00001 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ 00002 /* 00003 * Copyright (c) 2010 Nicola Baldo 00004 * 00005 * This program is free software: you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation, either version 3 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 * 00018 * Author: Nicola Baldo <nicola@baldo.biz> 00019 */ 00020 00021 #ifndef GAUSSIAN_ELIMINATION_DECODER_H 00022 #define GAUSSIAN_ELIMINATION_DECODER_H 00023 00024 #include<decoder.h> 00025 00026 00027 namespace Binc { 00028 00029 00035 class GaussianEliminationDecoder : public Decoder 00036 { 00037 public: 00038 GaussianEliminationDecoder (); 00039 virtual ~GaussianEliminationDecoder (); 00040 00041 // inherited from Decoder 00042 virtual void Receive (Ptr<PacketCombination> p); 00043 00044 struct Row 00045 { 00046 Row (Ptr<PacketCombination> p); 00047 ~Row (); 00048 Ptr<PacketCombination> packetCombination; 00049 bool forwardedUp; 00050 00051 private: 00052 Row (); // private since it should never be called 00053 }; 00054 00055 protected: 00056 00060 std::vector<Row> m_rows; 00061 00067 unsigned int m_nextIndex; 00068 00069 }; 00070 00071 } // namespace Binc 00072 00073 00074 #endif // GAUSSIAN_ELIMINATION_DECODER_H