added a few useful macros
This commit is contained in:
		| @ -628,6 +628,15 @@ typedef struct moo_t moo_t; | ||||
| #define MOO_TYPE_MIN(type) \ | ||||
| 	((MOO_TYPE_IS_SIGNED(type)? MOO_TYPE_SIGNED_MIN(type): MOO_TYPE_UNSIGNED_MIN(type))) | ||||
|  | ||||
| /* round up a positive integer x to the nearst multiple of y */ | ||||
| #define MOO_ALIGN(x,y) ((((x) + (y) - 1) / (y)) * (y)) | ||||
|  | ||||
| /* round up a positive integer x to the nearst multiple of y where | ||||
|  * y must be a multiple of a power of 2*/ | ||||
| #define MOO_ALIGN_POW2(x,y) ((((x) + (y) - 1)) & ~((y) - 1)) | ||||
|  | ||||
| #define MOO_IS_UNALIGNED_POW2(x,y) ((x) & ((y) - 1)) | ||||
| #define MOO_IS_ALIGNED_POW2(x,y) (!MOO_IS_UNALIGNED_POW2(x,y)) | ||||
|  | ||||
| /* ========================================================================= | ||||
|  * COMPILER FEATURE TEST MACROS | ||||
|  | ||||
| @ -102,8 +102,6 @@ | ||||
| #	define MOO_MEMCMP(dst,src,size)  memcmp(dst,src,size) | ||||
| #endif | ||||
|  | ||||
| #define MOO_ALIGN(x,y) ((((x) + (y) - 1) / (y)) * (y)) | ||||
|  | ||||
|  | ||||
| /* ========================================================================= */ | ||||
| /* CLASS SPEC ENCODING                                                       */ | ||||
| @ -113,7 +111,7 @@ | ||||
|  * The spec field of a class object encodes the number of the fixed part | ||||
|  * and the type of the indexed part. The fixed part is the number of | ||||
|  * named instance variables. If the spec of a class is indexed, the object | ||||
|  * of the class can be i nstantiated with the size of the indexed part. | ||||
|  * of the class can be instantiated with the size of the indexed part. | ||||
|  * | ||||
|  * For example, on a platform where sizeof(moo_oow_t) is 4,  | ||||
|  * the layout of the spec field of a class as an OOP value looks like this: | ||||
|  | ||||
		Reference in New Issue
	
	Block a user