#ifndef NODENAMES_H #define NODENAMES_H #include "../HanType.h" #include namespace HWP { enum class ENode { //HEAD BeginNum, FaceNameList, FontFace, Font, SubFont, TypeInfo, BorderFillList, BorderFill, LeftBorder, RightBorder, //10 TopBorder, BottomBorder, Diagonal, FillBrush, WindowBrush, Gradation, Color, ImageBrush, Image, CharShapeList, //20 CharShape, FontId, Ratio, CharSpacing, RelSize, CharOffset, Italic, Bold, Underline, Outline, //30 Shadow, Emboss, Engrave, SuperScript, SubScript, TabDefList, TabDef, TabItem, NumberingList, Numbering, //40 ParaHead, BulletList, Bullet, //ParaHead ParaShapeList, ParaShape, ParaMargin, ParaBorder, StyleList, Style, //BODY Body, //50 Section, Paragraph, Text, Char, SectionDef, Table, Picture, Container, Ole, Equation, //60 TextArt, Line, Rectangle, Ellipse, Arc, Polygon, Curve, ConnectLine, Tab, LineBreak, //70 Hyphen, NbSpace, FwSpace, Size, Posistion, OutSideMargin, InSideMargin, Caption, TransformMatrix, ScaleMatrix, //80 RotationMatrix, LineShape, ShadowEffect, GlowEffect, SoftEdgeEffect, ReflectionEffect, EffectsColor, DrawText, TextMargin, Header, //90 Footer, CellZoneList, CellZone, Row, Cell, AutoNum, AutoNumFormat, NewNum, FieldBegin, FieldEnd, //100 PageNum, FootNote, EndNote, ParaList, ColumnDef, ColumnLine, Script, Point, Segment, StartNumber, Hide, PagePropertie, PageMargin, FootNotePropertie, EndNotePropertie, PageBorderFill, PageOffset, MasterPage, //Only hwpx Lineseg, LinesegArray, Video, Switch, Case, Default, Slash, BackSlash }; #define MAX_TYPES 2 #define MAX_NODES 126 static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] = { // HWPX { //HEAD "hh:beginNum", "hh:fontfaces", "hh:fontface", "hh:font", "hh:substFont", "hh:typeInfo", "hh:borderFills", "hh:borderFill", "hh:leftBorder", "hh:rightBorder", //10 "hh:topBorder", "hh:bottomBorder", "hh:diagonal", "hc:fillBrush", "hc:winBrush", "hc:gradation", "hc:color", "hc:imgBrush", "hc:img", "hh:charProperties", //20 "hh:charPr", "hh:fontRef", "hh:ratio", "hh:spacing", "hh:relSz", "hh:offset", "hh:italic", "hh:bold", "hh:underline", "hh:outline", //30 "hh:shadow", "hh:emboss", "hh:engrave", "hh:supscript", "hh:subscript", "hh:tabProperties", "hh:tabPr", "hh:tabPr", "hh:numberings", "hh:numbering", //40 "hh:paraHead", "hh:bullets", "hh:bullet", //"PARAHEAD", "hh:paraProperties", "hh:paraPr", "hh:margin", "hh:border", "hh:styles", "hh:style", //BODY "", //50 "hs:sec", "hp:p", "hp:run", "hp:t", "hp:secPr", "hp:tbl", "hp:pic", "hp:container", "hp:ole", "hp:equation", //60 "hp:textart", "hp:line", "hp:rect", "hp:ellipse", "hp:arc", "hp:polygon", "hp:curve", "hp:connectLine", "hp:tab", "hp:lineBreak", //70 "hp:hyphen", "hp:nbSpace", "hp:fwSpace", "hp:sz", "hp:pos", "hp:outMargin", "hp:inMargin", "hp:caption", "hc:transMatrix", "hc:scaMatrix", "hc:rotMatrix", "hp:lineShape", "hp:shadow", "hp:glow", "hp:softEdge", "hp:reflection", "hp:effectsColor", "hp:drawText", "hp:textMargin", "hp:header", "hp:footer", "hp:cellzoneList", "hp:cellzone", "hp:tr", "hp:tc", "hp:autoNum", "hp:autoNumFormat", "hp:newNum", "hp:fieldBegin", "hp:fieldEnd", "hp:pageNum", "hp:footNote", "hp:endNote", "hp:subList", "hp:colPr", "hp:colLine", "hp:script", "hc:pt", "hp:seg", "hp:startNum", "hp:visibility", "hp:pagePr", "hp:margin", "hp:footNotePr", "hp:endNotePr", "hp:pageBorderFill", "hp:offset", "hp:masterPage", "hp:lineseg", "hp:linesegarray", "hp:video", "hp:switch", "hp:case", "hp:default", "hh:slash", "hh:backSlash" }, // HWPML { //HEAD "BEGINNUMBER", "FACENAMELIST", "FONTFACE", "FONT", "SUBSTFONT", "TYPEINFO", "BORDERFILLLIST", "BORDERFILL", "LEFTBORDER", "RIGHTBORDER", //10 "TOPBORDER", "BOTTOMBORDER", "DIAGONAL", "FILLBRUSH", "WINDOWBRUSH", "GRADATION", "COLOR", "IMAGEBRUSH", "IMAGE", "CHARSHAPELIST", //20 "CHARSHAPE", "FONTID", "RATIO", "CHARSPACING", "RELSIZE", "CHAROFFSET", "ITALIC", "BOLD", "UNDERLINE", "OUTLINE", //30 "SHADOW", "EMBOSS", "ENGRAVE", "SUPERSCRIPT", "SUBSCRIPT", "TABDEFLIST", "TABDEF", "TABITEM", "NUMBERINGLIST", "NUMBERING", //40 "PARAHEAD", "BULLETLIST", "BULLET", //"PARAHEAD", "PARASHAPELIST", "PARASHAPE", "PARAMARGIN", "PARABORDER", "STYLELIST", "STYLE", //BODY "BODY", //50 "SECTION", "P", "TEXT", "CHAR", "SECDEF", "TABLE", "PICTURE", "CONTAINER", "OLE", "EQUATION", //60 "TEXTART", "LINE", "RECTANGLE", "ELLIPSE", "ARC", "POLYGON", "CURVE", "CONNECTLINE", "TAB", "LINEBREAK", //70 "HYPHEN", "NBSPACE", "FWSPACE", "SIZE", "POSITION", "OUTSIDEMARGIN", "INSIDEMARGIN", "CAPTION", "TRANSMATRIX", "SCAMATRIX", "ROTMATRIX", "LINESHAPE", "SHADOWEFFECT", "GLOW", "SOFTEDGE", "REFLECTION", "EFFECTSCOLOR", "DRAWTEXT", "TEXTMARGIN", "HEADER", "FOOTER", "CELLZONELIST", "CELLZONE", "ROW", "CELL", "AUTONUM", "AUTONUMFORMAT", "NEWNUM", "FIELDBEGIN", "FIELDEND", "PAGENUM", "FOOTNOTE", "ENDNOTE", "PARALIST", "COLDEF", "COLUMNLINE", "SCRIPT", "POINT", "SEGMENT", "STARTNUMBER", "HIDE", "PAGEDEF", "PAGEMARGIN", "FOOTNOTESHAPE", "ENDNOTESHAPE", "PAGEBORDERFILL", "PAGEOFFSET", "MASTERPAGE", "", "", "", "", "", "", "", "" } }; inline const char* GetNodeName(ENode eNode, EHanType eType) { switch (eType) { case EHanType::HWPX: return NODE_NAMES[0][static_cast(eNode)]; case EHanType::HWPML: return NODE_NAMES[1][static_cast(eNode)]; default: return ""; } } inline bool Equals(ENode eNode, EHanType eType, const std::string& sNodeName) { switch (eType) { case EHanType::HWPX: return NODE_NAMES[0][static_cast(eNode)] == sNodeName; case EHanType::HWPML: return NODE_NAMES[1][static_cast(eNode)] == sNodeName; default: return false; } } enum class EAttribute { ParaShape, StyleId, CharShape, Href, SubPath, MediaType, Type, FaceName, FamilyType, SerifStyle, //10 Weight, Proportion, Contrast, StrokeVariation, ArmStyle, Letterform, Midline, XHeight, ThreeD, Shadow, //20 Slash, BackSlash, CrookedSlash, CounterSlash, CounterBackSlash, BreakCellSeparateLine, Width, Color, FaceColor, HatchColor, //30 HatchStyle, Alpha, Angle, CenterX, CenterY, Step, ColorNum, StepCenter, Value, Mode, //40 Bright, Effect, BinItem, Height, TextColor, ShadeColor, UseFontSpace, UseKerning, SymMask, BorderFillId, //50 Shape, OffsetX, OffsetY, AutoTabLeft, AutoTabRight, Leader, Start, Level, Aligment, UseInstWidth, //60 AutoIndent, WidthAdjust, TextOffsetType, TextOffset, NumFormat, Char, Image, Align, VerAlign, HeadingType, //70 TabDef, BreakLatinWord, BreakNonLatinWord, Condense, WidowOrphan, KeepWithNext, KeepLines, PageBreakBefore, FontLineHeight, SnapToGrid, //80 LineWrap, AutoSpaceEAsianEng, AutoSpaceEAsianNum, Indent, Left, Right, Prev, Next, LineSpacingType, LineSpacing, //90 BorderFill, OffsetLeft, OffsetRight, OffsetTop, OffsetBottom, Connect, IgnoreMargin, EngName, NextStyle, LangId, //100 InstId, LockForm, Name, TextFlow, TextWrap, ZOrder, NumberingType, WidthRelTo, HeightRelTo, TreatAsChar, //110 AffectLSpacing, VertRelTo, VertAlign, HorzRelTo, HorzAlign, VertOffset, HorzOffset, FlowWithText, AllowOverlap, Top, //120 Bottom, Side, FullSize, Gap, LastWidth, MatrixElement1_1, MatrixElement1_2, MatrixElement2_1, MatrixElement2_2, MatrixElementOffsetX, // 130 MatrixElementOffsetY, HeadStyle, HeadSize, TailStyle, TailSize, Radius, Direction, Distance, RotationStyle, FadeDirection, //140 BinData, RepeatHeader, RowCount, ColCount, CellSpacing, StartRowAddr, StartColAddr, EndRowAddr, EndColAddr, NumberType, //150 SuperScript, SubScript, FieldId, Pos, FormatType, SideChar, ColumnCount, SameSize, SameGap, Version, //160 BaseLine, BaseUnit, LineMode, X, Y, X1, Y1, X2, Y2, FontName, //170 FontStyle, FontType, TextShape, Spacing, Style, TextDirection, SpaceColumns, TabStop, OutlineShapeId, PageStartsOn, Page, Figure, Table, Equation, HideHeader, HideFooter, HideMasterPage, HideBorder, HideFill, HidePageNumPos, HideEmptyLine, Landscape, GutterType, Header, Footer, Gutter, TextBorder, HeaderInside, FooterInside, FillArea, PageBreak, ColumnBreak, }; #define MAX_ATTRIBUTES 202 //TODO:: добавить все аргументы static constexpr const char* ATTRUBUTE_NAMES[MAX_TYPES][MAX_ATTRIBUTES] = { // HWPX { "paraPrIDRef", "styleIDRef", "charPrIDRef", "href", "sub-path", "media-type", "type", "face", "familyType", "serifStyle", //10 "weight", "proportion", "contrast", "strokeVariation", "armStyle", "letterform", "midline", "xHeight", "threeD", "shadow", //20 "", "", "", "", "", "breakCellSeparateLine", "width", "color", "faceColor", "hatchColor", //30 "hatchStyle", "alpha", "angle", "centerX", "centerY", "step", "colorNum", "stepCenter", "value", "mode", //40 "bright", "effect", "binaryItemIDRef", "height", "textColor", "shadeColor", "useFontSpace", "useKerning", "symMark", "borderFillIDRef",//50 "shape", "offsetX", "offsetY", "autoTabLeft", "autoTabRight", "leader", "start", "level", "align", "useInstWidth", //60 "autoIndent", "widthAdjust", "textOffsetType", "textOffset", "numFormat", "charPrIDRef", "", "align", "verAlign", "", //70 "tabPrIDRef", "breakLatinWord", "breakNonLatinWord", "", "widowOrphan", "keepWithNext", "", "pageBreakBefore", "", "", //80 "LineWrap", "eAsianEng", "eAsianNum", "indent", "left", "right", "prev", "next", "", "", //90 "borderFillIDRef", "offsetLeft", "offsetRight", "offsetTop", "offsetBottom", "connect", "ignoreMargin", "engName", "nextStyleIDRef", "langID", //100 "id", "lockForm", "name", "textFlow", "textWrap", "zOrder", "numberingType", "widthRelTo", "heightRelTo", "treatAsChar", //110 "affectLSpacing", "vertRelTo", "vertAlign", "horzRelTo", "horzAlign", "vertOffset", "horzOffset", "flowWithText", "allowOverlap", "top", //120 "bottom", "side", "fullSz", "gap", "lastWidth", "e1", "e2", "e4", "e5", "e3", "e6", "headStyle", "headSz", "tailStyle", "tailSz", "radius", "direction", "distance", "rotationStyle", "fadeDirection", "id", "repeatHeader", "rowCnt", "colCnt", "cellSpacing", "startRowAddr", "startColAddr", "endRowAddr", "endColAddr", "numType", "supscript", "subscript", "fieldid", "pos", "formatType", "sideChar", "colCount", "sameSz", "sameGap", "version", "baseLine", "baseUnit", "lineMode", "x", "y", "x1", "y1", "x2", "y2", "fontName", "fontStyle", "fontType", "textShape", "spacing", "style", "textDirection", "spaceColumns", "tabStop", "outlineShapeIDRef", "pageStartsOn", "page", "pic", "tbl", "equation", "hideFirstHeader", "hideFirstFooter", "hideFirstMasterPage", "border", "fill", "hideFirstPageNum", "hideFirstEmptyLine", "landscape", "gutterType", "header", "footer", "gutter", "textBorder", "headerInside", "footerInside", "fillArea", "pageBreak", "columnBreak" }, // HWPML { "ParaShape", "Style", "CharShape", "APath", "RPath", "Format", "Type", "Name", "FamilyType", "SerifStyle", //10 "Weight", "Proportion", "Contrast", "StrokeVariation", "ArmStyle", "Letterform", "Midline", "XHeight", "ThreeD", "Shadow", //20 "Slash", "BackSlash", "CrookedSlash", "CounterSlash", "CounterBackSlash", "BreakCellSeparateLine", "Width", "Color", "FaceColor", "HatchColor", //30 "HatchStyle", "Alpha", "Angle", "CenterX", "CenterY", "Step", "ColorNum", "StepCenter", "Value", "Mode", //40 "Bright", "Effect", "BinItem", "Height", "TextColor", "ShadeColor", "UseFontSpace", "UseKerning", "SymMask", "BorderFillId", //50 "Shape", "OffsetX", "OffsetY", "AutoTabLeft", "AutoTabRight", "Leader", "Start", "Level", "Aligment", "UseInstWidth", //60 "AutoIndent", "WidthAdjust", "TextOffsetType", "TextOffset", "NumFormat", "Char", "Image", "Align", "VerAlign", "HeadingType", //70 "TabDef", "BreakLatinWord", "BreakNonLatinWord", "Condense", "WidowOrphan", "KeepWithNext", "KeepLines", "PageBreakBefore", "FontLineHeight", "SnapToGrid", //80 "LineWrap", "AutoSpaceEAsianEng", "AutoSpaceEAsianNum", "Indent", "Left", "Right", "Prev", "Next", "LineSpacingType", "LineSpacing", //90 "BorderFill", "OffsetLeft", "OffsetRight", "OffsetTop", "OffsetBottom", "Connect", "IgnoreMargin", "EngName", "NextStyle", "LangId", //100 "InstId", "LockForm", "Name", "TextFlow", "TextWrap", "ZOrder", "NumberingType", "WidthRelTo", "HeightRelTo", "TreatAsChar", "AffectLSpacing", "VertRelTo", "VertAlign", "HorzRelTo", "HorzAlign", "VertOffset", "HorzOffset", "FlowWithText", "AllowOverlap", "Top", "Bottom", "Side", "FullSize", "Gap", "LastWidth", "E1", "E2", "E4", "E5", "E3", "E6", "HeadStyle", "HeadSize", "TailStyle", "TailSize", "Radius", "Direction", "Distance", "RotationStyle", "FadeDirection", "BinData", "RepeatHeader", "RowCount", "ColCount", "CellSpacing", "StartRowAddr", "StartColAddr", "EndRowAddr", "EndColAddr", "NumberType", "Superscript", "Subscript", "InstId", "Pos", "FormatType", "SideChar", "Count", "SameSize", "SameGap", "Version", "BaseUnit", "BaseLine", "LineMode", "X", "Y", "X1", "Y1", "X2", "Y2", "FontName", "FontStyle", "FontType", "TextShape", "Spacing", "Style", "TextDirection", "SpaceColumns", "TabStop", "OutlineShape", "PageStartsOn", "Page", "Figure", "Table", "Equation", "Header", "Footer", "MasterPage", "Border", "Fill", "PageNumPos", "EmptyLine", "Landscape", "GutterType", "Header", "Footer", "Gutter", "TextBorder", "HeaderInside", "FooterInside", "FillArea", "PageBreak", "ColumnBreak" } }; inline const char* GetAttributeName(EAttribute eNode, EHanType eType) { switch (eType) { case EHanType::HWPX: return ATTRUBUTE_NAMES[0][static_cast(eNode)]; case EHanType::HWPML: return ATTRUBUTE_NAMES[1][static_cast(eNode)]; default: return ""; } } inline bool Equals(EAttribute eAttribute, EHanType eType, const std::string& sAttributeName) { switch (eType) { case EHanType::HWPX: return ATTRUBUTE_NAMES[0][static_cast(eAttribute)] == sAttributeName; case EHanType::HWPML: return ATTRUBUTE_NAMES[1][static_cast(eAttribute)] == sAttributeName; default: return false; } } // TODO:: пока всё в одном месте. Возможно стоит лучше разделить по соответствующим классам enum class EValue { None, Center, CenterBelow, CenterAbove, All, RealPic, GrayScale, BlackWhite, Drop, Continuous, //10 Left, Right, Percent, HwpUnit, Digit, HangulSyllable, HangulJamo, CircledDigit, LatinSmall, CircledHangulSyllable, //20 CircledHangulJamo, RomanSmall, Para, Char, BothSides, LeftOnly, RightOnly, LargestOnly, Square, TopAndBottom, //30 BehindText, InFrontOfText, Figure, Table, Equation, Top, Bottom, SmallSmall, SmallMedium, SmallLarge, //40 MediumSmall, MediumMedium, MediumLarge, LargeSmall, LargeMedium, LargeLarge, Normal, Arrow, Spear, ConcaveArrow, //50 EmptyDiamond, EmptyCircle, EmptyBox, RomanCapital, LatinCapital, CircledLatinCapital, CircledLatinSmall, HangulPhonetic, Ideograph, CircledIdeograph, //60 DecagonCircle, DecagonCircleHanja, Symbol, UserChar, Hyperlink, Bookmark, Line, Curve, Page, Footnote, //70 Endnote, TotalPage, Inside, Outside, Paper, Column, Absolute, Solid, Dash, Dot, //80 DashDot, DashDotDot, LongDash, Circle, DoubleSlim, Thick, SlimThick, ThickSlim, SlimThickSlim, Diamond, //90 Box, Discrete, Outline, Number, Bullet, Distribute, DistributeSpace, Justify, Baseline, Pie, //100 Chord, TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight, TopOuter, BottomOuter, TopInner, //110 BottomInner, Both, Even, Odd, LeftRight, TopBottom, Border }; #define MAX_VALUES 117 static constexpr const char* VALUE_NAMES[MAX_TYPES][MAX_VALUES] = { //HWPX { "NONE", "CENTER", "CENTER_BELOW", "CENTER_ABOVE", "ALL", "REAL_PIC", "GRAY_SCALE", "BLACK_WHITE", "DROP", "CONTINUOUS", //10 "LEFT", "RIGHT", "PERCENT", "HWPUNIT", "DIGIT", "HANGUL_SYLLABLE", "HANGUL_JAMO", "CIRCLED_DIGIT", "LATIN_SMALL", "CIRCLED_HANGUL_SYLLABLE", //20 "CIRCLED_HANGUL_JAMO", "ROMAN_SMALL", "PARA", "CHAR", "BOTH_SIDES", "LEFT_ONLY", "RIGHT_ONLY", "LARGEST_ONLY", "SQUARE", "TOP_AND_BOTTOM", "BEHIND_TEXT", "IN_FRONT_OF_TEXT", "PICTURE", "TABLE", "EQUATION", "TOP", "BOTTOM", "SMALL_SMALL", "SMALL_MEDIUM", "SMALL_LARGE", "MEDIUM_SMALL", "MEDIUM_MEDIUM", "MEDIUM_LARGE", "LARGE_SMALL", "LARGE_MEDIUM", "LARGE_LARGE", "NORMAL", "ARROW", "SPEAR", "CONCAVE_ARROW", "EMPTY_DIAMOND", "EMPTY_CIRCLE", "EMPTY_BOX", "ROMAN_CAPITAL", "LATIN_CAPITAL", "CIRCLED_LATIN_CAPITAL", "CIRCLED_LATIN_SMALL", "HANGUL_PHONETIC", "IDEOGRAPH", "CIRCLED_IDEOGRAPH", "DECAGON_CIRCLE", "DECAGON_CRICLE_HANGJA", "SYMBOL", "USER_CHAR", "HYPERLINK", "BOOKMARK", "LINE", "CURVE", "PAGE", "FOOTNOTE", "ENDNOTE", "TOTAL_PAGE", "INSIDE", "OUTSIDE", "PAPER", "COLUMN", "ABSOLUTE", "SOLID", "DASH", "DOT", "DASH_DOT", "DASH_DOT_DOT", "LONG_DASH", "CIRCLE", "DOUBLE_SLIM", "THICK", "SLIM_THICK", "THICK_SLIM", "SLIM_THICK_SLIM", "DIAMOND", "BOX", "DISCRETE", "OUTLINE", "NUMBER", "BULLET", "DISTRIBUTE", "DISTRIBUTE_SPACE", "JUSTIFY", "BASELINE", "PIE", "CHORD", "TOP_LEFT", "TOP_CENTER", "TOP_RIGHT", "BOTTOM_LEFT", "BOTTOM_CENTER", "BOTTOM_RIGHT", "TOP_OUTER", "BOTTOM_OUTER", "TOP_INNER", "BOTTOM_INNER", "BOTH", "EVEN", "ODD", "LEFT_RIGHT", "TOP_BOTTOM", "BORDER" }, //HWPML { "None", "Center", "CenterBelow", "CenterAbove", "All", "RealPic", "GrayScale", "BlackWhite", "Drop", "Cont", //10 "Left", "Right", "Percent", "HwpUnit", "Digit", "HangulSyllable", "HangulJamo", "CircledDigit", "LatinSmall", "CircledHangulSyllable", //20 "CircledHangulJamo", "RomanSmall", "Para", "Char", "BothSides", "LeftOnly", "RightOnly", "LargestOnly", "Square", "TopAndBottom", "BehindText", "InFrontOfText", "Figure", "Table", "Equation", "Top", "Bottom", "SmallSmall", "SmallMedium", "SmallLarge", "MediumSmall", "MediumMedium", "MediumLarge", "LargeSmall", "LargeMedium", "LargeLarge", "Normal", "Arrow", "Spear", "ConcaveArrow", "EmptyDiamond", "EmptyCircle", "EmptyBox", "RomanCapital", "LatinCapital", "CircledLatinCapital", "CircledLatinSmall", "HangulPhonetic", "Ideograph", "CircledIdeograph", "DecagonCircle", "DecagonCircleHanja", "Symbol", "UserChar", "Hyperlink", "Bookmark", "Line", "Curve", "Page", "Footnote", "Endnote", "TotalPage", "Inside", "Outside", "Paper", "Column", "Absolute", "Solid", "Dash", "Dot", "DashDot", "DashDotDot", "LongDash", "Circle", "DoubleSlim", "Thick", "SlimThick", "ThickSlim", "SlimThickSlim", "Diamond", "Box", "Discrete", "Outline", "Number", "Bullet", "Distribute", "DistributeSpace", "Justify", "Baseline", "Pie", "Chord", "TopLeft", "TopCenter", "TopRight", "BottomLeft", "BottomCenter", "BottomRight", "TopOuter", "BottomOuter", "TopInner", "BottomInner", "Both", "Even", "Odd", "LeftRight", "TopBottom", "Border" } }; inline const char* GetValueName(EValue eValue, EHanType eType) { switch (eType) { case EHanType::HWPX: return VALUE_NAMES[0][static_cast(eValue)]; case EHanType::HWPML: return VALUE_NAMES[1][static_cast(eValue)]; default: return ""; } } #define CHECK_IF_ATTRIBUTE(type) if (GetAttributeName(EAttribute::type, eType) == sAttributeName) #define CHECK_ELSE_IF_ATTRIBUTE(type) else CHECK_IF_ATTRIBUTE(type) } #endif // NODENAMES_H