opensim – Rev 1

Subversion Repositories:
Rev:
using System;
using System.Collections.Generic;
using System.Text;

namespace Prebuild.Core.Targets
{
        /// <summary>
        /// 
        /// </summary>
        public struct ToolInfo
        {
                string name;
                string guid;
                string fileExtension;
                string xmlTag;
                string importProject;

                /// <summary>
                /// Gets or sets the name.
                /// </summary>
                /// <value>The name.</value>
                public string Name
                {
                        get
                        {
                                return name;
                        }
                        set
                        {
                                name = value;
                        }
                }

                /// <summary>
                /// Gets or sets the GUID.
                /// </summary>
                /// <value>The GUID.</value>
                public string Guid
                {
                        get
                        {
                                return guid;
                        }
                        set
                        {
                                guid = value;
                        }
                }

                /// <summary>
                /// Gets or sets the file extension.
                /// </summary>
                /// <value>The file extension.</value>
                public string FileExtension
                {
                        get
                        {
                                return fileExtension;
                        }
                        set
                        {
                                fileExtension = value;
                        }
                }
                public string LanguageExtension
                {
                        get
                        {
                                switch (this.Name)
                                {
                                        case "C#":
                                                return ".cs";
                                        case "VisualBasic":
                                                return ".vb";
                                        case "Boo":
                                                return ".boo";
                                        default:
                                                return ".cs";
                                }
                        }
                }
                /// <summary>
                /// Gets or sets the XML tag.
                /// </summary>
                /// <value>The XML tag.</value>
                public string XmlTag
                {
                        get
                        {
                                return xmlTag;
                        }
                        set
                        {
                                xmlTag = value;
                        }
                }

                /// <summary>
                /// Gets or sets the import project property.
                /// </summary>
                /// <value>The ImportProject tag.</value>
                public string ImportProject
                {
                        get
                        {
                                return importProject;
                        }
                        set
                        {
                                importProject = value;
                        }
                }

                /// <summary>
                /// Initializes a new instance of the <see cref="ToolInfo"/> class.
                /// </summary>
                /// <param name="name">The name.</param>
                /// <param name="guid">The GUID.</param>
                /// <param name="fileExtension">The file extension.</param>
                /// <param name="xml">The XML.</param>
                /// <param name="importProject">The import project.</param>
                public ToolInfo(string name, string guid, string fileExtension, string xml, string importProject)
                {
                        this.name = name;
                        this.guid = guid;
                        this.fileExtension = fileExtension;
                        this.xmlTag = xml;
                        this.importProject = importProject;
                }

                /// <summary>
                /// Initializes a new instance of the <see cref="ToolInfo"/> class.
                /// </summary>
                /// <param name="name">The name.</param>
                /// <param name="guid">The GUID.</param>
                /// <param name="fileExtension">The file extension.</param>
                /// <param name="xml">The XML.</param>
                public ToolInfo(string name, string guid, string fileExtension, string xml)
                {
                        this.name = name;
                        this.guid = guid;
                        this.fileExtension = fileExtension;
                        this.xmlTag = xml;
                        this.importProject = "$(MSBuildBinPath)\\Microsoft." + xml + ".Targets";
                }

                /// <summary>
                /// Equals operator
                /// </summary>
                /// <param name="obj">ToolInfo to compare</param>
                /// <returns>true if toolInfos are equal</returns>
                public override bool Equals(object obj)
                {
                        if (obj == null)
                        {
                                throw new ArgumentNullException("obj");
                        }
                        if (obj.GetType() != typeof(ToolInfo))
                                return false;

                        ToolInfo c = (ToolInfo)obj;
                        return ((this.name == c.name) && (this.guid == c.guid) && (this.fileExtension == c.fileExtension) && (this.importProject == c.importProject));
                }

                /// <summary>
                /// Equals operator
                /// </summary>
                /// <param name="c1">ToolInfo to compare</param>
                /// <param name="c2">ToolInfo to compare</param>
                /// <returns>True if toolInfos are equal</returns>
                public static bool operator ==(ToolInfo c1, ToolInfo c2)
                {
                        return ((c1.name == c2.name) && (c1.guid == c2.guid) && (c1.fileExtension == c2.fileExtension) && (c1.importProject == c2.importProject) && (c1.xmlTag == c2.xmlTag));
                }

                /// <summary>
                /// Not equals operator
                /// </summary>
                /// <param name="c1">ToolInfo to compare</param>
                /// <param name="c2">ToolInfo to compare</param>
                /// <returns>True if toolInfos are not equal</returns>
                public static bool operator !=(ToolInfo c1, ToolInfo c2)
                {
                        return !(c1 == c2);
                }

                /// <summary>
                /// Hash Code
                /// </summary>
                /// <returns>Hash code</returns>
                public override int GetHashCode()
                {
                        return name.GetHashCode() ^ guid.GetHashCode() ^ this.fileExtension.GetHashCode() ^ this.importProject.GetHashCode() ^ this.xmlTag.GetHashCode();

                }
        }
}