libember_slim reading and handling Matrix

107 views
Skip to first unread message

Arndt Stedler

unread,
Oct 13, 2017, 3:01:55 PM10/13/17
to ember-plus-development
I ran into a problem:
libember_slim, when used as a consumer misses the GlowFieldFlags in onMatrix as given in onNode and onParameter.
Furthermore the glowFields have to be expanded to fullfill the needs of the matrix properties.

you need to do something like:
/**
  * Lists flags used to describe which fields in
  * a GlowParameter or GlowNode struct are set.
  */
typedef enum EGlowFieldFlags
{
   GlowFieldFlag_None               = 0,
   GlowFieldFlag_Identifier         = 0x00000001,
    GlowFieldFlag_MatrixIdentifier = GlowFieldFlag_Identifier,
   GlowFieldFlag_Description        = 0x00000002,
    GlowFieldFlag_MatrixDescription = GlowFieldFlag_Description,
   GlowFieldFlag_Value              = 0x00000004,
    GlowFieldFlag_MatrixType = GlowFieldFlag_Value,
   GlowFieldFlag_Minimum            = 0x00000008,
    GlowFieldFlag_MatrixAddressingMode = GlowFieldFlag_Minimum,
   GlowFieldFlag_Maximum            = 0x00000010,
    GlowFieldFlag_MatrixTargetCount = GlowFieldFlag_Maximum,
   GlowFieldFlag_Access             = 0x00000020,
    GlowFieldFlag_MatrixSourceCount = GlowFieldFlag_Access,
   GlowFieldFlag_Format             = 0x00000040,
    GlowFieldFlag_MatrixMaxTotalConnects = GlowFieldFlag_Format,
   GlowFieldFlag_Factor             = 0x00000080,
    GlowFieldFlag_MatrixMaxConnectsPerTarget = GlowFieldFlag_Factor,
   GlowFieldFlag_IsOnline           = 0x00000100,
    GlowFieldFlag_MatrixParametersLocation = GlowFieldFlag_IsOnline,
   GlowFieldFlag_Step               = 0x00000200,
    GlowFieldFlag_MatrixGainParameterNumber = GlowFieldFlag_Step,
 //GlowFieldFlag_DefaultValue       = 0x00000400,
    GlowFieldFlag_MatrixLabelCollection = 0x00000400,
   GlowFieldFlag_Type               = 0x00000800,
    GlowFieldFlag_MatrixSchemaIdentifier = GlowFieldFlag_Type,
   GlowFieldFlag_StreamIdentifier   = 0x00001000,
   GlowFieldFlag_Formula            = 0x00002000,
   GlowFieldFlag_Enumeration        = 0x00004000,
 //GlowFieldFlag_EnumMap            = 0x00008000,
   GlowFieldFlag_StreamDescriptor   = 0x00010000,
   GlowFieldFlag_IsRoot             = 0x00020000,
   GlowFieldFlag_SchemaIdentifier   = 0x00040000,
   GlowFieldFlag_Connections        = 0x00000005,

   GlowFieldFlag_All                = 0xFFFFFFFF,
} GlowFieldFlags;

and

typedef void (*onMatrix_t)(const GlowMatrix *pMatrix, GlowFieldFlags fields, const berint *pPath, int pathLength, voidptr state);

and keep in mind that the glowFieldflags are contextspecific for each container;therefore it is ok to have multiple names using the same value.

someone has defined GlowFieldFlag_Connections as 0x05 i find that this define must be removed ASAP;for it breaks the rule of bitflags and it is not used at all
Reply all
Reply to author
Forward
0 new messages