FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Dobbs M-Dev
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
October 01, 2003

URL Canonicalization Testing

(Page 7 of 16)
URL Canonicalization Testing

Listing 5 A stripped-down version of GenerateEncodings


// from header:
// typedef std::wstring QuadS;
// const std::wstring quadSeparator(L".");
// const std::wstring hexPrefix(L"0x");
// const std::wstring octalPrefix(L"0");

void CIPEncoder::GenerateEncodings(QuadS quadOne, QuadS quadTwo
    , QuadS quadThree, QuadS quadFour
    , unsigned long charactersToPrepend, std::wstring dotEncoding)
    {
    // Raw IP.
    AddAddress(GenerateRandomDecimalDigits(charactersToPrepend) + quadOne
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadTwo 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadThree
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadFour);

    // Encode as hex.
    AddAddress(hexPrefix + GenerateRandomHexDigits(charactersToPrepend) 
            + CConverters::DecimalToHex(quadOne) 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadTwo 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadThree
        + quadSeparator
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadFour);

    // Collapse the quads.
    AddAddress(GenerateRandomDecimalDigits(charactersToPrepend) 
            + CollapseQuads(quadOne, quadTwo) 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadThree 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadFour);
    AddAddress(GenerateRandomDecimalDigits(charactersToPrepend) 
        + CollapseQuads(quadOne, quadTwo, quadThree, quadFour));

    // Collapse the quads and encode as hex.
    AddAddress(hexPrefix + GenerateRandomHexDigits(charactersToPrepend) 
            + CConverters::DecimalToHex(CollapseQuads(quadOne, quadTwo)) 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadThree 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadFour);

    // Encode the dots.
    AddAddress(GenerateRandomDecimalDigits(charactersToPrepend) + quadOne 
        + dotEncoding 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadTwo 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadThree 
        + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadFour);

    // QUAD_CONVERTED  QUAD_SYSTEM  QUAD_COLLAPSED  EXTRA_CHARS  DOTS_ENCODED
    // None            Decimal      None            None         None
    AddAddress(quadOne + quadSeparator + quadTwo + quadSeparator + quadThree 
        + quadSeparator + quadFour);
    //    None         Decimal      None            P2           Second
    AddAddress(quadOne + quadSeparator 
        + GenerateRandomDecimalDigits(charactersToPrepend) + quadTwo
        + dotEncoding + quadThree + quadSeparator + quadFour);
    //    Some         Decimal      P3+P4           P1           First
    AddAddress(hexPrefix + GenerateRandomHexDigits(charactersToPrepend) 
            + CConverters::DecimalToHex(quadOne)
        + dotEncoding + quadTwo 
        + octalPrefix + GenerateRandomOctalDigits(charactersToPrepend) 
            + CConverters::DecimalToOctal(CollapseQuads(quadThree, quadFour)));
    //    All          Octal        All             None         Third
    AddAddress(octalPrefix + CConverters::DecimalToOctal(
        CollapseQuads(quadOne, quadTwo, quadThree, quadFour)));
    }

Previous Page | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 Next Page
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK