sysperfana/heapanalyser/Libraries/Engine/HeapLib/Cells/Descriptors/Implementations/Ascii/DesAsciiAlgorithmHBufC.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Tue, 15 Jun 2010 12:47:20 +0300
changeset 8 15296fd0af4a
permissions -rw-r--r--
HeapAnalyser 1.1.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* Redistribution and use in source and binary forms, with or without
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* modification, are permitted provided that the following conditions are met:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
* - Redistributions of source code must retain the above copyright notice,
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
*   this list of conditions and the following disclaimer.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* - Redistributions in binary form must reproduce the above copyright notice,
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*   this list of conditions and the following disclaimer in the documentation
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
*   and/or other materials provided with the distribution.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
* - Neither the name of Nokia Corporation nor the names of its contributors
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
*   may be used to endorse or promote products derived from this software
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*   without specific prior written permission.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
* POSSIBILITY OF SUCH DAMAGE.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
* 
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
* Initial Contributors:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
* Nokia Corporation - initial contribution.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
* Contributors:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
* Description: 
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
*/
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
using System;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
using System.Collections.Generic;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
using System.Text;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
using HeapLib.Statistics;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
namespace HeapLib.Cells.Descriptors.Implementations.Ascii
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
{
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
    internal class DesAsciiAlgorithmHBufC : DesAsciiAlgorithmBase
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
    {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
        #region Constructors & destructor
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
        public DesAsciiAlgorithmHBufC( HeapStatistics aStats )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
            : base( aStats )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
        #region From DescriptorAlgorithmBase
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
        internal override bool IsDescriptor( HeapCell aCell, out DescriptorInfo aInfo )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
            // Base-class makes first pass.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
            bool isDes = base.IsDescriptor( aCell, out aInfo );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
            //
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
            if ( isDes )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
                // Now we can check if it meet our requirements...
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
                int length = base.CalculatedDescriptorLength;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
                bool allWerePrintableCharacers = false;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
                int printCharCount = PrintableCharacterCount( length, out allWerePrintableCharacers );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
                //
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
                if ( printCharCount == length )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
                {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
                    aInfo = new DescriptorInfo( aCell );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
                    aInfo.Text = ConvertToText( length );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
                    isDes = true;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
                }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
            //
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
            return isDes;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
    }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
}