some more docs
This commit is contained in:
		
							parent
							
								
									b8d6ff01a6
								
							
						
					
					
						commit
						f00631cd88
					
				@ -47,10 +47,18 @@ class ObjDynamicContext(val delegate: ObjDynamic) : Obj() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Object that delegates all its field access/invocation operations to a callback. It is used to implement dynamic
 | 
				
			||||||
 | 
					 * objects using "dynamic" keyword.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
open class ObjDynamic(var readCallback: Statement? = null, var writeCallback: Statement? = null) : Obj() {
 | 
					open class ObjDynamic(var readCallback: Statement? = null, var writeCallback: Statement? = null) : Obj() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    override val objClass: ObjClass = type
 | 
					    override val objClass: ObjClass = type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Use read callback to dynamically resolve the field name. Note that it does not work
 | 
				
			||||||
 | 
					     * with method invocation which is implemented separately in [invokeInstanceMethod] below.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    override suspend fun readField(scope: Scope, name: String): ObjRecord {
 | 
					    override suspend fun readField(scope: Scope, name: String): ObjRecord {
 | 
				
			||||||
        return readCallback?.execute(scope.createChildScope(Arguments(ObjString(name))))?.let {
 | 
					        return readCallback?.execute(scope.createChildScope(Arguments(ObjString(name))))?.let {
 | 
				
			||||||
            if (writeCallback != null)
 | 
					            if (writeCallback != null)
 | 
				
			||||||
@ -61,6 +69,10 @@ open class ObjDynamic(var readCallback: Statement? = null, var writeCallback: St
 | 
				
			|||||||
            ?: super.readField(scope, name)
 | 
					            ?: super.readField(scope, name)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Notice that invocation currently does not rely on [readField], which is a buffy moment to be reconsidered
 | 
				
			||||||
 | 
					     * in the future, so we implement it separately:
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    override suspend fun invokeInstanceMethod(
 | 
					    override suspend fun invokeInstanceMethod(
 | 
				
			||||||
        scope: Scope,
 | 
					        scope: Scope,
 | 
				
			||||||
        name: String,
 | 
					        name: String,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user