crashanalysercmd/Libraries/Engine/CrashItemLib/Crash/Source/CISource.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:50:58 +0200
changeset 0 818e61de6cd1
permissions -rw-r--r--
Add initial version of Crash Analyser cmdline under EPL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
* 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
using System;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
using System.Text;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
using System.IO;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
using System.Collections;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
using System.Collections.Generic;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
using CrashItemLib.Crash;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
using CrashItemLib.Crash.Base;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
namespace CrashItemLib.Crash.Source
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
    /// <summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
    /// Base class for all crash sources
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
    /// </summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
    public abstract class CISource : IEnumerable<FileInfo>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
        #region Constructors
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
        protected CISource( FileInfo aFile )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
		{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
            iFile = aFile;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
        #region Constants
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
        public static readonly string[] KExtensionsTrace = new string[] { ".txt", ".log", ".trace" };
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
        #region API
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
        public void AddAdditionalFile( FileInfo aFile )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
            iAdditionalFiles.Add( aFile );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
        public static bool SubstringMatch( string aText, string[] aCandidates )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
            string text = aText.ToUpper();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
            foreach ( string candidate in aCandidates )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
                if ( text.Contains( candidate.ToUpper() ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
                    return true;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
            return false;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
        #region Properties
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
        /// <summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
        /// The primary file which essentially describes the crash.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
        /// </summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
        public FileInfo MasterFile
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
            get { return iFile; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
        public string MasterFileName
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
            get
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
                string ret = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
                if ( MasterFile != null )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
                    ret = MasterFile.FullName;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
                return ret; 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
        /// <summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
        /// Get other files which may be related to the master file.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
        /// For example, D_EXC stores it stack file separately to
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
        /// the main text file, therefore the STK file would be present
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
        /// only within the 'all files' array.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
        /// </summary>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
        public FileInfo[] AllFiles
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
            get
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
                List<FileInfo> ret = new List<FileInfo>( this.iAdditionalFiles );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
                ret.Insert( 0, MasterFile );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
                return ret.ToArray();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
        public string Extension
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
            get { return Path.GetExtension( MasterFileName ).ToLower(); }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
        public int AdditionalFileCount
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
            get { return iAdditionalFiles.Count; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
        public long LineNumber
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
            get { return iLineNumber; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
            set { iLineNumber = value; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
        public bool Exists
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
            get { return File.Exists( MasterFileName ); }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
        public bool IsTraceExtension
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
            get
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
                string extn = Extension;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
                bool ret = SubstringMatch( extn, KExtensionsTrace );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
                return ret;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
        public bool IsLineNumberAvailable
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
            get { return iLineNumber != KLineNumberNotApplicable; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
        #region Framework properties
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
        public abstract Version ImplementorVersion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
            get;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
        public abstract string ImplementorName
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
            get;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
        
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
        #region Internal constants
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
        private const long KLineNumberNotApplicable = -1;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
        #region Internal methods
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
        internal void RawDataClear()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
            iRawData.Clear();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
        internal byte[] RawData
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
            get { return iRawData.ToArray(); }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
        internal void RawDataAdd( byte[] aRawData )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
            iRawData.AddRange( aRawData );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
        #region From IEnumerable<FileInfo>
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
        public IEnumerator<FileInfo> GetEnumerator()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
            foreach ( FileInfo file in iAdditionalFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
                yield return file;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
        IEnumerator IEnumerable.GetEnumerator()
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
            foreach ( FileInfo file in iAdditionalFiles )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
                yield return file;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
        #region Data members
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
        private FileInfo iFile = null;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
        private List<FileInfo> iAdditionalFiles = new List<FileInfo>();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
        private List<byte> iRawData = new List<byte>( 1024 );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
        private long iLineNumber = KLineNumberNotApplicable;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
}