Skip to content

⬅️ Back to Table of Contents

📄 StructNode.js

📊 Analysis Summary

Metric Count
🔧 Functions 5
🧱 Classes 1
📦 Imports 3
📊 Variables & Constants 3

📚 Table of Contents

🛠️ File Location:

📂 src/nodes/core/StructNode.js

📦 Imports

Name Source
Node ./Node.js
StructTypeNode ./StructTypeNode.js
nodeObject ../tsl/TSLCore.js

Variables & Constants

Name Type Kind Value Exported
structType any let/var nodeVar.type
structLayout StructTypeNode let/var new StructTypeNode( membersLayout, name )
values any let/var null

Functions

StructNode.getNodeType(builder: any): any

Parameters:

  • builder any

Returns: any

Calls:

  • this.structLayoutNode.getNodeType
Code
getNodeType( builder ) {

        return this.structLayoutNode.getNodeType( builder );

    }

StructNode.getMemberType(builder: any, name: any): any

Parameters:

  • builder any
  • name any

Returns: any

Calls:

  • this.structLayoutNode.getMemberType
Code
getMemberType( builder, name ) {

        return this.structLayoutNode.getMemberType( builder, name );

    }

StructNode.generate(builder: any): any

Parameters:

  • builder any

Returns: any

Calls:

  • builder.getVarFromNode
  • builder.getPropertyName
  • builder.addLineFlowCode
  • builder.generateStruct
Code
generate( builder ) {

        const nodeVar = builder.getVarFromNode( this );
        const structType = nodeVar.type;
        const propertyName = builder.getPropertyName( nodeVar );

        builder.addLineFlowCode( `${ propertyName } = ${ builder.generateStruct( structType, this.structLayoutNode.membersLayout, this.values ) }`, this );

        return nodeVar.name;

    }

struct(membersLayout: any, name: string): Function

Parameters:

  • membersLayout any
  • name string

Returns: Function

Calls:

  • Object.keys
  • nodeObject (from ../tsl/TSLCore.js)
Code
( membersLayout, name = null ) => {

    const structLayout = new StructTypeNode( membersLayout, name );

    const struct = ( ...params ) => {

        let values = null;

        if ( params.length > 0 ) {

            if ( params[ 0 ].isNode ) {

                values = {};

                const names = Object.keys( membersLayout );

                for ( let i = 0; i < params.length; i ++ ) {

                    values[ names[ i ] ] = params[ i ];

                }

            } else {

                values = params[ 0 ];

            }

        }

        return nodeObject( new StructNode( structLayout, values ) );

    };

    struct.layout = structLayout;
    struct.isStruct = true;

    return struct;

}

struct(params: any[]): any

Parameters:

  • params any[]

Returns: any

Calls:

  • Object.keys
  • nodeObject (from ../tsl/TSLCore.js)
Code
( ...params ) => {

        let values = null;

        if ( params.length > 0 ) {

            if ( params[ 0 ].isNode ) {

                values = {};

                const names = Object.keys( membersLayout );

                for ( let i = 0; i < params.length; i ++ ) {

                    values[ names[ i ] ] = params[ i ];

                }

            } else {

                values = params[ 0 ];

            }

        }

        return nodeObject( new StructNode( structLayout, values ) );

    }

Classes

StructNode

Class Code
class StructNode extends Node {

    static get type() {

        return 'StructNode';

    }

    constructor( structLayoutNode, values ) {

        super( 'vec3' );

        this.structLayoutNode = structLayoutNode;
        this.values = values;

        this.isStructNode = true;

    }

    getNodeType( builder ) {

        return this.structLayoutNode.getNodeType( builder );

    }

    getMemberType( builder, name ) {

        return this.structLayoutNode.getMemberType( builder, name );

    }

    generate( builder ) {

        const nodeVar = builder.getVarFromNode( this );
        const structType = nodeVar.type;
        const propertyName = builder.getPropertyName( nodeVar );

        builder.addLineFlowCode( `${ propertyName } = ${ builder.generateStruct( structType, this.structLayoutNode.membersLayout, this.values ) }`, this );

        return nodeVar.name;

    }

}

Methods

getNodeType(builder: any): any
Code
getNodeType( builder ) {

        return this.structLayoutNode.getNodeType( builder );

    }
getMemberType(builder: any, name: any): any
Code
getMemberType( builder, name ) {

        return this.structLayoutNode.getMemberType( builder, name );

    }
generate(builder: any): any
Code
generate( builder ) {

        const nodeVar = builder.getVarFromNode( this );
        const structType = nodeVar.type;
        const propertyName = builder.getPropertyName( nodeVar );

        builder.addLineFlowCode( `${ propertyName } = ${ builder.generateStruct( structType, this.structLayoutNode.membersLayout, this.values ) }`, this );

        return nodeVar.name;

    }