SoVRMLGeometry(3)
๐ NAME ๐
SoVRMLGeometry โ bestie, this is the superclass for VRML shapes. That's the whole job description. She doesn't do the drawing herself, she's the blueprint the other shape classes are built on top of. Mother of shapes, basically. ๐
๐ฆ SYNOPSIS ๐ฆ
#include <Inventor/VRMLnodes/SoVRMLGeometry.h>
Inherits SoShape. โ so she's got a whole ancestry situation going on, we love a lineage ๐
Inherited by SoVRMLBox, SoVRMLCone, SoVRMLCylinder, SoVRMLElevationGrid, SoVRMLExtrusion, SoVRMLSphere, SoVRMLText, SoVRMLVertexLine, SoVRMLVertexPoint, and SoVRMLVertexShape. โ okay so literally the entire shape squad descended from her, the way that she's the moment and the legacy ๐โจ
โจ Public Member Functions โจ
virtual SoType getTypeId (void) constโ hers, declared right here in her own class ๐virtual void search (SoSearchAction *action)โ also hers, no borrowing needed ๐virtual void copyContents (const SoFieldContainer *from, SbBool copyConn)โ hers too, she does her own copying ๐ซถ
๐ธ Public Member Functions inherited from SoShape ๐ธ
virtual SbBool affectsState (void) constโ handed down fromSoShape๐งvirtual void getBoundingBox (SoGetBoundingBoxAction *action)โ fromSoShape๐ฆvirtual void GLRender (SoGLRenderAction *action)โ fromSoShape๐จvirtual void rayPick (SoRayPickAction *action)โ fromSoShape๐ฏvirtual void callback (SoCallbackAction *action)โ fromSoShape๐virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f ¢er)=0โ fromSoShape(and yes bestie, that=0means it's pure virtual, the subclasses have to bring their own) ๐virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)โ fromSoShape๐ขconst SoBoundingBoxCache * getBoundingBoxCache (void) constโ fromSoShape๐๏ธ
๐ Public Member Functions inherited from SoNode ๐
void setOverride (const SbBool state)โ fromSoNode๐SbBool isOverride (void) constโ fromSoNode๐void setNodeType (const NodeType type)โ fromSoNode๐ท๏ธNodeType getNodeType (void) constโ fromSoNode๐ท๏ธvirtual SoNode * copy (SbBool copyconnections=FALSE) constโ fromSoNode๐virtual void doAction (SoAction *action)โ fromSoNodeโกvirtual void GLRenderBelowPath (SoGLRenderAction *action)โ fromSoNode๐จvirtual void GLRenderInPath (SoGLRenderAction *action)โ fromSoNode๐จvirtual void GLRenderOffPath (SoGLRenderAction *action)โ fromSoNode๐จvirtual void getMatrix (SoGetMatrixAction *action)โ fromSoNode๐virtual void handleEvent (SoHandleEventAction *action)โ fromSoNode๐ฑ๏ธvirtual void pick (SoPickAction *action)โ fromSoNode๐ฏvirtual void write (SoWriteAction *action)โ fromSoNodeโ๏ธvirtual void audioRender (SoAudioRenderAction *action)โ fromSoNode๐virtual void grabEventsSetup (void)โ fromSoNodeโvirtual void grabEventsCleanup (void)โ fromSoNode๐งนvirtual void startNotify (void)โ fromSoNode๐uint32_t getNodeId (void) constโ fromSoNode๐virtual void writeInstance (SoOutput *out)โ fromSoNodeโ๏ธvirtual SoNode * addToCopyDict (void) constโ fromSoNode๐virtual SoFieldContainer * copyThroughConnection (void) constโ fromSoNode๐
๐ฆ Public Member Functions inherited from SoFieldContainer ๐ฆ
void setToDefaults (void)โ fromSoFieldContainer๐งผSbBool hasDefaultValues (void) constโ fromSoFieldContainerโSbBool fieldsAreEqual (const SoFieldContainer *container) constโ fromSoFieldContainer๐ฐvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)โ fromSoFieldContainer๐SbBool set (const char *const fielddata)โ fromSoFieldContainer๐ฅvoid get (SbString &fielddata)โ fromSoFieldContainer๐คvirtual int getFields (SoFieldList &l) constโ fromSoFieldContainer๐virtual int getAllFields (SoFieldList &l) constโ fromSoFieldContainer๐virtual SoField * getField (const SbName &name) constโ fromSoFieldContainer๐virtual SoField * getEventIn (const SbName &name) constโ fromSoFieldContainerโฌ ๏ธvirtual SoField * getEventOut (const SbName &name) constโ fromSoFieldContainerโก๏ธSbBool getFieldName (const SoField *const field, SbName &name) constโ fromSoFieldContainer๐ท๏ธSbBool enableNotify (const SbBool flag)โ fromSoFieldContainer๐SbBool isNotifyEnabled (void) constโ fromSoFieldContainer๐SbBool set (const char *fielddata, SoInput *input)โ fromSoFieldContainer๐ฅvoid get (SbString &fielddata, SoOutput *out)โ fromSoFieldContainer๐คvirtual SbBool validateNewFieldValue (SoField *field, void *newval)โ fromSoFieldContainer๐งชvirtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)โ fromSoFieldContainerโ๏ธSbBool getIsBuiltIn (void) constโ fromSoFieldContainer๐virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) constโ fromSoFieldContainer๐งฎvoid setUserData (void *userdata) constโ fromSoFieldContainer๐void * getUserData (void) constโ fromSoFieldContainer๐
โญ Public Member Functions inherited from SoBase โญ
void ref (void) constโ fromSoBase๐void unref (void) constโ fromSoBaseโ๏ธvoid unrefNoDelete (void) constโ fromSoBaseโ๏ธint32_t getRefCount (void) constโ fromSoBase๐ขvoid touch (void)โ fromSoBase๐SbBool isOfType (SoType type) constโ fromSoBase๐งฌvirtual SbName getName (void) constโ fromSoBase๐ท๏ธvirtual void setName (const SbName &newname)โ fromSoBaseโ๏ธvoid addAuditor (void *const auditor, const SoNotRec::Type type)โ fromSoBase๐void removeAuditor (void *const auditor, const SoNotRec::Type type)โ fromSoBase๐const SoAuditorList & getAuditors (void) constโ fromSoBase๐SbBool shouldWrite (void)โ fromSoBaseโ๏ธvoid assertAlive (void) constโ fromSoBase๐
๐ซถ Static Public Member Functions ๐ซถ
static SoType getClassTypeId (void)โ her very own static, right here ๐static void initClass (void)โ hers, she runs her own setup โจ
๐ Static Public Member Functions inherited from SoShape ๐
static SoType getClassTypeId (void)โ fromSoShape๐งฌstatic void initClass (void)โ fromSoShapeโจstatic void getScreenSize (SoState *const state, const SbBox3f &boundingbox, SbVec2s &rectsize)โ fromSoShape๐static float getDecimatedComplexity (SoState *state, float complexity)โ fromSoShape๐static const SoFieldData ** getFieldDataPtr (void)โ wait no bestie, hold that thought, that one's a protected static, she's coming up later ๐
๐ Static Public Member Functions inherited from SoNode ๐
static uint32_t getCompatibilityTypes (const SoType &nodetype)โ fromSoNode๐งฌstatic SoType getClassTypeId (void)โ fromSoNode๐งฌstatic SoNode * getByName (const SbName &name)โ fromSoNode๐static int getByName (const SbName &name, SoNodeList &l)โ fromSoNode๐static void initClass (void)โ fromSoNodeโจstatic void initClasses (void)โ fromSoNodeโจstatic uint32_t getNextNodeId (void)โ fromSoNode๐static int getActionMethodIndex (const SoType type)โ fromSoNode๐ขstatic void getBoundingBoxS (SoAction *action, SoNode *node)โ fromSoNode๐ฆstatic void GLRenderS (SoAction *action, SoNode *node)โ fromSoNode๐จstatic void callbackS (SoAction *action, SoNode *node)โ fromSoNode๐static void getMatrixS (SoAction *action, SoNode *node)โ fromSoNode๐static void handleEventS (SoAction *action, SoNode *node)โ fromSoNode๐ฑ๏ธstatic void pickS (SoAction *action, SoNode *node)โ fromSoNode๐ฏstatic void rayPickS (SoAction *action, SoNode *node)โ fromSoNode๐ฏstatic void searchS (SoAction *action, SoNode *node)โ fromSoNode๐static void writeS (SoAction *action, SoNode *node)โ fromSoNodeโ๏ธstatic void audioRenderS (SoAction *action, SoNode *node)โ fromSoNode๐static void getPrimitiveCountS (SoAction *action, SoNode *node)โ fromSoNode๐ข
๐ซ Static Public Member Functions inherited from SoFieldContainer ๐ซ
static void initClass (void)โ fromSoFieldContainerโจstatic SoType getClassTypeId (void)โ fromSoFieldContainer๐งฌstatic void cleanupClass (void)โ fromSoFieldContainer๐งนstatic void initCopyDict (void)โ fromSoFieldContainer๐static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)โ fromSoFieldContainer๐static SoFieldContainer * checkCopy (const SoFieldContainer *orig)โ fromSoFieldContainerโstatic SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)โ fromSoFieldContainer๐static void copyDone (void)โ fromSoFieldContainer๐
๐ธ Static Public Member Functions inherited from SoBase ๐ธ
static void initClass (void)โ fromSoBaseโจstatic SoType getClassTypeId (void)โ fromSoBase๐งฌstatic void addName (SoBase *const base, const char *const name)โ fromSoBase๐ท๏ธstatic void removeName (SoBase *const base, const char *const name)โ fromSoBase๐ท๏ธstatic void incrementCurrentWriteCounter (void)โ fromSoBaseโstatic void decrementCurrentWriteCounter (void)โ fromSoBaseโstatic SoBase * getNamedBase (const SbName &name, SoType type)โ fromSoBase๐static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)โ fromSoBase๐static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)โ fromSoBase๐static void setInstancePrefix (const SbString &c)โ fromSoBase๐คstatic void setTraceRefs (SbBool trace)โ fromSoBase๐static SbBool getTraceRefs (void)โ fromSoBase๐static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)โ fromSoBase๐static SbBool readRoute (SoInput *input)โ fromSoBase๐
๐ Protected Member Functions ๐
these are the ones only her and her subclasses get to touch, like the group chat nobody else is in ๐
virtual const SoFieldData * getFieldData (void) constโ hers ๐SoVRMLGeometry (void)โ her constructor, she's right here ๐ผvirtual ~SoVRMLGeometry ()โ and her destructor ๐ชฆvoid setupShapeHints (SoState *state, const SbBool ccw, const SbBool solid)โ hers ๐ ๏ธvirtual SbBool shouldGLRender (SoGLRenderAction *action)โ hers ๐จvirtual SoChildList * getChildren (void) constโ hers ๐ถvirtual void notify (SoNotList *list)โ hers ๐
๐ง Protected Member Functions inherited from SoShape ๐ง
SoShape (void)โ fromSoShape๐ผvirtual ~SoShape ()โ fromSoShape๐ชฆfloat getComplexityValue (SoAction *action)โ fromSoShape๐virtual void generatePrimitives (SoAction *action)=0โ fromSoShape(another pure virtual,=0and all, subclasses you know what to do) ๐void beginSolidShape (SoGLRenderAction *action)โ fromSoShape๐งฑvoid endSolidShape (SoGLRenderAction *action)โ fromSoShape๐งฑvoid GLRenderBoundingBox (SoGLRenderAction *action)โ fromSoShape๐ฆSbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action)โ fromSoShape๐ขSbBool shouldRayPick (SoRayPickAction *const action)โ fromSoShape๐ฏvoid computeObjectSpaceRay (SoRayPickAction *const action)โ fromSoShape๐ฏvoid computeObjectSpaceRay (SoRayPickAction *const action, const SbMatrix &matrix)โ fromSoShape๐ฏvirtual SoDetail * createTriangleDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3, SoPickedPoint *pp)โ fromSoShape๐บvirtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp)โ fromSoShape๐virtual SoDetail * createPointDetail (SoRayPickAction *action, const SoPrimitiveVertex *v, SoPickedPoint *pp)โ fromSoShape๐void invokeTriangleCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)โ fromSoShape๐void invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)โ fromSoShape๐void invokePointCallbacks (SoAction *const action, const SoPrimitiveVertex *const v)โ fromSoShape๐void beginShape (SoAction *const action, const TriangleShape shapetype, SoDetail *const detail=NULL)โ fromSoShapeโถ๏ธvoid shapeVertex (const SoPrimitiveVertex *const v)โ fromSoShape๐นvoid endShape (void)โ fromSoShapeโน๏ธvoid generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal)โ fromSoShape๐นvoid generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const float r, const SbVec3f &normal)โ fromSoShape(yep, there's an extraconst float ron this one, not a typo, two whole overloads) ๐นSbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex)โ fromSoShape๐งฎvoid finishVertexArray (SoGLRenderAction *action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex)โ fromSoShape๐งฎ
๐ Protected Member Functions inherited from SoNode ๐
SoNode (void)โ fromSoNode๐ผvirtual ~SoNode ()โ fromSoNode๐ชฆvirtual SbBool readInstance (SoInput *in, unsigned short flags)โ fromSoNode๐
๐ Protected Member Functions inherited from SoFieldContainer ๐
SoFieldContainer (void)โ fromSoFieldContainer๐ผvirtual ~SoFieldContainer ()โ fromSoFieldContainer๐ชฆ
๐ Protected Member Functions inherited from SoBase ๐
SoBase (void)โ fromSoBase๐ผvirtual ~SoBase ()โ fromSoBase๐ชฆvirtual void destroy (void)โ fromSoBase๐ฅSbBool hasMultipleWriteRefs (void) constโ fromSoBase๐SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constโ fromSoBaseโ๏ธvoid writeFooter (SoOutput *out) constโ fromSoBaseโ๏ธvirtual const char * getFileFormatName (void) constโ fromSoBase๐
๐ Static Protected Member Functions ๐
static const SoFieldData ** getFieldDataPtr (void)โ her own static protected one, here she is, told you she'd show up ๐
๐ง Static Protected Member Functions inherited from SoShape ๐ง
static const SoFieldData ** getFieldDataPtr (void)โ fromSoShape๐
๐ฆ Static Protected Member Functions inherited from SoNode ๐ฆ
static const SoFieldData ** getFieldDataPtr (void)โ fromSoNode๐static void setNextActionMethodIndex (int index)โ fromSoNode๐ขstatic int getNextActionMethodIndex (void)โ fromSoNode๐ขstatic void incNextActionMethodIndex (void)โ fromSoNodeโstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)โ fromSoNode๐งฌ
and bestie, that's only the top half of this page ๐ the rest is literally still loading, keep scrolling ๐
Static Protected Member Functions inherited from SoBase ๐ซ
static uint32_t getCurrentWriteCounter (void)โ hands you the current write counter, no cap.static void staticDataLock (void)โ locks the static data, bestie. gatekeeping the globals fr.static void staticDataUnlock (void)โ and this one unlocks it again. balance โจ
Additional Inherited Members ๐
Public Types inherited from SoShape
enum TriangleShape { TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, POLYGON,
QUADS, QUAD_STRIP, POINTS, LINES, LINE_STRIP }
Public Types inherited from SoNode
enum NodeType { INVENTOR = 0x0000, VRML1 = 0x0001, VRML2 = 0x0002,
INVENTOR_1 = 0x0004, INVENTOR_2_0 = 0x0008, INVENTOR_2_1 = 0x0010,
INVENTOR_2_5 = 0x0020, INVENTOR_2_6 = 0x0040, COIN_1_0 = 0x0080,
COIN_2_0 = 0x0100, EXTENSION = 0x0200, COIN_2_2 = 0x0400, COIN_2_3 =
0x0800, COIN_2_4 = 0x1000, INVENTOR_5_0 = 0x2000, COIN_2_5 = 0x4000,
COIN_3_0 = 0x8000, INVENTOR_6_0 = 0x10000 }
Protected Types inherited from SoBase
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
Protected Attributes inherited from SoNode
uint32_t uniqueId
Protected Attributes inherited from SoFieldContainer
SbBool isBuiltIn
Static Protected Attributes inherited from SoNode
static uint32_t nextUniqueId = 1
static int nextActionMethodIndex = 0
Detailed Description ๐
Okay so SoVRMLGeometry is the superclass for all the VRML shapes. It's giving founding mother of the whole VRML geometry fam. ๐
Every VRML shape you know and love traces back to her.
Constructor & Destructor Documentation ๐ง
SoVRMLGeometry::SoVRMLGeometry (void ) [protected]
Constructor. yeah that's it, she just exists. iconic of her. โจ
SoVRMLGeometry::~SoVRMLGeometry () [protected], [virtual]
Destructor. the farewell arc ๐ญ virtual, so she cleans up right for the whole bloodline.
Member Function Documentation ๐ฆ
SoType SoVRMLGeometry::getTypeId (void ) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is used for run-time type checking and "downward" casting. iykyk โ it's literally how Coin figures out what you are at runtime.
Usage example, keep it exact bestie:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
}
}
Now for all my application programmers out there who wanna extend the library with new nodes, engines, nodekits, draggers or whatever: this method needs to be overridden in all subclasses. that's not a suggestion, that's the assignment. ๐ It's typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.
For more info on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups. ๐ซถ
Reimplemented from SoShape.
Reimplemented in SoVRMLBox, SoVRMLCone, SoVRMLCylinder, SoVRMLElevationGrid, SoVRMLExtrusion, SoVRMLIndexedFaceSet, SoVRMLIndexedLine, SoVRMLIndexedLineSet, SoVRMLIndexedShape, SoVRMLPointSet, SoVRMLSphere, SoVRMLText, SoVRMLVertexLine, SoVRMLVertexPoint, and SoVRMLVertexShape. look at the whole squad showing up. ๐
const SoFieldData * SoVRMLGeometry::getFieldData (void ) const [protected], [virtual]
Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL. no fields, no pointer, we move on. โจ
Reimplemented from SoShape.
Reimplemented in SoVRMLBox, SoVRMLCone, SoVRMLCylinder, SoVRMLElevationGrid, SoVRMLExtrusion, SoVRMLIndexedFaceSet, SoVRMLIndexedLine, SoVRMLIndexedLineSet, SoVRMLIndexedShape, SoVRMLPointSet, SoVRMLSphere, SoVRMLText, SoVRMLVertexLine, SoVRMLVertexPoint, and SoVRMLVertexShape.
void SoVRMLGeometry::search (SoSearchAction * action) [virtual]
Action method for SoSearchAction. ๐ต๏ธ
Compares the search criteria from the action to see if this node is a match. Searching is done by matching up all criteria set up in the SoSearchAction โ if any of the requested criteria is a miss, the search is not deemed successful for the node. it's giving โจstrictโจ, one wrong detail and the whole vibe check fails.
See also: SoSearchAction
Reimplemented from SoNode.
void SoVRMLGeometry::copyContents (const SoFieldContainer * from, SbBool copyconnections) [virtual]
Makes a deep copy of all data of from into this instance, except external scenegraph references if copyconnections is FALSE. the deepest of copies, no half measures. ๐
This is the protected method that should be overridden by extension node / engine / dragger / whatever subclasses which needs to account for internal data that are not handled automatically.
For copying nodes from application code, you should not invoke this function directly, but rather call the SoNode::copy() function:
SoNode * mynewnode = templatenode->copy();
The same also goes for engines.
Make sure that when you override thecopyContents()method in your extension class that you also make it call upwards to it's parent superclass in the inheritance hierarchy, ascopyContents()in for instanceSoNodeandSoFieldContainerdoes important work. skip the parent call and things get weird, and not in a cute way. ๐
It should go something like this:
void
MyCoinExtensionNode::copyContents(const SoFieldContainer * from,
SbBool copyconnections)
{
// let parent superclasses do their thing (copy fields, copy
// instance name, etc etc)
SoNode::copyContents(from, copyconnections);
// [..then copy internal data..]
}
Reimplemented from SoNode.
void SoVRMLGeometry::setupShapeHints (SoState * state, const SbBool ccw, const SbBool solid) [protected]
Convenience method that updates the shape hints element. lil helper doing the most behind the scenes. ๐
SbBool SoVRMLGeometry::shouldGLRender (SoGLRenderAction * action) [protected], [virtual]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. aka: not for you bestie, it's giving staff-only door. ๐
Reimplemented from SoShape.
Reimplemented in SoVRMLVertexLine, SoVRMLVertexPoint, and SoVRMLVertexShape.
SoChildList * SoVRMLGeometry::getChildren (void ) const [protected], [virtual]
Returns list of children for this node. the family tree, literally. ๐ธ
Reimplemented from SoNode.
Reimplemented in SoVRMLText.
void SoVRMLGeometry::notify (SoNotList * l) [protected], [virtual]
Notifies all auditors for this instance when changes are made. gossip girl behavior and honestly? we respect it. ๐ฃ
Reimplemented from SoShape.
Reimplemented in SoVRMLElevationGrid, SoVRMLExtrusion, SoVRMLIndexedLine, SoVRMLIndexedLineSet, SoVRMLIndexedShape, SoVRMLText, SoVRMLVertexLine, SoVRMLVertexPoint, and SoVRMLVertexShape.
Author ๐
Generated automatically by Doxygen for Coin from the source code. not me being auto-generated and still having main character energy ๐
okay that's the whole page bestie, we ate and left no crumbs โจ this was Coin, Version 3.1.3, and the page is dated SoVRMLGeometry(3) โ ily, go make something pretty ๐ซถ๐
๐ฆ where this page comes from
- fedora 43: Coin3-devel 3.1.3-40.fc43 ยท GPL-2.0-only
- fedora 43: Coin3-devel 3.1.3-40.fc43 ยท GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 ยท GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 ยท GPL-2.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms