22 lines
		
	
	
		
			359 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
		
		
			
		
	
	
			22 lines
		
	
	
		
			359 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 
								 | 
							
								local PWClass = {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								local function MetaCall(cls, ...)
							 | 
						||
| 
								 | 
							
								    local inst = {
							 | 
						||
| 
								 | 
							
								        __CLASS = cls
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    cls.ctor(inst, ...)
							 | 
						||
| 
								 | 
							
								    return setmetatable(inst, cls)
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function PWClass.derive(name, base)
							 | 
						||
| 
								 | 
							
								    local cls = {
							 | 
						||
| 
								 | 
							
								        __CLASS_NAME = name
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    cls.__index = cls
							 | 
						||
| 
								 | 
							
								    return setmetatable(cls, {
							 | 
						||
| 
								 | 
							
								        __call = MetaCall
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								return PWClass
							 |