@ -126,6 +126,12 @@ namespace settings { 
		
	
		
			
					 */ 	 */  
		
	
		
			
					typedef  void ( * RegisterCallback ) ( bpo : : options_description & ) ; 	typedef  void ( * RegisterCallback ) ( bpo : : options_description & ) ;  
		
	
		
			
						 
		
	
		
			
					/*!  
		
	
		
			
					 * 	@ brief 	Function  type  for  functions  changing  the  parser  state  
		
	
		
			
					 * 	between  the  first  and  second  run .  
		
	
		
			
					 */  
		
	
		
			
					typedef  void ( * IntermediateCallback ) ( bpo : : options_description & ,  bpo : : variables_map & ) ;  
		
	
		
			
					 
		
	
		
			
					/*! 	/*!  
		
	
		
			
					 * 	@ brief 	Function  type  for  function  checking  constraints  on  settings . 	 * 	@ brief 	Function  type  for  function  checking  constraints  on  settings .  
		
	
		
			
					 */ 	 */  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -160,6 +166,12 @@ namespace settings { 
		
	
		
			
							 * 	@ brief  Stores  register  callbacks . 			 * 	@ brief  Stores  register  callbacks .  
		
	
		
			
							 */ 			 */  
		
	
		
			
							std : : list < std : : pair < CallbackType ,  RegisterCallback > >  registerList ; 			std : : list < std : : pair < CallbackType ,  RegisterCallback > >  registerList ;  
		
	
		
			
							 
		
	
		
			
							/*!  
		
	
		
			
							 * 	@ brief  Stores  intermediate  callbacks .  
		
	
		
			
							 */  
		
	
		
			
							std : : list < std : : pair < CallbackType ,  IntermediateCallback > >  intermediateList ;  
		
	
		
			
							 
		
	
		
			
							/*! 			/*!  
		
	
		
			
							 * 	@ brief  Stores  check  callbacks . 			 * 	@ brief  Stores  check  callbacks .  
		
	
		
			
							 */ 			 */  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -233,6 +245,27 @@ namespace settings { 
		
	
		
			
								mrmc : : settings : : Callbacks : : getInstance ( ) - > registerList . push_back ( std : : pair < CallbackType ,  RegisterCallback > ( type ,  ptr ) ) ; 				mrmc : : settings : : Callbacks : : getInstance ( ) - > registerList . push_back ( std : : pair < CallbackType ,  RegisterCallback > ( type ,  ptr ) ) ;  
		
	
		
			
							} 			}  
		
	
		
			
										 
		
	
		
			
							/*!  
		
	
		
			
							 * 	@ brief  Registers  given  function  as  intermediate  callback .  
		
	
		
			
							 *   
		
	
		
			
							 * 	This  constructor  registers  a  callback  routine  that  can  check  
		
	
		
			
							 * 	the  option  assignment  after  the  first  run  and  change  the  
		
	
		
			
							 * 	options  description  before  the  second  run .  
		
	
		
			
							 * 	It  should  be  used  like  this :  
		
	
		
			
							 * 	@ code  
		
	
		
			
							 * 	void  intermediate ( bpo : : options_description &  desc ,  bpo : : variables_map &  map )  {  
		
	
		
			
							 * 		/ /  check  contents  of  map  and  maybe  change  desc  
		
	
		
			
							 * 	}  
		
	
		
			
							 * 	mrmc : : settings : : Register  reg ( mrmc : : settings : : CB_CLI ,  & intermediate ) ;  
		
	
		
			
							 * 	@ endcode  
		
	
		
			
							 * 	This  code  should  be  executed  during  static  initialization ,  i . e .  
		
	
		
			
							 * 	it  should  be  somewhere  in  the  cpp - file .  
		
	
		
			
							 */  
		
	
		
			
							Register ( const  CallbackType  type ,  const  IntermediateCallback  ptr )  
		
	
		
			
							{  
		
	
		
			
								mrmc : : settings : : Callbacks : : getInstance ( ) - > intermediateList . push_back ( std : : pair < CallbackType ,  IntermediateCallback > ( type ,  ptr ) ) ;  
		
	
		
			
							}  
		
	
		
			
				
 
		
	
		
			
							/*! 			/*!  
		
	
		
			
							 * 	@ brief  Registers  given  function  as  check  callback . 			 * 	@ brief  Registers  given  function  as  check  callback .  
		
	
		
			
							 *  			 *