Skip to content

⬅️ Back to Table of Contents

📄 CodeNode.js

📊 Analysis Summary

Metric Count
🔧 Functions 8
🧱 Classes 1
📦 Imports 2

📚 Table of Contents

🛠️ File Location:

📂 src/nodes/code/CodeNode.js

📦 Imports

Name Source
Node ../core/Node.js
nodeProxy ../tsl/TSLBase.js

Functions

CodeNode.setIncludes(includes: Node[]): CodeNode

JSDoc:

/**
     * Sets the includes of this code node.
     *
     * @param {Array<Node>} includes - The includes to set.
     * @return {CodeNode} A reference to this node.
     */

Parameters:

  • includes Node[]

Returns: CodeNode

Code
setIncludes( includes ) {

        this.includes = includes;

        return this;

    }

CodeNode.getIncludes(): Node[]

JSDoc:

/**
     * Returns the includes of this code node.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {Array<Node>} The includes.
     */

Returns: Node[]

Code
getIncludes( /*builder*/ ) {

        return this.includes;

    }

CodeNode.generate(builder: any): any

Parameters:

  • builder any

Returns: any

Calls:

  • this.getIncludes
  • include.build
  • builder.getCodeFromNode
  • this.getNodeType
Code
generate( builder ) {

        const includes = this.getIncludes( builder );

        for ( const include of includes ) {

            include.build( builder );

        }

        const nodeCode = builder.getCodeFromNode( this, this.getNodeType( builder ) );
        nodeCode.code = this.code;

        return nodeCode.code;

    }

CodeNode.serialize(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • super.serialize
Code
serialize( data ) {

        super.serialize( data );

        data.code = this.code;
        data.language = this.language;

    }

CodeNode.deserialize(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • super.deserialize
Code
deserialize( data ) {

        super.deserialize( data );

        this.code = data.code;
        this.language = data.language;

    }

js(src: string, includes: Node[]): CodeNode

Parameters:

  • src string
  • includes Node[]

Returns: CodeNode

Calls:

  • code
Code
( src, includes ) => code( src, includes, 'js' )

wgsl(src: string, includes: Node[]): CodeNode

Parameters:

  • src string
  • includes Node[]

Returns: CodeNode

Calls:

  • code
Code
( src, includes ) => code( src, includes, 'wgsl' )

glsl(src: string, includes: Node[]): CodeNode

Parameters:

  • src string
  • includes Node[]

Returns: CodeNode

Calls:

  • code
Code
( src, includes ) => code( src, includes, 'glsl' )

Classes

CodeNode

Class Code
class CodeNode extends Node {

    static get type() {

        return 'CodeNode';

    }

    /**
     * Constructs a new code node.
     *
     * @param {string} [code=''] - The native code.
     * @param {Array<Node>} [includes=[]] - An array of includes.
     * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
     */
    constructor( code = '', includes = [], language = '' ) {

        super( 'code' );

        /**
         * This flag can be used for type testing.
         *
         * @type {boolean}
         * @readonly
         * @default true
         */
        this.isCodeNode = true;

        /**
         * This flag is used for global cache.
         *
         * @type {boolean}
         * @default true
         */
        this.global = true;

        /**
         * The native code.
         *
         * @type {string}
         * @default ''
         */
        this.code = code;

        /**
         * An array of includes
         *
         * @type {Array<Node>}
         * @default []
         */
        this.includes = includes;

        /**
         * The used language.
         *
         * @type {('js'|'wgsl'|'glsl')}
         * @default ''
         */
        this.language = language;

    }

    /**
     * Sets the includes of this code node.
     *
     * @param {Array<Node>} includes - The includes to set.
     * @return {CodeNode} A reference to this node.
     */
    setIncludes( includes ) {

        this.includes = includes;

        return this;

    }

    /**
     * Returns the includes of this code node.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {Array<Node>} The includes.
     */
    getIncludes( /*builder*/ ) {

        return this.includes;

    }

    generate( builder ) {

        const includes = this.getIncludes( builder );

        for ( const include of includes ) {

            include.build( builder );

        }

        const nodeCode = builder.getCodeFromNode( this, this.getNodeType( builder ) );
        nodeCode.code = this.code;

        return nodeCode.code;

    }

    serialize( data ) {

        super.serialize( data );

        data.code = this.code;
        data.language = this.language;

    }

    deserialize( data ) {

        super.deserialize( data );

        this.code = data.code;
        this.language = data.language;

    }

}

Methods

setIncludes(includes: Node[]): CodeNode
Code
setIncludes( includes ) {

        this.includes = includes;

        return this;

    }
getIncludes(): Node[]
Code
getIncludes( /*builder*/ ) {

        return this.includes;

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

        const includes = this.getIncludes( builder );

        for ( const include of includes ) {

            include.build( builder );

        }

        const nodeCode = builder.getCodeFromNode( this, this.getNodeType( builder ) );
        nodeCode.code = this.code;

        return nodeCode.code;

    }
serialize(data: any): void
Code
serialize( data ) {

        super.serialize( data );

        data.code = this.code;
        data.language = this.language;

    }
deserialize(data: any): void
Code
deserialize( data ) {

        super.deserialize( data );

        this.code = data.code;
        this.language = data.language;

    }