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.
60 lines
1.3 KiB
60 lines
1.3 KiB
/* |
|
htop |
|
(C) 2004-2006 Hisham H. Muhammad |
|
Released under the GNU GPL, see the COPYING file |
|
in the source distribution for its full text. |
|
*/ |
|
|
|
#include "Object.h" |
|
#include "RichString.h" |
|
#include "CRT.h" |
|
#include <stdlib.h> |
|
#include <stdio.h> |
|
#include <stdbool.h> |
|
|
|
#include "debug.h" |
|
|
|
/*{ |
|
typedef struct Object_ Object; |
|
|
|
typedef void(*Object_Display)(Object*, RichString*); |
|
typedef int(*Object_Compare)(const Object*, const Object*); |
|
typedef void(*Object_Delete)(Object*); |
|
|
|
struct Object_ { |
|
char* class; |
|
Object_Display display; |
|
Object_Compare compare; |
|
Object_Delete delete; |
|
}; |
|
}*/ |
|
|
|
/* private property */ |
|
char* OBJECT_CLASS = "Object"; |
|
|
|
void Object_new() { |
|
Object* this; |
|
this = malloc(sizeof(Object)); |
|
this->class = OBJECT_CLASS; |
|
this->display = Object_display; |
|
this->compare = Object_compare; |
|
this->delete = Object_delete; |
|
} |
|
|
|
bool Object_instanceOf(Object* this, char* class) { |
|
return this->class == class; |
|
} |
|
|
|
void Object_delete(Object* this) { |
|
free(this); |
|
} |
|
|
|
void Object_display(Object* this, RichString* out) { |
|
char objAddress[50]; |
|
sprintf(objAddress, "%s @ %p", this->class, (void*) this); |
|
RichString_write(out, CRT_colors[DEFAULT_COLOR], objAddress); |
|
} |
|
|
|
int Object_compare(const Object* this, const Object* o) { |
|
return (this - o); |
|
}
|
|
|