different coding style, OOP

Working on new editor enhancements?
es_91
Enthusiast
Enthusiast
Posts: 298
Joined: Thu Jan 27, 2011 12:00 pm
Location: DE

different coding style, OOP

Post by es_91 »

Looking for an editor that supports extended PureBasic coding, such as ;{;} blocks, lowerCaseKeywords and a little OOP support.

Code: Select all

;{
	
	declareModule  float
	;{ //
		
		interFace  iBase
		;{ //
			
			queryInterface  (  *riid,  
			                   *addr  )
			addRef  (  )
			release  (  )
			
			toCharacter$  (  )
			toString$  (  )
			set  (  value.  d  )
			
		;} //
		endInterFace
		
		structure  base
		;{ //
			
			*virtual
			instances.  i
			mutex.  i
			
			value.  d
			
		;} //
		endStructure
		
		declare  new  (  value.  d  =  0  )
		
	;} //
	endDeclareModule
	
	
	module  float
	;{ //
		
		;{ //
			
			procedure  queryInterface  (  *this.  base, 
			                              *riid,  
			                              *addr  )
			;{ //
				
				procedureReturn  (  $80004002  )
				
			;} //
			endProcedure
			
			procedure  addRef  (  *this.  base  )
			;{ //
				
				lockMutex  (  *this\  mutex  )
				
				*this\  instances  +  1
				
				unlockMutex  (  *this\  mutex  )
				
				procedureReturn  (  *this\  instances  )
				
			;} //
			endProcedure
			
			procedure  release  (  *this.  base  )
			;{ //
				
				protected  index
				
				protected  instances
				
				lockMutex  (  *this\  mutex  )
				
				if  (  not  (  *this\  instances  )  )
				;{ //
					
					freeMutex  (  *this\  mutex  )
					
					freeStructure  (  *this  )
					
					procedureReturn
					
				;}
				else
				;{
					
					*this\  instances  -  1
					
				;} //
				endIf
				
				unlockMutex  (  *this\  mutex  )
				
				procedureReturn  (  *this\  instances  )
				
			;} //
			endProcedure
			
		;} //
		
		procedure  new  (  value.  d  =  0  )
		;{ //
			
			protected  *object.  base  =  allocateStructure  (  base  )
			
			if  (  *object  )
			;{  //
				
				*object\  virtual  =  ?vtVars
				*object\  mutex  =  createMutex  (  )
				*object\  instances  =  1
				
				*object\  value  =  value
				
			;}
			endIf
			
			procedureReturn  (  *object  )
			
		;} //
		endProcedure
		
		;{ //  object methods
			
			procedure  set  (  *this.  base,  
			                   value.  d  )
				;{ //
					
					*this\  value  =  value
					
				;} //
			endProcedure
			
			procedure$  toCharacter  (  *this.  base  )
			;{ //
				
				procedureReturn  (  chr  (  int  (  *this\  value  )  )  )
				
			;} //
			endProcedure
			
			procedure$  toString  (  *this.  base  )
			;{ //
				
				procedureReturn  (  str  (  int  (  *this\  value  )  )  )
				
			;} //
			endProcedure
			
		;} //
		
		dataSection
		;{ //
			
			vtVars:
			
			data.  i  @  queryInterface  (  )
			data.  i  @  addRef  (  )
			data.  i  @  release  (  )
			data.  i  @  toCharacter  (  )
			data.  i  @  toString  (  )
			data.  i  @  set  (  )
			
		;} //
		endDataSection
		
	;} //
	endModule
	
;}

;{  //  main
	
	openConsole  (  ""  )
	
	*float.  float::iBase  =  float::new  (  33  )
	
	printN  (  *float\  toCharacter$  (  )  )
	printN  (  "Chr() of the number "  +  *float\  toString$  (  )  )
	
	input  (  )
	
;} //
Here is a float class to demonstrate the coding scheme.

Since the PB IDE does not fully support these features... Is there any editor supporting some of these features right now?
:mrgreen: