1: // $Id: dnsutil.i,v 1.22 2001/11/05 03:26:18 jdw Exp $ 2: 3: 4: /********************** 5: * * 6: * COMPILER INCLUDES * 7: * * 8: **********************/ 9: 10: 11: #include <cassert> 12: #include <cstring> 13: #include <stdexcept> 14: 15: 16: /********************* 17: * * 18: * PROJECT INCLUDES * 19: * * 20: *********************/ 21: 22: 23: #include "debugptr.h" 24: #include "loghandle.h" 25: #include "ex.h" 26: 27: 28: using std::invalid_argument; 29: using WWWI::IPDump; 30: 31: 32: /*********************** 33: * * 34: * FUNCTIONS FROMBITS * 35: * * 36: ***********************/ 37: 38: 39: inline unsigned char FromBits(bool i_b3, bool i_b2, bool i_b1, bool i_b0) { 40: return FromBits(false,false,false,false,i_b3,i_b2,i_b1,i_b0); 41: } 42: 43: 44: inline unsigned char FromBits(bool i_b7, bool i_b6, bool i_b5, bool i_b4, bool i_b3, bool i_b2, bool i_b1, bool i_b0) { 45: unsigned char uc = 0; 46: if (i_b7) uc+=128; 47: if (i_b6) uc+=64; 48: if (i_b5) uc+=32; 49: if (i_b4) uc+=16; 50: if (i_b3) uc+=8; 51: if (i_b2) uc+=4; 52: if (i_b1) uc+=2; 53: if (i_b0) uc+=1; 54: return uc; 55: } 56: 57: 58: /************************ 59: * * 60: * FUNCTION MATCHCLASS * 61: * * 62: ************************/ 63: 64: 65: inline bool MatchClass(RRClass i_cl1, RRClass i_cl2) { 66: if (i_cl2==CL_QANY) return true; 67: return (i_cl1==i_cl2); 68: } 69: 70: 71: /*********************** 72: * * 73: * FUNCTION MATCHTYPE * 74: * * 75: ***********************/ 76: 77: 78: // STUB: there are more wildcards that should be handled here. 79: inline bool MatchType(RRType i_ty1, RRType i_ty2) { 80: if (i_ty2==TY_QANY) return true; 81: return (i_ty1==i_ty2); 82: } 83: 84: 85: /************************ 86: * * 87: * FUNCTION SOFTDELETE * 88: * * 89: ************************/ 90: 91: 92: template <class T> void SoftDelete(T* &io_tpr) { 93: if (io_tpr==NULL) return; 94: delete io_tpr; 95: io_tpr = NULL; 96: } 97: 98: 99: #ifdef USE_DEBUG_POINTERS 100: template <class T> void SoftDelete(DebugPtr<T> &io_tdp) { 101: if (io_tdp==NULL) return; 102: io_tdp.Delete(); 103: } 104: #endif 105: 106: 107: /***************************** 108: * * 109: * FUNCTION SOFTDELETEARRAY * 110: * * 111: *****************************/ 112: 113: 114: template <class T> void SoftDeleteArray(T* &io_tpr) { 115: if (io_tpr==NULL) return; 116: delete[] io_tpr; 117: io_tpr = NULL; 118: } 119: 120: 121: