You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1.0 KiB
						
					
					
				| // Conditions (a.k.a. exceptions) | |
|  | |
| #ifndef _CL_CONDITION_H | |
| #define _CL_CONDITION_H | |
|  | |
| #include "cln/malloc.h" | |
| #include "cln/io.h" | |
|  | |
| namespace cln { | |
| 
 | |
| struct cl_condition { | |
| 	// Allocation. | |
| 	void* operator new (size_t size) { return malloc_hook(size); } | |
| 	// Deallocation. | |
| 	void operator delete (void* ptr) { free_hook(ptr); } | |
| 	// Name. | |
| 	virtual const char * name () const = 0; | |
| 	// Print. | |
| 	virtual void print (std::ostream&) const = 0; | |
| 	// Virtual destructor. | |
| 	virtual ~cl_condition () = 0; | |
| private: | |
| 	virtual void dummy (); | |
| }; | |
| #define SUBCLASS_cl_condition() \ | |
| public:									  \ | |
| 	/* Allocation. */						  \ | |
| 	void* operator new (size_t size) { return malloc_hook(size); } \ | |
| 	/* Deallocation. */						  \ | |
| 	void operator delete (void* ptr) { free_hook(ptr); } | |
|  | |
| // Functions which want to raise a condition return a `cl_condition*'. | |
| // The caller checks this value. NULL means no condition. The one who | |
| // disposes the condition (handles it without resignalling it) should | |
| // call `delete' on the condition pointer. | |
|  | |
| }  // namespace cln | |
|  | |
| #endif /* _CL_CONDITION_H */
 |