#ifndef SHAPE_P_H_INCLUDED
#define SHAPE_P_H_INCLUDED

#include "CoreP.h"
#include "Shape.h"

typedef struct {
    void    (*draw)(Shape shape);
} ShapeClassDescriptorPart;

struct ShapeClassDescriptor_tag {
    CoreClassDescriptorPart         core;
    ShapeClassDescriptorPart        shape;
};

typedef struct {
    Color     color;
    Point     boundary[2];
} ShapePart;

typedef struct ShapeObj_tag {
    CorePart    core;
    ShapePart   shape;
} ShapeObj;

extern ShapeClassDescriptor shape_class_descriptor;
#endif /* SHAPE_P_H_INCLUDED */