15 #ifndef __GU_Detail_h__
16 #define __GU_Detail_h__
75 namespace GA_PrimCompat {
class TypeMask; }
146 class gu_ValueLookupCache;
167 merge(*src, primGroup,
204 void duplicate(
const GU_Detail& gdp,
int = 0,
217 : myRingZero(ringzero)
218 , myRingValence(ringvalence)
223 {
return myRingZero; }
225 {
return myRingValence; }
240 void findBoundaryPoints(
243 const RingRef *ringref =
nullptr,
250 void findSelectionBoundaryPoints(
261 void buildRingZeroPoints(
278 void buildRingZeroPoints(
286 void buildRingZeroVertices(
290 void buildRingZeroPrimitives(
303 float ymin = -1,
float ymax = 1,
304 float zmin = -1,
float zmax = 1,
305 int xdiv = 0,
int ydiv = 0,
int zdiv = 0,
306 int enforcementBars = 0,
307 int doConsolidatePoints = 0);
310 int orderx = 4,
int ordery = 4,
int orderz=4,
311 float xmin = -0.5F,
float xmax = 0.5F,
312 float ymin = -0.5F,
float ymax = 0.5F,
313 float zmin = -0.5F,
float zmax = 0.5F,
315 bool consolidate =
false);
318 int orderx = 4,
int ordery = 4,
int orderz=4,
319 float xmin = -0.5F,
float xmax = 0.5F,
320 float ymin = -0.5F,
float ymax = 0.5F,
321 float zmin = -0.5F,
float zmax = 0.5F,
323 bool consolidate =
false);
325 GU_PrimMesh *meshCube(
int xdiv,
int ydiv,
int zdiv,
326 float xmin = -0.5F,
float xmax = 0.5F,
327 float ymin = -0.5F,
float ymax = 0.5F,
328 float zmin = -0.5F,
float zmax = 0.5F,
330 bool consolidate =
false);
332 GU_PrimPoly *polymeshCube(
int xdiv,
int ydiv,
int zdiv,
333 float xmin = -0.5F,
float xmax = 0.5F,
334 float ymin = -0.5F,
float ymax = 0.5F,
335 float zmin = -0.5F,
float zmax = 0.5F,
337 bool consolidate =
false);
352 float xsize=1,
float ysize=1,
353 float xc = 0,
float yc = 0,
float zc = 0,
360 float xsize=1,
float ysize=1,
361 float xc = 0,
float yc = 0,
float zc = 0,
366 float xsize=1,
float ysize=1,
367 float xc = 0,
float yc = 0,
float zc = 0,
371 float xsize=1,
float ysize=1,
372 float xc = 0,
float yc = 0,
float zc = 0,
375 int wrapu = 0,
int wrapv = 0);
377 int orderu = 4,
int orderv = 4,
378 int interpEndsU = 1,
int interpEndsV = 1,
379 float xsize=1,
float ysize=1,
380 float xc = 0,
float yc = 0,
float zc = 0,
383 int wrapu = 0,
int wrapv = 0);
385 int orderu = 4,
int orderv = 4,
386 float xsize=1,
float ysize=1,
387 float xc = 0,
float yc = 0,
float zc = 0,
390 int wrapu = 0,
int wrapv = 0);
403 float (*ptOutside)(
const UT_Vector3 &,
void *),
406 int xdiv,
int ydiv,
int zdiv,
407 bool makepolysoup =
false);
413 bool makepolysoup =
false);
416 int divx,
int divy,
int divz,
418 bool makepolysoup =
false);
422 void buildMetaXsection(
444 bool doPos,
bool doClr,
bool doNml,
bool doTxt,
445 bool doVoxels,
bool doSlerp,
446 const char *ptidattr,
const char *primidattr);
455 int size,
bool doPos,
bool doClr,
456 bool doNml,
bool doTxt,
457 bool doVoxels,
bool doSlerp,
458 const char *ptidattr,
const char *primidattr,
472 bool forceConsAll = false,
474 bool accurate = false);
483 bool accurate = false);
497 ONLYCONS_GRP_PROP_LEAST = 0,
499 ONLYCONS_GRP_PROP_INTERSECT
510 bool deleteconsolidated = false,
511 OnlyConsGroupPropagateType
513 ONLYCONS_GRP_PROP_LEAST,
514 bool accurate = false);
518 bool forceConsAll = false,
519 bool accurate = false);
522 bool accurate = false);
534 int fastConsolidatePointUVs(
float distance,
546 int fastConsolidateVertexUVs(
float distance,
574 bool snapptpos = true,
576 bool accurate = true);
585 SNAP_ATTRIBUTES_AVERAGE = 0,
586 SNAP_ATTRIBUTES_INDEX
596 float xlines,
float ylines,
float zlines,
597 float xoff,
float yoff,
float zoff,
602 void snapGridPointUVs(
int type,
603 float xlines,
float ylines,
float zlines,
604 float xoff,
float yoff,
float zoff,
608 void snapGridPointUVs(
610 float xlines,
float ylines,
float zlines,
611 float xoff,
float yoff,
float zoff,
615 void snapGridVertexUVs(
int type,
616 float xlines,
float ylines,
float zlines,
617 float xoff,
float yoff,
float zoff,
621 void snapGridVertexUVs(
623 float xlines,
float ylines,
float zlines,
624 float xoff,
float yoff,
float zoff,
631 int buildHoles(
float dist = 0.001F,
float angle = 0.2F,
656 bool removeRepPoints = false,
658 bool deleteDegenPrimPoints = false,
659 bool deleteOrphanedPoints = false,
660 bool deleteDegenerateBridges = false);
668 bool checkRepPoints = false,
676 int applyToVertex = -1,
int fixPolySeams = 0,
684 int applyToVertex = -1,
int fixPolySeams = 0,
690 bool scaleTexture(
float umult = 1,
float uoff = 0,
691 float vmult = 1,
float voff = 0,
692 float wmult = 1,
float woff = 0,
695 float umult = 1,
float uoff = 0,
696 float vmult = 1,
float voff = 0,
697 float wmult = 1,
float woff = 0,
699 bool rotateTexture(
float angle,
710 void transformPointTexture(
719 void computeSoftTransformPointTextureCache(
728 void computeSoftTransformPointTextureCache(
741 void softTransformPointTexture(
743 float tx,
float ty,
float tz,
744 float rx,
float ry,
float rz,
745 float sx,
float sy,
float sz,
746 float s_xy,
float s_xz,
float s_yz,
747 float px,
float py,
float pz,
752 bool *falloff_written =
nullptr);
760 void softTransformPointTexture(
763 float tx,
float ty,
float tz,
764 float rx,
float ry,
float rz,
765 float sx,
float sy,
float sz,
766 float s_xy,
float s_xz,
float s_yz,
767 float px,
float py,
float pz,
772 bool *falloff_written =
nullptr);
774 void transformVertexTexture(const
UT_Matrix4& mat,
778 void transformVertexTexture(
789 void computeSoftTransformVertexTextureCache(
794 bool ignore_uv_connectivity) const;
801 void computeSoftTransformVertexTextureCache(
807 bool ignore_uv_connectivity) const;
815 void softTransformVertexTexture(
817 float tx,
float ty,
float tz,
818 float rx,
float ry,
float rz,
819 float sx,
float sy,
float sz,
820 float s_xy,
float s_xz,
float s_yz,
821 float px,
float py,
float pz,
826 bool *falloff_written =
nullptr);
834 void softTransformVertexTexture(
837 float tx,
float ty,
float tz,
838 float rx,
float ry,
float rz,
839 float sx,
float sy,
float sz,
840 float s_xy,
float s_xz,
float s_yz,
841 float px,
float py,
float pz,
846 bool *falloff_written =
nullptr);
855 bool computeAvgNormal(
859 bool computeAvgNormal(
875 void convertMetaballs(
901 void sortPointsSpatial();
902 void sortPrimsSpatial();
939 void shift(
int uoffset,
int voffset,
999 bool flipedges =
false,
bool avoiddegeneracy =
false);
1009 bool flipedges =
false,
1010 bool avoiddegeneracy =
false);
1019 const GA_Detail *restgdp=0,
bool flipedges =
false,
1020 bool avoiddegeneracy =
false);
1025 float tol = 0.0001F,
1032 bool clippts =
false);
1037 int normlize = 0,
int outputGroups = 0,
1043 void fractalize(
int seed = 1,
float roughness = 0.6F,
1044 float scaleby=1,
int divs=1,
1045 int fixedBoundry = 1,
int useVtxNorms = 0,
1046 float nx = 0,
float ny = 0,
float nz = 1,
1056 fpreal clip_tolerance = 0.0001,
1057 fpreal consilidate_tolerance = 0.001);
1060 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1086 int reparameterize = 0);
1091 int reparameterize = 0);
1121 unsigned vorder = 0,
int vwrap = 0,
1122 int doskin = 1,
int nprims = -1,
1127 unsigned vorder = 0,
int vwrap = 0,
1128 int doskin = 1,
int nprims = -1,
1160 void filletRoundNetwork(
1206 const GU_Detail *deform,
int xdiv,
int ydiv,
int zdiv,
1220 void applyTraceTexture(
float xres,
float yres,
float resolution);
1235 int order=4,
int wrapped=0,
1239 int order=4,
int wrapped=0,
1252 int order=4,
int wrapped=0,
1257 int order=4,
int wrapped=0,
1262 int order=4,
int wrapped=0,
1267 int order = 4,
int corner=0);
1270 int order = 4,
int wrapped=0,
int corner=0);
1273 int order = 4,
int wrapped=0,
int corner=0);
1277 int uOrder=4,
int vOrder=4,
1288 int uOrder=4,
int vOrder=4,
1289 bool uWrapped=
false,
bool vWrapped=
false,
1300 int uOrder=4,
int vOrder=4,
1311 int uOrder=4,
int vOrder=4,
1312 bool uWrapped=
false,
bool vWrapped=
false,
1328 float tol=1e-1F,
float smooth=0.0F,
1329 int noMultipleKnots=1);
1332 int order=4,
int wrapped=0,
1333 float tol=1e-1F,
float smooth=0.0F,
1334 int noMultipleKnots=1);
1338 int uOrder=4,
int vOrder=4,
1340 float tol=1e-1F,
float smooth=0.0F,
1341 int uNoMultipleKnots=1,
1342 int vNoMultipleKnots=1);
1345 int uOrder=4,
int vOrder=4,
1346 int uWrapped=0,
int vWrapped=0,
1348 float tol=1e-1F,
float smooth=0.0F,
1349 int uNoMultipleKnots=1,
1350 int vNoMultipleKnots=1);
1355 void refine(
float *uunit,
int ulen,
1356 float *vunit,
int vlen,
1357 int countu=1,
int countv=1,
1361 void unrefine(
float umin,
float umax,
1362 float vmin,
float vmax,
1363 int countu=1,
int countv=1,
1364 float utol=0.001F,
float vtol=0.001F,
1367 void subdivide(
float *uunit,
int ulen,
1368 float *vunit,
int vlen,
1373 int extract(
float *uunit,
int ulen,
1374 float *vunit,
int vlen,
1377 int op = 0,
int keepOriginal = 0,
1378 int atbreakpoints = 0,
int use_arc_length = 0);
1380 void extractIsoParms(
float *uunit,
int ulen,
1381 float *vunit,
int vlen,
1385 void extractPoints(
float *uunit,
int ulen,
1386 float *vunit,
int vlen,
1390 void extractProfiles(
float *uunit,
int ulen,
1391 float *vunit,
int vlen,
1394 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1395 float *vunit,
int vlen,
1399 void extractPointsAtBreak(
float *uunit,
int ulen,
1400 float *vunit,
int vlen,
1404 void extractProfilesAtBreak(
float *uunit,
int ulen,
1405 float *vunit,
int vlen,
1409 int cut(
float *uunit,
int ulen,
1410 float *vunit,
int vlen,
1412 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1413 int allU = 0,
int allV = 0,
int use_arc_length = 0);
1421 bool deleteAll =
true);
1431 int *pointIndexTable = 0);
1443 int info(std::ostream &os,
1444 int max_group_lines=15,
1447 bool instanced=
false)
const;
1451 int max_group_lines=15,
1454 bool instanced=
false)
const;
1489 float tmax = 1E17F,
float tol = 1E-12F,
1492 float *u = 0,
float *
v = 0,
1493 int ignoretrim = 1)
const;
1500 int commonFaceConfig(
1502 GA_PrimCompat::TypeMask &
type,
int &
order,
1503 bool &
open,
bool &ends) const;
1504 int commonFaceConfig(
1506 GA_PrimCompat::TypeMask &type,
int &order,
1507 bool &open,
bool &ends) const;
1509 GA_PrimCompat::TypeMask &type,
1510 int &orderu,
int &orderv,
1511 bool &openu,
bool &openv,
1512 bool &endsu,
bool &endsv) const;
1522 int makeFacesCompatible(
1525 bool mustopen = false,
1526 bool mustends = false,
1527 bool nonrational = false,
1528 GA_PrimCompat::TypeMask *extratype = 0,
1529 bool equalcvs = true);
1530 int makeFacesCompatible(
1533 bool mustopen = false,
1534 bool mustends = false,
1535 bool nonrational = false,
1536 GA_PrimCompat::TypeMask *extratype = 0,
1537 bool equalcvs = true);
1538 int makeFacesCompatible(
1543 bool mustopen = false,
1544 bool mustends = false,
1545 bool nonrational = false,
1546 GA_PrimCompat::TypeMask *extratype = 0,
1547 bool equalcvs = true);
1548 int makeFacesCompatible(
1553 bool mustopen = false,
1554 bool mustends = false,
1555 bool nonrational = false,
1556 GA_PrimCompat::TypeMask *extratype = 0,
1557 bool equalcvs = true);
1564 float lwidth1,
float lwidth2,
1565 float rwidth1,
float rwidth2,
1566 int sharp,
int &lstart,
int &rstart,
1567 int &lmax,
int &rmax,
1573 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1574 static
int getSubdividedCV(
GEO_Face *
face,
float unit);
1581 static
exint getIOTranslatorCount();
1587 static
GA_Detail::IOStatus statH9File(const
char *filename,
1591 static
bool isFormatSupported(const
char *filename);
1616 int makeSurfacesCompatible(
1619 bool mustopenu=false,
bool mustopenv=false,
1620 bool mustendsu=false,
bool mustendsv=false,
1621 bool equalcvsu=true,
bool equalcvsv=true,
1622 GA_PrimCompat::TypeMask *extratype = 0);
1631 const
char *
n = "__gu_all_pasted__",
1632 const
char *u = "__gu_used_pasted__");
1633 void updatePastedDisplacement(
GA_Offset ptoff,
1636 int updatePastedDisplacements();
1649 const char *msg = 0)
const
1654 const char *msg = 0)
const
1672 bool ordered =
false,
1673 bool clear_matching =
false);
1693 bool hasShallowCookSelectionReference(
1702 void removeCookSelection();
1715 void removeInlinePoints(
float tol,
1722 bool ignoreOpenFaces =
false,
1723 float tolerance = 0.001F,
1724 bool onlyPolys =
true);
1726 bool ignoreOpenFaces =
false,
1727 float tolerance = 0.001F,
1728 bool onlyPolys =
true);
1738 bool del_inline_points,
1740 bool del_unused_points = true,
1741 bool del_bridges = true);
1755 GU_BRIDGEMODE_DELETE
1758 bool del_inline_points,
1760 bool del_unused_points,
1761 BridgeMode bridge_mode,
1762 bool del_degenerate_bridges,
1763 bool boundary_curves);
1768 bool rotattribs =
false,
1785 bool quadcut =
false,
1786 bool forcecut =
true,
1789 bool quadcomplete =
false,
1790 bool modifyGdp =
true,
1792 bool fixEnds =
false);
1796 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1797 bool applytoall =
true,
1798 bool use_shared_points =
false,
1801 bool preserve_edge_dir =
false);
1805 bool use_shared_points,
1808 bool preserve_edge_dir,
1820 int quickxform = 0);
1828 bool removedegen =
true,
1829 bool updatenmls =
true,
1837 float insetdist,
float nmldist);
1867 void clearCachedBounds();
1872 static void loadIODSOs();
1896 class AttribValueLookupTable;
1897 class AttribSingleValueLookupTable;
1899 const AttribValueLookupTable *getLookupTable(
const GA_Attribute *attrib)
const;
1900 const AttribSingleValueLookupTable *getSingleLookupTable(
const GA_Attribute *attrib)
const;
1904 GU_Detail *cloneForCache(
bool keep_unique_id)
const;
1919 template <
typename ArrayType>
1921 const ArrayType &gpData,
1923 int order,
int wrapped,
1927 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
1928 float x_size,
float y_size,
1929 float x_center,
float y_center,
1933 void convertPolysToHull(
1935 bool keep_original);
1936 void convertToSoups(
1938 bool keep_original);
1939 void convertVolumesToVDBs(
1941 bool keep_original);
1942 void convertVDBsToVolumes(
1944 bool keep_original);
1945 void convertVolumesToPolys(
1947 bool keep_original);
1948 void convertMetasToPolys(
1950 bool keep_original);
1951 void convertTetsToPolys(
1953 bool keep_original);
1956 bool keep_original);
1963 int orderx,
int ordery,
int orderz,
1964 float xmin,
float xmax,
1965 float ymin,
float ymax,
1966 float zmin,
float zmax,
1972 bool checkRepPoints,
1977 bool makepolysoup =
false);
1981 bool makepolysoup =
false);
1982 int adjustStepBox(
float &
min,
float &
max,
float step);
1986 bool makepolysoup =
false);
1997 friend class GU_PrimitiveFactory;
2001 myBoundingCache =
nullptr;
2002 myValueLookupCache =
nullptr;
2008 class BoundingCache;
2009 BoundingCache *myBoundingCache;
2011 mutable gu_ValueLookupCache *myValueLookupCache;
virtual void clearCaches()
A class to manage an ordered array which has fixed offset handles.
ImageBuf OIIO_API warp(const ImageBuf &src, const Imath::M33f &M, string_view filtername=string_view(), float filterwidth=0.0f, bool recompute_roi=false, ImageBuf::WrapMode wrap=ImageBuf::WrapDefault, ROI roi={}, int nthreads=0)
vint4 max(const vint4 &a, const vint4 &b)
UT_ErrorSeverity getSeverity()
GA_API const UT_StringHolder dist
Definition of a geometry attribute.
SYS_VISIBILITY_EXPORT void newGeometryIO(void *)
GT_API const UT_StringHolder filename
MatType shear(Axis axis0, Axis axis1, typename MatType::value_type shear)
Set the matrix to a shear along axis0 by a fraction of axis1.
#define SYS_VISIBILITY_EXPORT
GLuint GLenum GLenum transform
const UT_IntArray & ringValence() const
GLuint GLuint GLfloat weight
virtual GA_Detail * cloneEmptyDetail(bool clone_attributes) const =0
SYS_VISIBILITY_EXPORT void newGeometryPrim(GA_PrimitiveFactory *factory)
#define SYS_DEPRECATED_HDK_REPLACE(__V__, __R__)
void reversePrimitiveList()
GA_API const UT_StringHolder twist
int64 getMemoryUsage(bool inclusive) const override
Compute memory usage (includes all shared memory)
OnlyConsGroupPropagateType
void reverse(I begin, I end)
GLsizei GLsizei GLchar * source
void shiftPrimitiveList(GA_Size aoffset)
UT_API UT_ErrorManager * UTgetErrorManager()
void addWarning(GU_ErrorCodes code, const char *msg=0) const
Tto convert(const Tfrom &source)
Structure for the PolySouping code.
UT_ErrorSeverity addError(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
exint GA_Size
Defines the bit width for index and offset types in GA.
GLuint GLdouble GLdouble GLint GLint order
GLuint GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint vorder
const UT_Array< GA_OffsetArray > & myRingZero
#define GA_INVALID_OFFSET
A range of elements in an index-map.
vint4 blend(const vint4 &a, const vint4 &b, const vbool4 &mask)
GU_API void snapPoints(GU_Detail &qgdp, const GU_Detail *tgdp, const PointSnapParms &parms)
GR_API RE_Geometry * buildGrid(RE_Render *r, UT_Vector3F center, UT_Vector2F size, Orientation orient, const char *cache_name=NULL)
GLfloat GLfloat GLfloat GLfloat nx
GU_Detail(const GU_Detail *src, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
GA_API const UT_StringHolder trans
GLint GLenum GLsizei GLint GLsizei const void * data
GU_API void snapGrid(GU_Detail &gdp, const GridSnapParms &parms)
bool extract(const vbool4 &a)
GLsizei GLsizei GLfloat distance
const GA_IndexMap & getIndexMap(GA_AttributeOwner owner) const
NURBS basis classes which maintain knot vectors.
void shiftPointList(GA_Size aoffset)
virtual void statVolumes(GA_Stat &stat, uint level=0xffff) const
Fill out only the volume information.
void sortPointList(fpreal *order)
png_const_structrp png_const_inforp int * unit
void sortPointList(int seed)
#define SYS_DEPRECATED_HDK(__V__)
void sortPrimitiveList(const UT_Vector3 &o, const UT_Vector3 &d)
void sortPointList(const UT_Vector3 &o, const UT_Vector3 &d)
UT_Array< GU_SplitLoc * > GU_SplitLocArray
bool copy(const GEO_Detail &src, GEO_CopyMethod method=GEO_COPY_ONCE, bool this_parameter_is_ignored=true, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
GLuint GLuint GLsizei GLenum type
UT_SharedPtr< GU_Selection > GU_SelectionHandle
GA_API const UT_StringHolder orient
GU_Detail(bool full_topology)
GLenum GLuint GLint GLenum face
void addMessage(GU_ErrorCodes code, const char *msg=0) const
Class to return information about a GA_Detail.
ImageBuf OIIO_API cut(const ImageBuf &src, ROI roi={}, int nthreads=0)
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const
d = SYSsmooth(min, max, t);
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER T clip(const T &p, const Box< T > &box)
const UT_IntArray & myRingValence
void sortPrimitiveList(int seed)
UT_ErrorSeverity addWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
GA_GroupType
An ordinal enum for the different types of groups in GA.
RingRef(const UT_Array< GA_OffsetArray > &ringzero, const UT_IntArray &ringvalence)
void countMemory(UT_MemoryCounter &counter, bool inclusive) const override
void proximityToPointList(const UT_Vector3 &point)
GLuint GLdouble GLdouble GLint GLint const GLdouble * points
GLuint GLuint GLsizei count
void transformBreakpoints(const UT_Matrix4T< FLOAT_T > &mat, const GA_BreakpointGroup *grp=0, bool just_P=false, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=NULL)
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveFactory &factory)
GU_API GA_PrimitiveFactory & GUgetFactory()
void sortPrimitiveList(GU_AxisType axis)
Container class for all geometry.
const UT_Array< GA_OffsetArray > & ringZero() const
void proximityToPrimitiveList(const UT_Vector3 &point)
GA_Size GEO_API GEOsplitPoints(GEO_Detail *detail, const GA_ElementGroup *group=nullptr)
vint4 min(const vint4 &a, const vint4 &b)
GU_Detail(const GU_Detail *src, GA_PrimitiveGroup *primGroup, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
void sortPrimitiveList(fpreal *order)
GA_API const UT_StringHolder rest
bool all(const vbool4 &v)
void merge(const GEO_Detail &src, const GA_PrimitiveGroup *primGrp=nullptr, bool mergePrimGroup=true, bool insertPrimsAtHead=false, GA_GBPointRedirectArray *dest_to_src_ptarray=nullptr, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
void addError(GU_ErrorCodes code, const char *msg=0) const
UT_ErrorSeverity addMessage(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)