ארכיון יומי: 23 אוקטובר, 2008

אל תיתנו להם שפה לידיים

בזמן האחרון חזרתי לעשות binding לעוד header של Xlib (כולל ההרחבות שלו) לפסקל. ובמקור רציתי לכתוב "אל תיתנו להם C לידיים" אבל הבעיה הזו מוכרת בכל עולם התכנות, ואם העולם היה כתוב רובו בפסקל (והגיע הזמן באמת שזה יקרה), אז אנשים היו מתעללים בשפה באותה מידה.

אם חשבתם לרגע למה X כזה מסריח, מספיק שתעיפו מבט בקוד שלו. נתחיל בדברים "עדינים" כמו struct אחד מוכר וידוע בשם XEvent ועוד struct בהרחבה של X שנקרא xEvent (ההבדלים הם ב X מול ה x – כלומר הגודל של הX).

אתם עדיין לא הגעתם למצב שבו אתם מתחילים לקבל גועל נכון ?

אז הנה משהו יותר כבד (פרס למי שמצליח לקרוא. הפרס הוא כמובן לשכתב את זה לשפה נורמאלית כדוגמת פסקל 😛 [אם כי כבר עשיתי את העבודה בשבילכם]):

extern int (*XSetExtensionErrorHandler(
int (*handler)(
Display *,
char *,
char *
)
))(
Display *,
char *,
char *
);

מה, אתם לא מבינים ?! זה callback מוגדר בתוך פונקציה שמחזירה את הcallback עם אותם הפרמטרים. זה מאוד קל ופשוט ! להמשיך לקרוא