📄 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
StructNode.getMemberType(builder: any, name: any): any
¶
Parameters:
builder
any
name
any
Returns: any
Calls:
this.structLayoutNode.getMemberType
Code
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
¶
getMemberType(builder: any, name: any): any
¶
Code
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;
}