|
using System;
using System.Collections;
using System.ComponentModel;
namespace NSourceStructure
{
public class ProcessOptions
{
#region Local Enums used for EnumGroupBoxes
[Flags, Description("xEPredefined")]
public enum EPredefined
{
[Description("xNothing")] Nothing = 0,
[Description("xPhysical")] Physical = 1,
[Description("xLogical")] Logical = Physical << 1,
[Description("xRebuild")] Rebuild = Logical << 1,
[Description("xStructure")] Structure = Rebuild << 1
}
[Flags, Description("xETask")]
public enum ETasks
{
[Description("0 xNoTask")] NoTask = 0,
[Description("1 xBlocks")] Blocks = 1,
[Description("2 xSplitIfBlock")] SplitIfBlock = Blocks << 1,
[Description("3 xSplitSwitchBlock")] SplitSwitchBlock = SplitIfBlock << 1,
[Description("4 xMoveComment")] MoveComment = SplitSwitchBlock << 1,
[Description("5 xStripComments")] StripComments = MoveComment << 1,
[Description("6 xStripEmptyLines")] StripEmptyLines = StripComments << 1,
[Description("7 xStripRegions")] StripRegions = StripEmptyLines << 1,
[Description("8 xDesignerRegion")] DesignerRegion = StripRegions << 1,
[Description("9 xSortDesignReg")] SortDesignReg = DesignerRegion << 1,
[Description("10 xTrimStart")] TrimStart = SortDesignReg << 1,
[Description("11 xTrimEnd")] TrimEnd = TrimStart << 1,
[Description("12 xCombineLines")] CombineLines = TrimEnd << 1,
[Description("13 xCombineDeclares")] CombineDeclares = CombineLines << 1
}
[Flags, Description("xEUnitSort")]
public enum EUnitSort
{
[Description("xNoUnitSort")] NoUnitSort = 0,
[Description("xAccessSort")] AccessSort = 1,
[Description("xAlphaSort")] AlphaSort = AccessSort << 1,
[Description("xTypeSort")] TypeSort = AlphaSort << 1,
[Description("xRebuildSort")] RebuildSort = TypeSort << 1
}
[Flags, Description("xESpecialSort")]
public enum ESpecialSort
{
[Description("xNoSpecialSort")] NoSpecialSort = 0,
[Description("xElseSort")] ElseSort = 1,
[Description("xCaseSort")] CaseSort = ElseSort << 1
}
[Flags, Description("xEColorSchema")]
public enum EColorSchema
{
[Description("xNone")] None = 0,
[Description("xUnits")] Units = 1,
[Description("xAccess")] Access = Units << 1,
[Description("xCompare")] Compare = Access << 1,
[Description("xLevel")] Level = Compare << 1
}
#endregion
#region Constructor(s)
public ProcessOptions()
{
m_Predefined = EPredefined.Nothing;
m_UnitSort = EUnitSort.NoUnitSort;
m_SpecialSort = ESpecialSort.NoSpecialSort;
m_Tasks = ETasks.NoTask;
}
public ProcessOptions(ProcessOptions processOptions):this()
{
if (processOptions != null)
{
m_Predefined = (EPredefined)processOptions.Predefined;
m_UnitSort = (EUnitSort)processOptions.UnitSort;
m_SpecialSort = (ESpecialSort)processOptions.SpecialSort;
m_Tasks = (ETasks)processOptions.Tasks;
}
}
#endregion
#region Local Variables
private ETasks m_Tasks;
private EUnitSort m_UnitSort;
private ESpecialSort m_SpecialSort;
private EPredefined m_Predefined;
private EColorSchema m_ColorSchema;
#endregion
#region Properties
public EPredefined Predefined
{
get
{
return m_Predefined;
}
set
{
m_Predefined = value;
switch (m_Predefined)
{
case EPredefined.Structure:
m_Tasks = ETasks.StripComments;
addTask(ETasks.StripEmptyLines);
addTask(ETasks.DesignerRegion);
addTask(ETasks.StripRegions);
addTask(ETasks.CombineLines);
addTask(ETasks.CombineDeclares);
addTask(ETasks.SortDesignReg);
m_UnitSort = EUnitSort.TypeSort;
m_SpecialSort = ESpecialSort.NoSpecialSort;
break;
case EPredefined.Logical:
m_Tasks = ETasks.StripComments;
addTask(ETasks.StripEmptyLines);
addTask(ETasks.StripRegions);
addTask(ETasks.TrimStart);
addTask(ETasks.TrimEnd);
addTask(ETasks.CombineLines);
addTask(ETasks.SplitSwitchBlock);
addTask(ETasks.SplitIfBlock);
addTask(ETasks.Blocks);
m_UnitSort = EUnitSort.AlphaSort;
m_SpecialSort = ESpecialSort.CaseSort;
addSpecialSort(ESpecialSort.ElseSort);
break;
case EPredefined.Nothing:
m_Tasks = ETasks.NoTask;
m_UnitSort = EUnitSort.NoUnitSort;
m_SpecialSort = ESpecialSort.NoSpecialSort;
break;
case EPredefined.Physical:
m_Tasks = ETasks.Blocks;
addTask(ETasks.SplitSwitchBlock);
addTask(ETasks.SplitIfBlock);
m_UnitSort = EUnitSort.NoUnitSort;
m_SpecialSort = ESpecialSort.NoSpecialSort;
break;
case EPredefined.Rebuild:
m_Tasks = ETasks.MoveComment;
addTask(ETasks.StripEmptyLines);
addTask(ETasks.StripRegions);
addTask(ETasks.DesignerRegion);
addTask(ETasks.TrimEnd);
addTask(ETasks.CombineLines);
addTask(ETasks.CombineDeclares);
addTask(ETasks.SplitSwitchBlock);
addTask(ETasks.SplitIfBlock);
addTask(ETasks.Blocks);
m_UnitSort = EUnitSort.RebuildSort;
m_SpecialSort = ESpecialSort.CaseSort;
addSpecialSort(ESpecialSort.ElseSort);
break;
}
}
}
public EUnitSort UnitSort
{
get
{
return m_UnitSort;
}
set
{
m_UnitSort = value;
}
}
public ESpecialSort SpecialSort
{
get
{
return m_SpecialSort;
}
set
{
m_SpecialSort = value;
}
}
public ETasks Tasks
{
get
{
return m_Tasks;
}
set
{
m_Tasks = value;
}
}
public EColorSchema ColorSchema
{
get
{
return m_ColorSchema;
}
set
{
m_ColorSchema = value;
}
}
#endregion
#region Local Methods
private void addClassSort(EUnitSort Flag)
{
m_UnitSort = m_UnitSort | Flag;
}
private void addSpecialSort(ESpecialSort Flag)
{
m_SpecialSort = m_SpecialSort | Flag;
}
private void addTask(ETasks Task)
{
m_Tasks = m_Tasks | Task;
}
#endregion
#region Public Methods
public bool Check(EUnitSort Sort)
{
return ((m_UnitSort & Sort) == Sort);
}
public bool Check(ESpecialSort Sort)
{
return ((m_SpecialSort & Sort) == Sort);
}
public bool Check(ETasks Task)
{
return ((m_Tasks & Task) == Task);
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.