using System.Reflection; namespace IStation.Epanet.Enums { ///Parse and report keywords. internal static class Keywords { /// Retrives value from enum member. /// Keyword strng on success, otherwise. public static string Keyword2(this T value) where T : struct { FieldInfo field; Type t = typeof(T); if (t.IsEnum && (field = t.GetField(value.ToString())) != null && Attribute.GetCustomAttribute(field, typeof(KeywordAttribute)) is KeywordAttribute att && att.Keyword != null) { return att.Keyword; } return string.Empty; } /// Searches for Enum member, marked with with value . /// Enum type. /// Value of to search. /// Recives value of Enum member found. /// true, if Enum member witn was found, false if not. public static bool ToEnum(this string keyword, out T value) where T : struct { Type t = typeof(T); if (t.IsEnum) foreach (FieldInfo fi in t.GetFields()) if (Attribute.GetCustomAttribute(fi, typeof(KeywordAttribute)) is KeywordAttribute at) if (string.Equals(at.Keyword, keyword, StringComparison.OrdinalIgnoreCase)) { value = (T)fi.GetRawConstantValue(); return true; } value = default(T); return false; } public const string t_ACTIVE = "active"; public const string t_CHEMICAL = "Chemical"; public const string t_CLOSED = "closed"; public const string t_CM = "Chezy-Manning"; public const string t_CONTINUED = " (continued)"; public const string t_CONTROL = "Control"; public const string t_COORD = "Coordinate"; public const string t_CURVE = "Curve"; public const string t_DEMAND = "Demand"; public const string t_DEMANDFOR = "Demand for Node"; public const string t_DIAM = "Diameter"; public const string t_DIFFER = "DIFFERENTIAL"; public const string t_DW = "Darcy-Weisbach"; public const string t_ELEV = "Elevation"; public const string t_EMITTER = "Emitter"; public const string t_EMPTYING = "emptying"; public const string t_END = "End"; public const string t_ENERGY = "Energy"; public const string t_FILLING = "filling"; public const string t_FLOW = "Flow"; public const string t_FRICTION = "F-Factor"; public const string t_FUNCCALL = "function call"; public const string t_HALTED = " EXECUTION HALTED."; public const string t_HEAD = "Head"; public const string t_HEADLOSS = "Headloss"; public const string t_HW = "Hazen-Williams"; public const string t_JUNCTION = "Junction"; public const string t_LABEL = "Label"; public const string t_LENGTH = "Length"; public const string t_LINKID = "Link"; public const string t_LINKQUAL = "Quality"; public const string t_LINKSTATUS = "State"; public const string t_MIXING = "Mixing"; public const string t_NODEID = "Node"; public const string t_OPEN = "open"; public const string t_OPTION = "Options"; public const string t_PATTERN = "Pattern"; public const string t_PERDAY = "/day"; public const string t_perM3 = " /m3"; public const string t_perMGAL = "/Mgal"; public const string t_PIPE = "Pipe"; public const string t_PRESSURE = "Pressure"; public const string t_PUMP = "Pump"; public const string t_QUALITY = "Quality"; public const string t_REACTION = "Reaction"; public const string t_REACTRATE = "Reaction"; public const string t_REPORT = "Report"; public const string t_RESERVOIR = "Reservoir"; public const string t_ROUGHNESS = "Roughness"; public const string t_RULE = "Rule"; public const string t_RULES_SECT = "[RULES] section"; public const string t_SETTING = "Setting"; public const string t_SOURCE = "Source"; public const string t_STATUS = "Status"; public const string t_TAG = "Tag"; public const string t_TANK = "Tank"; public const string t_TEMPCLOSED = "temporarily closed"; public const string t_TIME = "Times"; public const string t_TITLE = "Title"; public const string t_VALVE = "Valve"; public const string t_VELOCITY = "Velocity"; public const string t_VERTICE = "Vertice"; public const string t_XFCV = "open but cannot deliver flow"; public const string t_XFLOW = "open but exceeds maximum flow"; public const string t_XHEAD = "closed because cannot deliver head"; public const string t_XPRESSURE = "open but cannot deliver pressure"; public const string u_AFD = "a-f/d"; // Units public const string u_CFS = "cfs"; public const string u_CMD = "m3/d"; public const string u_CMH = "m3/h"; public const string u_FEET = "ft"; public const string u_FTperSEC = "fps"; public const string u_GPM = "gpm"; public const string u_HOURS = "hrs"; public const string u_HP = "hp"; public const string u_IMGD = "Imgd"; public const string u_INCHES = "in"; public const string u_KPA = "kPa"; public const string u_KW = "kw"; public const string u_LPM = "Lpm"; public const string u_LPS = "L/s"; public const string u_METERS = "m"; public const string u_MGD = "mgd"; public const string u_MGperL = "mg/L"; public const string u_MINUTES = "min"; public const string u_MLD = "ML/d"; public const string u_MMETERS = "mm"; public const string u_MperSEC = "m/s"; public const string u_per1000FT = "/kft"; public const string u_per1000M = "/km"; public const string u_PERCENT = "%"; public const string u_PSI = "psi"; public const string u_SQFTperSEC = "sq ft/sec"; public const string u_SQMperSEC = "sq m/sec"; public const string u_UGperL = "ug/L"; public const string w_2COMP = "2COMP"; public const string w_ABOVE = "ABOVE"; public const string w_ACCURACY = "ACCU"; public const string w_ACTIVE = "ACTIVE"; public const string w_ADD = "ADD"; public const string w_AFD = "AFD"; public const string w_AGE = "AGE"; public const string w_ALL = "ALL"; public const string w_AM = "AM"; public const string w_AVG = "AVERAGE"; public const string w_BELOW = "BELOW"; public const string w_BULK = "BULK"; public const string w_CFS = "CFS"; public const string w_CHECKFREQ = "CHECKFREQ"; public const string w_CHEM = "CHEM"; public const string w_CLOCKTIME = "CLOCKTIME"; public const string w_CLOSED = "CLOSED"; public const string w_CM = "C-M"; public const string w_CMD = "CMD"; public const string w_CMH = "CMH"; public const string w_CONCEN = "CONCEN"; public const string w_CONTINUE = "CONT"; public const string w_CURVE = "CURV"; public const string w_CV = "CV"; public const string w_DAMPLIMIT = "DAMPLIMIT"; public const string w_DAYS = "DAY"; public const string w_DEMAND = "DEMA"; public const string w_DIAM = "DIAM"; public const string w_DIFFUSIVITY = "DIFF"; public const string w_DMNDCHARGE = "DEMAN"; public const string w_DRAINTIME = "DRAI"; public const string w_DURATION = "DURA"; public const string w_DW = "D-W"; public const string w_EFFIC = "EFFI"; public const string w_ELEV = "ELEV"; public const string w_EMITTER = "EMIT"; public const string w_ENERGY = "ENER"; public const string w_FCV = "FCV"; public const string w_FIFO = "FIFO"; public const string w_FILE = "FILE"; public const string w_FILLTIME = "FILL"; public const string w_FLOW = "FLOW"; public const string w_FLOWPACED = "FLOWPACED"; public const string w_FULL = "FULL"; public const string w_GLOBAL = "GLOB"; public const string w_GPM = "GPM"; public const string w_GPV = "GPV"; public const string w_GRADE = "GRADE"; public const string w_HEAD = "HEAD"; public const string w_HEADLOSS = "HEADL"; public const string w_HOURS = "HOU"; public const string w_HTOL = "HTOL"; public const string w_HW = "H-W"; public const string w_HYDRAULIC = "HYDR"; public const string w_IMGD = "IMGD"; public const string w_IS = "IS"; public const string w_JUNC = "Junc"; public const string w_KPA = "KPA"; public const string w_LEVEL = "LEVEL"; public const string w_LIFO = "LIFO"; public const string w_LIMITING = "LIMIT"; public const string w_LINK = "LINK"; public const string w_LPM = "LPM"; public const string w_LPS = "LPS"; public const string w_MAP = "MAP"; public const string w_MASS = "MASS"; public const string w_MAX = "MAXIMUM"; public const string w_MAXCHECK = "MAXCHECK"; public const string w_MESSAGES = "MESS"; public const string w_METERS = "METERS"; public const string w_MGD = "MGD"; public const string w_MIN = "MINIMUM"; public const string w_MINIMUM = "MINI"; public const string w_MINUTES = "MIN"; public const string w_MIXED = "MIXED"; public const string w_MLD = "MLD"; public const string w_MULTIPLY = "MULT"; public const string w_NO = "NO"; public const string w_NODE = "NODE"; public const string w_NONE = "NONE"; public const string w_NOT = "NOT"; public const string w_OPEN = "OPEN"; public const string w_ORDER = "ORDER"; public const string w_PAGE = "PAGE"; public const string w_PATTERN = "PATT"; public const string w_PBV = "PBV"; public const string w_PIPE = "Pipe"; public const string w_PM = "PM"; public const string w_POWER = "POWE"; public const string w_PRECISION = "PREC"; public const string w_PRESSURE = "PRES"; public const string w_PRICE = "PRICE"; public const string w_PRV = "PRV"; public const string w_PSI = "PSI"; public const string w_PSV = "PSV"; public const string w_PUMP = "Pump"; public const string w_QTOL = "QTOL"; public const string w_QUALITY = "QUAL"; public const string w_RANGE = "RANGE"; public const string w_REPORT = "REPO"; public const string w_RESERV = "Reser"; public const string w_ROUGHNESS = "ROUG"; public const string w_RQTOL = "RQTOL"; public const string w_RULE = "RULE"; public const string w_SAVE = "SAVE"; public const string w_SECONDS = "SEC"; public const string w_SEGMENTS = "SEGM"; public const string w_SETPOINT = "SETPOINT"; public const string w_SETTING = "SETT"; public const string w_SI = "SI"; public const string w_SPECGRAV = "SPEC"; public const string w_SPEED = "SPEE"; public const string w_START = "STAR"; public const string w_STATISTIC = "STAT"; public const string w_STATUS = "STATUS"; public const string w_STOP = "STOP"; public const string w_SUMMARY = "SUMM"; public const string w_SYSTEM = "SYST"; public const string w_TANK = "Tank"; public const string w_TCV = "TCV"; public const string w_TIME = "TIME"; public const string w_TOLERANCE = "TOLER"; public const string w_TRACE = "TRACE"; public const string w_TRIALS = "TRIAL"; public const string w_UNBALANCED = "UNBA"; public const string w_UNITS = "UNIT"; public const string w_USE = "USE"; public const string w_VALVE = "Valve"; // public const string w_VELOCITY = "VELO"; // public const string w_VERIFY = "VERI"; public const string w_VISCOSITY = "VISC"; // public const string w_VOLUME = "VOLU"; public const string w_WALL = "WALL"; public const string w_YES = "YES"; public const string wr_ABOVE = "ABOVE"; public const string wr_ACTIVE = "ACTIVE"; public const string wr_AND = "AND"; public const string wr_BELOW = "BELOW"; public const string wr_CLOCKTIME = "CLOCKTIME"; public const string wr_CLOSED = "CLOSED"; public const string wr_DEMAND = "DEMA"; public const string wr_DRAINTIME = "DRAI"; public const string wr_ELSE = "ELSE"; public const string wr_FILLTIME = "FILL"; public const string wr_FLOW = "FLOW"; public const string wr_GRADE = "GRADE"; public const string wr_HEAD = "HEAD"; public const string wr_IF = "IF"; public const string wr_IS = "IS"; public const string wr_JUNC = "Junc"; public const string wr_LEVEL = "LEVEL"; public const string wr_NOT = "NOT"; public const string wr_OPEN = "OPEN"; public const string wr_OR = "OR"; public const string wr_PIPE = "Pipe"; public const string wr_POWER = "POWE"; public const string wr_PRESSURE = "PRES"; public const string wr_PRIORITY = "PRIO"; public const string wr_PUMP = "Pump"; public const string wr_RESERV = "Reser"; public const string wr_RULE = "RULE"; public const string wr_SETTING = "SETT"; public const string wr_STATUS = "STATUS"; public const string wr_SYSTEM = "SYST"; public const string wr_TANK = "Tank"; public const string wr_THEN = "THEN"; public const string wr_TIME = "TIME"; public const string wr_VALVE = "Valve"; } // ReSharper restore InconsistentNaming }