From cd2e7ab7ef89a5c3c1935281009729bff0f357e2 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 8 Jan 2022 03:01:04 +0000 Subject: CTAN sync 202201080301 --- graphics/asymptote/base/asy.vim | 372 +++++++++++++++++------------ graphics/asymptote/base/geometry.asy | 2 +- graphics/asymptote/base/patterns.asy | 4 +- graphics/asymptote/base/three.asy | 5 - graphics/asymptote/base/three_surface.asy | 37 +-- graphics/asymptote/base/v3d.asy | 19 +- graphics/asymptote/base/v3dheadertypes.asy | 2 +- graphics/asymptote/base/v3dtypes.asy | 2 +- 8 files changed, 237 insertions(+), 206 deletions(-) (limited to 'graphics/asymptote/base') diff --git a/graphics/asymptote/base/asy.vim b/graphics/asymptote/base/asy.vim index 4cb897f131..7d0983d07c 100644 --- a/graphics/asymptote/base/asy.vim +++ b/graphics/asymptote/base/asy.vim @@ -1,7 +1,7 @@ " Vim syntax file -" Language: Asymptote -" Maintainer: Andy Hammerlindl -" Last Change: 2005 Aug 23 +" Language: Asymptote +" Maintainer: Andy Hammerlindl +" Last Change: 2022 Jan 05 " Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's " Java syntax file. @@ -9,132 +9,207 @@ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 - syntax clear + syn clear elseif exists("b:current_syntax") finish endif -" A bunch of useful C keywords -syn keyword asyStatement break return continue unravel -syn keyword asyConditional if else -syn keyword asyRepeat while for do -syn keyword asyExternal access from import include -syn keyword asyOperator new operator - -syn keyword asyTodo contained TODO FIXME XXX - -" asyCommentGroup allows adding matches for special things in comments -syn cluster asyCommentGroup contains=asyTodo - -" String and Character constants -" Highlight special characters (those proceding a double backslash) differently -syn match asySpecial display contained "\\\\." -" Highlight line continuation slashes -syn match asySpecial display contained "\\$" -syn region asyString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=asySpecial - " asyCppString: same as asyString, but ends at end of line -if 0 -syn region asyCppString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=asySpecial -endif +" useful C/C++/Java keywords +syn keyword asyStatement break return continue unravel +syn keyword asyConditional if else +syn keyword asyRepeat while for do +syn keyword asyExternal access from import include +syn keyword asyOperator new operator + +" basic asymptote keywords +syn keyword asyConstant VERSION +syn keyword asyConstant true false default infinity inf nan +syn keyword asyConstant null nullframe nullpath nullpen +syn keyword asyConstant intMin intMax realMin realMax +syn keyword asyConstant realEpsilon realDigits +syn keyword asyPathSpec and cycle controls tension atleast curl +syn keyword asyStorageClass static public restricted private explicit +syn keyword asyStructure struct typedef +syn keyword asyType void bool bool3 int real string file +syn keyword asyType pair triple transform guide path pen frame +syn keyword asyType picture -"when wanted, highlight trailing white space -if exists("asy_space_errors") - if !exists("asy_no_trail_space_error") - syn match asySpaceError display excludenl "\s\+$" +" module specific keywords +if exists("asy_syn_plain") + syn keyword asyConstant currentpicture currentpen defaultpen + syn keyword asyConstant inch inches cm mm bp pt up down right left + syn keyword asyConstant E NE N NW W SW S SE + syn keyword asyConstant ENE NNE NNW WNW WSW SSW SSE ESE + syn keyword asyConstant I pi twopi + syn keyword asyConstant CCW CW + syn keyword asyConstant undefined sqrtEpsilon Align mantissaBits + syn keyword asyConstant identity zeroTransform invert + syn keyword asyConstant stdin stdout + syn keyword asyConstant unitsquare unitcircle circleprecision + syn keyword asyConstant solid dotted Dotted dashed dashdotted + syn keyword asyConstant longdashed longdashdotted + syn keyword asyConstant squarecap roundcap extendcap + syn keyword asyConstant miterjoin roundjoin beveljoin + syn keyword asyConstant zerowinding evenodd basealign nobasealign + syn keyword asyConstant black white gray red green blue Cyan Magenta + syn keyword asyConstant Yellow Black cyan magenta yellow palered + syn keyword asyConstant palegreen paleblue palecyan palemagenta + syn keyword asyConstant paleyellow palegray lightred lightgreen + syn keyword asyConstant lightblue lightcyan lightmagenta lightyellow + syn keyword asyConstant lightgray mediumred mediumgreen mediumblue + syn keyword asyConstant mediumcyan mediummagenta mediumyellow + syn keyword asyConstant mediumgray heavyred heavygreen heavyblue + syn keyword asyConstant heavycyan heavymagenta lightolive heavygray + syn keyword asyConstant deepred deepgreen deepblue deepcyan + syn keyword asyConstant deepmagenta deepyellow deepgray darkred + syn keyword asyConstant darkgreen darkblue darkcyan darkmagenta + syn keyword asyConstant darkolive darkgray orange fuchsia chartreuse + syn keyword asyConstant springgreen purple royalblue salmon brown + syn keyword asyConstant olive darkbrown pink palegrey lightgrey + syn keyword asyConstant mediumgrey grey heavygrey deepgrey darkgrey + + if exists("asy_syn_texcolors") + syn keyword asyConstant GreenYellow Yellow Goldenrod Dandelion + syn keyword asyConstant Apricot Peach Melon YellowOrange Orange + syn keyword asyConstant BurntOrange Bittersweet RedOrange Mahogany + syn keyword asyConstant Maroon BrickRed Red OrangeRed RubineRed + syn keyword asyConstant WildStrawberry Salmon CarnationPink Magenta + syn keyword asyConstant VioletRed Rhodamine Mulberry RedViolet + syn keyword asyConstant Fuchsia Lavender Thistle Orchid DarkOrchid + syn keyword asyConstant Purple Plum Violet RoyalPurple BlueViolet + syn keyword asyConstant Periwinkle CadetBlue CornflowerBlue + syn keyword asyConstant MidnightBlue NavyBlue RoyalBlue Blue + syn keyword asyConstant Cerulean Cyan ProcessBlue SkyBlue Turquoise + syn keyword asyConstant TealBlue Aquamarine BlueGreen Emerald + syn keyword asyConstant JungleGreen SeaGreen Green ForestGreen + syn keyword asyConstant PineGreen LimeGreen YellowGreen SpringGreen + syn keyword asyConstant OliveGreen RawSienna Sepia Brown Tan Gray + syn keyword asyConstant Black White endif - if !exists("asy_no_tab_space_error") - syn match asySpaceError display " \+\t"me=e-1 + + if exists("asy_syn_x11colors") + syn keyword asyConstant AliceBlue AntiqueWhite Aqua Aquamarine Azure + syn keyword asyConstant Beige Bisque Black BlanchedAlmond Blue + syn keyword asyConstant BlueViolet Brown BurlyWood CadetBlue + syn keyword asyConstant Chartreuse Chocolate Coral CornflowerBlue + syn keyword asyConstant Cornsilk Crimson Cyan DarkBlue DarkCyan + syn keyword asyConstant DarkGoldenrod DarkGray DarkGreen DarkKhaki + syn keyword asyConstant DarkMagenta DarkOliveGreen DarkOrange + syn keyword asyConstant DarkOrchid DarkRed DarkSalmon DarkSeaGreen + syn keyword asyConstant DarkSlateBlue DarkSlateGray DarkTurquoise + syn keyword asyConstant DarkViolet DeepPink DeepSkyBlue DimGray + syn keyword asyConstant DodgerBlue FireBrick FloralWhite ForestGreen + syn keyword asyConstant Fuchsia Gainsboro GhostWhite Gold Goldenrod + syn keyword asyConstant Gray Green GreenYellow Honeydew HotPink + syn keyword asyConstant IndianRed Indigo Ivory Khaki Lavender + syn keyword asyConstant LavenderBlush LawnGreen LemonChiffon + syn keyword asyConstant LightBlue LightCoral LightCyan + syn keyword asyConstant LightGoldenrodYellow LightGreen LightGrey + syn keyword asyConstant LightPink LightSalmon LightSeaGreen + syn keyword asyConstant LightSkyBlue LightSlateGray LightSteelBlue + syn keyword asyConstant LightYellow Lime LimeGreen Linen Magenta + syn keyword asyConstant Maroon MediumAquamarine MediumBlue + syn keyword asyConstant MediumOrchid MediumPurple MediumSeaGreen + syn keyword asyConstant MediumSlateBlue MediumSpringGreen + syn keyword asyConstant MediumTurquoise MediumVioletRed MidnightBlue + syn keyword asyConstant MintCream MistyRose Moccasin NavajoWhite + syn keyword asyConstant Navy OldLace Olive OliveDrab Orange + syn keyword asyConstant OrangeRed Orchid PaleGoldenrod PaleGreen + syn keyword asyConstant PaleTurquoise PaleVioletRed PapayaWhip + syn keyword asyConstant PeachPuff Peru Pink Plum PowderBlue Purple + syn keyword asyConstant Red RosyBrown RoyalBlue SaddleBrown Salmon + syn keyword asyConstant SandyBrown SeaGreen Seashell Sienna Silver + syn keyword asyConstant SkyBlue SlateBlue SlateGray Snow SpringGreen + syn keyword asyConstant SteelBlue Tan Teal Thistle Tomato Turquoise + syn keyword asyConstant Violet Wheat White WhiteSmoke Yellow + syn keyword asyConstant YellowGreen endif -endif -"catch errors caused by wrong parenthesis and brackets -syn cluster asyParenGroup contains=asyParenError,asyIncluded,asySpecial,asyCommentSkip,asyCommentString,asyComment2String,@asyCommentGroup,asyCommentStartError,asyUserCont,asyUserLabel,asyBitField,asyCommentSkip,asyOctalZero,asyCppOut,asyCppOut2,asyCppSkip,asyFormat,asyNumber,asyFloat,asyOctal,asyOctalError,asyNumbersCom -if exists("asy_no_bracket_error") - syn region asyParen transparent start='(' end=')' contains=ALLBUT,@asyParenGroup,asyCppParen,asyCppString - " asyCppParen: same as asyParen but ends at end-of-line; used in asyDefine - syn region asyCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@asyParenGroup,asyParen,asyString - syn match asyParenError display ")" - syn match asyErrInParen display contained "[{}]" -else - syn region asyParen transparent start='(' end=')' contains=ALLBUT,@asyParenGroup,asyCppParen,asyErrInBracket,asyCppBracket,asyCppString - " asyCppParen: same as asyParen but ends at end-of-line; used in asyDefine - syn region asyCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@asyParenGroup,asyErrInBracket,asyParen,asyBracket,asyString -if 0 - syn match asyParenError display "[\])]" - syn match asyErrInParen display contained "[\]]" -endif - syn region asyBracket transparent start='\[' end=']' contains=ALLBUT,@asyParenGroup,asyErrInParen,asyCppParen,asyCppBracket,asyCppString - " asyCppBracket: same as asyParen but ends at end-of-line; used in asyDefine - syn region asyCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@asyParenGroup,asyErrInParen,asyParen,asyBracket,asyString - syn match asyErrInBracket display contained "[);]" + if exists("asy_syn_three") + syn keyword asyType path3 guide3 transform3 + syn keyword asyType projection light material patch surface tube + syn keyword asyConstant currentprojection currentlight defaultrender + syn keyword asyConstant identity4 O X Y Z + syn keyword asyConstant nolight nullpens + syn keyword asyConstant unitsphere unithemisphere unitplane octant1 + syn keyword asyConstant unitcone unitsolidcone unitcube unitcylinder + syn keyword asyConstant unitdisk unittube + endif endif -"integer number, or floating point number without a dot and with "f". -syn case ignore -syn match asyNumbers display transparent "\<\d\|\.\d" contains=asyNumber,asyFloat -syn match asyNumber display contained "\d\+" -"floating point number, with dot, optional exponent -syn match asyFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=" -"floating point number, starting with a dot, optional exponent -syn match asyFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=" -"floating point number, without dot, with exponent -syn match asyFloat display contained "\d\+e[-+]\=\d\+" -syn case match +" string constants +syn region asyCString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=asyCSpecial +syn match asyCSpecial display contained +\\\(['"?\\abfnrtv]\|\o\{1,3}\)+ +syn match asyCSpecial display contained +\\\(x[0-9A-F]\{1,2\}\|$\)+ +" double quoted strings only special character is \" +syn region asyString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=asySpecial +syn match asySpecial display contained +\(\\\)\@1= 508 || !exists("did_asy_syn_inits") command -nargs=+ HiLink hi def link endif - HiLink asyFormat asySpecial - HiLink asyCppString asyString - HiLink asyCommentL asyComment - HiLink asyCommentStart asyComment - HiLink asyLabel Label - HiLink asyUserLabel Label - HiLink asyConditional Conditional - HiLink asyRepeat Repeat - HiLink asyCharacter Character - HiLink asySpecialCharacter asySpecial - HiLink asyNumber Number - HiLink asyOctal Number - HiLink asyOctalZero PreProc " link this to Error if you want - HiLink asyFloat Float - HiLink asyOctalError asyError - HiLink asyParenError asyError - HiLink asyErrInParen asyError - HiLink asyErrInBracket asyError - HiLink asyCommentError asyError - HiLink asyCommentStartError asyError - HiLink asySpaceError asyError - HiLink asySpecialError asyError - HiLink asyOperator Operator - HiLink asyStructure Structure - HiLink asyStorageClass StorageClass - HiLink asyExternal Include - HiLink asyPreProc PreProc - HiLink asyDefine Macro - HiLink asyIncluded asyString - HiLink asyError Error - HiLink asyStatement Statement - HiLink asyPreCondit PreCondit - HiLink asyType Type - HiLink asyConstant Constant - HiLink asyCommentString asyString - HiLink asyComment2String asyString - HiLink asyCommentSkip asyComment - HiLink asyString String - HiLink asyComment Comment - HiLink asySpecial SpecialChar - HiLink asyTodo Todo - HiLink asyCppSkip asyCppOut - HiLink asyCppOut2 asyCppOut - HiLink asyCppOut Comment - HiLink asyPathSpec Statement - + HiLink asyCommentL asyComment + HiLink asyConditional Conditional + HiLink asyRepeat Repeat + HiLink asyNumber Number + HiLink asyNumberError asyError + HiLink asyCurlyError asyError + HiLink asyBracketError asyError + HiLink asyParenError asyError + HiLink asyCommentError asyError + HiLink asyCommentStartError asyError + HiLink asyOperator Operator + HiLink asyStructure Structure + HiLink asyStorageClass StorageClass + HiLink asyExternal Include + HiLink asyDefine Macro + HiLink asyError Error + HiLink asyStatement Statement + HiLink asyType Type + HiLink asyConstant Constant + HiLink asyCommentString asyString + HiLink asyCommentCString asyString + HiLink asyCommentLString asyString + HiLink asyCommentLCString asyString + HiLink asyCommentSkip asyComment + HiLink asyString String + HiLink asyCString String + HiLink asyComment Comment + HiLink asySpecial SpecialChar + HiLink asyCSpecial SpecialChar + HiLink asyTodo Todo + HiLink asyPathSpec Statement delcommand HiLink endif let b:current_syntax = "c" - -" vim: ts=8 diff --git a/graphics/asymptote/base/geometry.asy b/graphics/asymptote/base/geometry.asy index 420d5bdc45..9f4be8d15c 100644 --- a/graphics/asymptote/base/geometry.asy +++ b/graphics/asymptote/base/geometry.asy @@ -6051,7 +6051,7 @@ triangle extouch(triangle t) return triangle(A, B, C); } -/**/ +/**/ triangle incentral(triangle t) {/*Return the incentral triangle of the triangle 't'. It is the triangle whose vertices are determined by the intersections of the diff --git a/graphics/asymptote/base/patterns.asy b/graphics/asymptote/base/patterns.asy index e71690fbe9..de0fc02d03 100644 --- a/graphics/asymptote/base/patterns.asy +++ b/graphics/asymptote/base/patterns.asy @@ -13,9 +13,9 @@ frame tiling(string name, picture pic, pair lb=0, pair rt=0) /XStep "+format(s,pmax.x-pmin.x,"C")+" /YStep "+format(s,pmax.y-pmin.y,"C")+" /PaintProc {pop"); - begingroup(tiling); + gsave(tiling); add(tiling,f); - endgroup(tiling); + grestore(tiling); postscript(tiling,"} >> matrix makepattern /"+name+" exch def"); diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy index ab30848444..c208f59df8 100644 --- a/graphics/asymptote/base/three.asy +++ b/graphics/asymptote/base/three.asy @@ -56,8 +56,6 @@ struct render // General parameters: real margin; // shrink amount for rendered openGL viewport, in bp. - bool labelfill; // fill PRC subdivision cracks in unlighted labels - bool partnames; // assign part name indices to compound objects bool defaultnames; // assign default names to unnamed objects interaction interaction; // billboard interaction mode @@ -72,7 +70,6 @@ struct render bool3 merge=render.merge, int sphere=render.sphere, real margin=render.margin, - bool labelfill=render.labelfill, bool partnames=render.partnames, bool defaultnames=render.defaultnames, interaction interaction=render.interaction) @@ -84,7 +81,6 @@ struct render this.merge=merge; this.sphere=sphere; this.margin=margin; - this.labelfill=labelfill; this.partnames=partnames; this.defaultnames=defaultnames; this.interaction=interaction; @@ -101,7 +97,6 @@ defaultrender.tessellate=false; defaultrender.merge=false; defaultrender.margin=0.02; defaultrender.sphere=NURBSsphere; -defaultrender.labelfill=true; defaultrender.partnames=false; defaultrender.defaultnames=true; defaultrender.interaction=Embedded; diff --git a/graphics/asymptote/base/three_surface.asy b/graphics/asymptote/base/three_surface.asy index e993c8d713..d0d79de464 100644 --- a/graphics/asymptote/base/three_surface.asy +++ b/graphics/asymptote/base/three_surface.asy @@ -1380,6 +1380,7 @@ void draw3D(frame f, patch s, material m, int digits=s.planar && !straight ? 12 : settings.digits; if(s.colors.length > 0) { + primitive=false; if(prc() && light.on()) straight=false; // PRC vertex colors (for quads only) ignore lighting m=material(m); @@ -1489,8 +1490,6 @@ void draw(picture pic=currentpicture, triple[] v, int[][] vi, project(v[vii[2]],P)--cycle; pen p=color(n[ni[i][0]],m,light); fill(pic,g,p); - if(prc && opacity(m.diffuse()) == 1) // Fill subdivision cracks - draw(pic,g,p); } } } @@ -1538,8 +1537,11 @@ void draw(transform t=identity(), frame f, surface s, int nu=1, int nv=1, bool prc=prc(); if(s.draw != null && (primitive() || (prc && s.PRCprimitive))) { bool noprerender=settings.prerender == 0; - for(int k=0; k < s.s.length; ++k) - draw3D(f,s.s[k],surfacepen[k],light,render,primitive=noprerender); + for(int k=0; k < s.s.length; ++k) { + patch p=s.s[k]; + draw3D(f,p,surfacepen[k],light,render,primitive=noprerender); + if(p.colors.length > 0) noprerender=false; + } if(noprerender) s.draw(f,s.T,surfacepen,light,render); } else { @@ -1851,13 +1853,8 @@ void label(frame f, Label L, triple position, align align=NoAlign, begingroup3(f2,Render); begingroup3(f3,Render); } - for(patch S : s.s) { - S=centering*S; - draw3D(f3,S,L.p,light,Render); - // Fill subdivision cracks - if(prc && render.labelfill && opacity(L.p) == 1 && !lighton) - _draw(f3,S.external(),position,L.p,light,interaction); - } + for(patch S : s.s) + draw3D(f3,centering*S,L.p,light,Render); endgroup3(f3); if(L.defaulttransform3) add(f1,T*f3); @@ -1874,9 +1871,6 @@ void label(frame f, Label L, triple position, align align=NoAlign, triple V=L.align.is3D ? position+L.align.dir3*labelmargin(L.p) : position; draw3D(f,S,L.p,light,render(interaction(interaction,center=V))); - // Fill subdivision cracks - if(prc && render.labelfill && opacity(L.p) == 1 && !lighton) - _draw(f,S.external(),V,L.p,light,interaction); } endgroup3(f); } @@ -1941,13 +1935,8 @@ void label(picture pic=currentpicture, Label L, triple position, begingroup3(f2,Render); begingroup3(f3,Render); } - for(patch S : s.s) { - S=centering*S; - draw3D(f3,S,L.p,light,Render); - // Fill subdivision cracks - if(prc && render.labelfill && opacity(L.p) == 1 && !lighton) - _draw(f3,S.external(),v,L.p,light,interaction); - } + for(patch S : s.s) + draw3D(f3,centering*S,L.p,light,Render); endgroup3(f3); if(L.defaulttransform3) add(f1,T*f3); @@ -1963,11 +1952,7 @@ void label(picture pic=currentpicture, Label L, triple position, begingroup3(f,name,render); for(patch S : surface(L,v,bbox=P.bboxonly).s) { triple V=L.align.is3D ? v+L.align.dir3*labelmargin(L.p) : v; - render Render=render(render,interaction(interaction,V)); - draw3D(f,S,L.p,light,Render); - // Fill subdivision cracks - if(prc && render.labelfill && opacity(L.p) == 1 && !lighton) - _draw(f,S.external(),V,L.p,light,interaction); + draw3D(f,S,L.p,light,render(render,interaction(interaction,V))); } endgroup3(f); } diff --git a/graphics/asymptote/base/v3d.asy b/graphics/asymptote/base/v3d.asy index 0405a5d5bc..925ba505e4 100644 --- a/graphics/asymptote/base/v3d.asy +++ b/graphics/asymptote/base/v3d.asy @@ -461,17 +461,10 @@ struct v3dfile for (int i=0; i < nI; ++i) { xdrfile.dimension(3); g.positionIndices[i]=xdrfile; - if(explicitNI != 0) - g.normalIndices[i]=xdrfile; - else - g.normalIndices[i]=g.positionIndices[i]; - if(nC > 0) { - if(explicitCI != 0) - g.colorIndices[i]=xdrfile; - else - g.colorIndices[i]=g.positionIndices[i]; - } else - g.colorIndices[i]=g.positionIndices[i]; + g.normalIndices[i]=explicitNI != 0 ? xdrfile : + g.positionIndices[i]; + g.colorIndices[i]=nC > 0 && explicitCI != 0 ? xdrfile : + g.positionIndices[i]; } int center=xdrfile; int material=xdrfile; @@ -606,9 +599,9 @@ void importv3d(string name) path3[][] G=xf.paths3[c]; for(int m=0; m < G.length; ++m) if(G.initialized(m)) { - material material=xf.materials[m]; + material material=material(xf.materials[m]); material.p[0] += thin(); - draw(G[m],material,r); + draw(G[m],material,currentlight,r); } } diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy index 19fad67eee..87a255db48 100644 --- a/graphics/asymptote/base/v3dheadertypes.asy +++ b/graphics/asymptote/base/v3dheadertypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2022-01-01 13:56:00.166634 +// Generated at 2022-01-06 15:01:16.486016 struct v3dheadertypes { diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy index 3611e586ea..183b6a9bac 100644 --- a/graphics/asymptote/base/v3dtypes.asy +++ b/graphics/asymptote/base/v3dtypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2022-01-01 13:56:00.084723 +// Generated at 2022-01-06 15:01:16.457740 struct v3dtypes { -- cgit v1.2.3