NamespaceNodeFlags (ENUM)

TYPE NamespaceNodeFlags :

The node type of a branch node. Several flags may be set concurrently. Not all of the flags defined here are actually generated yet by the code generator.

NOTE : Due to CDS-54976 we could not add new flags here, so they’ve been moved to NamespaceNodeFlagsEx!

InOut:

Name

Initial

Comment

None

0

Uninitialized variable.

NodeTypeMask

16#FF

The node type mask - 6 Bits for possible node types and flags

NodeTypeBranchNode

16#1

This node is part of the path. It is usually combined with one of the BranchNodeInfo flags below.

NodeTypeLeafNode

16#2

This node denotes a variable. Combine with the *VariableFlag below.

BranchNodeInfoMask

16#FF00

The bits in this mask define a namespace node not directly corresponding to the POU.

Apart from the BranchNodeImplicitRootNode flag, a branch node may have several of this flags set, for example, when a variable has an explicit namespace which equals the application name or library namespace.

BranchNodeImplicitRootNode

16#100

The implicit root node (not user visible except when directly using IecVarAccess)

In some of the cases when the implicit root node only has a single child, it is not exported to the IecVarAccess tables. It is never exported to the XML, as the ;NodeList elements represents the root node there.

BranchNodeApplicationName

16#200

An application name.

(May appear on several levels, as apps may be nested.)

BranchNodeLibraryNamespace

16#400

A library namespace.

(May appear on several levels, as libraries may be nested.)

BranchNodeExplicitNamespace

16#800

A path component explicitly specified via {attribute ‘namespace’ := ‘foo.bar’}

BranchNodeMemberAccess

16#1000

In the future, we might we allow non-top level nodes like foo.bar.baz to be exported directly, probably combined with one of the flags below.

SigTypeNodeMask

LWORD#4294901760

The bits in this mask define the type of POU which generated the current node.

A single one of this flags will appear at a variable node telling which kind of signature this variable originated from. (Currently not exported to IEC.)

One or more of this flags will appear at branch nodes which contain variable nodes, declaring which kind(s) of signature(s) the contained variables originated from. (Due to namespaces set via properties, several variables of different sources may appear below the same branch node.)

SigTypeGvl

16#10000

A global variable list

SigTypeProgram

16#20000

A program

SigTypeFB

16#40000

FBs may actually export var_static, and in the future when we allow non-top-level nodes to be exported.

SigTypeStruct

16#80000

For future extension, when we allow non-top-level nodes to be exported.

SigTypeMethod

16#100000

For future extension, when we allow non-top-level nodes to be exported.

SigTypeAction

16#200000

For future extension, when we allow non-top-level nodes to be exported.

SigTypeProperty

16#400000

For future extension, when we allow non-top-level nodes to be exported.

SigTypeTransition

16#800000

For future extension, when we allow non-top-level nodes to be exported.

SigTypeFunction

16#1000000

Functions may also define static variables which may be exportable.

ExportedVariableTypeMask

16#FF00000000

Information about the type of the exported variable.

ExportedVariableFlag

16#100000000

Denotes a “normal” exported variable.

ExportedStaticVariableFlag

16#200000000

The variable is a “static” variable which is exported e. G. from an FB which is used in the program.

ExportedPropertyVariableFlag

16#400000000

The variable represents a property.

ExportedVariable

ExportedVariableFlag + NodeTypeLeafNode

The variable node represents a normal exported variable.

ExportedStaticVariable

ExportedStaticVariableFlag + NodeTypeLeafNode

The variable node represents an exported static variable.

ExportedPropertyVariable

ExportedPropertyVariableFlag + NodeTypeLeafNode

The variable node represents an exported property with monitoring type ‘call’.

NodeFlagsMask

16#FF0000000000

The node property flags mask, those bits show some special properties of the nodes.

NodeFlagHidden

16#100000000000

This node is hidden, it should not be shown while browsing using the IecVarAcces or CmpIecVarAccess interfaces. (It can still be found by it’s node path, and queried using the IBaseTreeNode interfaces.) It is not exported to XML. As an implementation artifact, hidden nodes currently must always be sorted after the visible nodes. This must be guaranteed by naming the nodes accordingly. This is an implementation detail and may change in future versions.