📄 TempNode.js
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 2 |
🧱 Classes | 1 |
📦 Imports | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 src/nodes/core/TempNode.js
📦 Imports¶
Name | Source |
---|---|
Node |
./Node.js |
Functions¶
TempNode.hasDependencies(builder: NodeBuilder): boolean
¶
JSDoc:
/**
* Whether this node is used more than once in context of other nodes.
*
* @param {NodeBuilder} builder - The node builder.
* @return {boolean} A flag that indicates if there is more than one dependency to other nodes.
*/
Parameters:
builder
NodeBuilder
Returns: boolean
Calls:
builder.getDataFromNode
TempNode.build(builder: any, output: any): any
¶
Parameters:
builder
any
output
any
Returns: any
Calls:
builder.getBuildStage
builder.getVectorType
this.getNodeType
builder.getDataFromNode
builder.format
this.hasDependencies
super.build
builder.getVarFromNode
builder.getPropertyName
builder.addLineFlowCode
Code
build( builder, output ) {
const buildStage = builder.getBuildStage();
if ( buildStage === 'generate' ) {
const type = builder.getVectorType( this.getNodeType( builder, output ) );
const nodeData = builder.getDataFromNode( this );
if ( nodeData.propertyName !== undefined ) {
return builder.format( nodeData.propertyName, type, output );
} else if ( type !== 'void' && output !== 'void' && this.hasDependencies( builder ) ) {
const snippet = super.build( builder, type );
const nodeVar = builder.getVarFromNode( this, null, type );
const propertyName = builder.getPropertyName( nodeVar );
builder.addLineFlowCode( `${ propertyName } = ${ snippet }`, this );
nodeData.snippet = snippet;
nodeData.propertyName = propertyName;
return builder.format( nodeData.propertyName, type, output );
}
}
return super.build( builder, output );
}
Classes¶
TempNode
¶
Class Code
class TempNode extends Node {
static get type() {
return 'TempNode';
}
/**
* Constructs a temp node.
*
* @param {?string} nodeType - The node type.
*/
constructor( nodeType = null ) {
super( nodeType );
/**
* This flag can be used for type testing.
*
* @type {boolean}
* @readonly
* @default true
*/
this.isTempNode = true;
}
/**
* Whether this node is used more than once in context of other nodes.
*
* @param {NodeBuilder} builder - The node builder.
* @return {boolean} A flag that indicates if there is more than one dependency to other nodes.
*/
hasDependencies( builder ) {
return builder.getDataFromNode( this ).usageCount > 1;
}
build( builder, output ) {
const buildStage = builder.getBuildStage();
if ( buildStage === 'generate' ) {
const type = builder.getVectorType( this.getNodeType( builder, output ) );
const nodeData = builder.getDataFromNode( this );
if ( nodeData.propertyName !== undefined ) {
return builder.format( nodeData.propertyName, type, output );
} else if ( type !== 'void' && output !== 'void' && this.hasDependencies( builder ) ) {
const snippet = super.build( builder, type );
const nodeVar = builder.getVarFromNode( this, null, type );
const propertyName = builder.getPropertyName( nodeVar );
builder.addLineFlowCode( `${ propertyName } = ${ snippet }`, this );
nodeData.snippet = snippet;
nodeData.propertyName = propertyName;
return builder.format( nodeData.propertyName, type, output );
}
}
return super.build( builder, output );
}
}
Methods¶
hasDependencies(builder: NodeBuilder): boolean
¶
build(builder: any, output: any): any
¶
Code
build( builder, output ) {
const buildStage = builder.getBuildStage();
if ( buildStage === 'generate' ) {
const type = builder.getVectorType( this.getNodeType( builder, output ) );
const nodeData = builder.getDataFromNode( this );
if ( nodeData.propertyName !== undefined ) {
return builder.format( nodeData.propertyName, type, output );
} else if ( type !== 'void' && output !== 'void' && this.hasDependencies( builder ) ) {
const snippet = super.build( builder, type );
const nodeVar = builder.getVarFromNode( this, null, type );
const propertyName = builder.getPropertyName( nodeVar );
builder.addLineFlowCode( `${ propertyName } = ${ snippet }`, this );
nodeData.snippet = snippet;
nodeData.propertyName = propertyName;
return builder.format( nodeData.propertyName, type, output );
}
}
return super.build( builder, output );
}