⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codeword.h

📁 在ns-2添加apps
💻 H
字号:
/* * (c) 1997-98 StarBurst Communications Inc. * * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Author: Christoph Haenle, chris@cs.vu.nl * File: codeword.h * Last change: Dec 14, 1998 * * This software may freely be used only for non-commercial purposes */#ifndef codeword_h#define codeword_h#ifndef WIN32#include <unistd.h>   // due to definition of NULL#endif /* !WIN32 */class ExtraLongUInt {public:    ExtraLongUInt();    ExtraLongUInt(const char* val);    ExtraLongUInt(int val);    ExtraLongUInt(unsigned int val);    ExtraLongUInt(unsigned long val);    bool          operator ==(const ExtraLongUInt& other) const;    bool          operator !=(const ExtraLongUInt& other) const;    bool          operator < (const ExtraLongUInt& other) const;    bool          operator > (const ExtraLongUInt& other) const;    bool          operator <=(const ExtraLongUInt& other) const;    bool          operator >=(const ExtraLongUInt& other) const;    ExtraLongUInt operator + (const ExtraLongUInt& other) const;    ExtraLongUInt operator - (const ExtraLongUInt& other) const;    ExtraLongUInt operator & (const ExtraLongUInt& other) const;    ExtraLongUInt operator | (const ExtraLongUInt& other) const;    ExtraLongUInt operator ^ (const ExtraLongUInt& other) const;    ExtraLongUInt operator ~ () const;    bool          operator !() const;    ExtraLongUInt operator <<(unsigned int bits) const;    ExtraLongUInt operator <<(const ExtraLongUInt& bits) const;    ExtraLongUInt operator >>(unsigned int bits) const;    ExtraLongUInt operator >>(const ExtraLongUInt& bits) const;    const ExtraLongUInt& operator <<= (unsigned int bits);    const ExtraLongUInt& operator >>= (unsigned int bits);    const ExtraLongUInt& operator &=  (const ExtraLongUInt& other);    const ExtraLongUInt& operator |=  (const ExtraLongUInt& other);    const ExtraLongUInt& operator ^=  (const ExtraLongUInt& other);    void print(char* buf) const;    unsigned int bitcount() const;    unsigned int minbit() const;    enum { size = 2 };            // determines size of value (in units of unsigned long).                                  // Adjust according to max. group size supportedprotected:    unsigned long value[size];};typedef ExtraLongUInt CW_PATTERN_t; // Codeword-typedef for erasure correctiontypedef struct {                // Structure for the interna of erasure correction  CW_PATTERN_t left;  CW_PATTERN_t right;} CW_MATRIXLINE_t;unsigned int minbit(unsigned long val);unsigned int bitcount(unsigned long val);int initialize_codeword();void init_bitcount_array(unsigned char* arr, unsigned int nb_bits);void init_minbit_array(unsigned char* arr, unsigned int minbits);class Codeword{public:    Codeword();    void setSourceWordLen(unsigned long k);    CW_PATTERN_t getNextCwPat();    CW_PATTERN_t getNextCwPatOLD(unsigned long dtus_per_group, CW_PATTERN_t cw_pat);protected:    enum { MAX_DEGREE = 63 };    static CW_PATTERN_t primitive_polynomial[MAX_DEGREE+1];    unsigned int k;    CW_PATTERN_t n;    CW_PATTERN_t cw_index;    CW_PATTERN_t cw_pat;    CW_PATTERN_t cw_saved;};unsigned int minbit(const ExtraLongUInt& val);unsigned int bitcount(const ExtraLongUInt& val);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -