1*afc2ba1dSToomas Soome #include "ficl.h" 2*afc2ba1dSToomas Soome 3*afc2ba1dSToomas Soome extern ficlSystem *ficlSystemGlobal; 4*afc2ba1dSToomas Soome 5*afc2ba1dSToomas Soome /* 6*afc2ba1dSToomas Soome * f i c l C a l l b a c k T e x t O u t 7*afc2ba1dSToomas Soome * Feeds text to the vm's output callback 8*afc2ba1dSToomas Soome */ 9*afc2ba1dSToomas Soome void ficlCallbackTextOut(ficlCallback * callback,char * text)10*afc2ba1dSToomas SoomeficlCallbackTextOut(ficlCallback *callback, char *text) 11*afc2ba1dSToomas Soome { 12*afc2ba1dSToomas Soome ficlOutputFunction textOut = NULL; 13*afc2ba1dSToomas Soome 14*afc2ba1dSToomas Soome if (callback != NULL) { 15*afc2ba1dSToomas Soome if (callback->textOut != NULL) 16*afc2ba1dSToomas Soome textOut = callback->textOut; 17*afc2ba1dSToomas Soome else if ((callback->system != NULL) && 18*afc2ba1dSToomas Soome (callback != &(callback->system->callback))) { 19*afc2ba1dSToomas Soome ficlCallbackTextOut(&(callback->system->callback), 20*afc2ba1dSToomas Soome text); 21*afc2ba1dSToomas Soome return; 22*afc2ba1dSToomas Soome } 23*afc2ba1dSToomas Soome } 24*afc2ba1dSToomas Soome 25*afc2ba1dSToomas Soome if ((textOut == NULL) && (ficlSystemGlobal != NULL)) { 26*afc2ba1dSToomas Soome callback = &(ficlSystemGlobal->callback); 27*afc2ba1dSToomas Soome textOut = callback->textOut; 28*afc2ba1dSToomas Soome } 29*afc2ba1dSToomas Soome 30*afc2ba1dSToomas Soome if (textOut == NULL) 31*afc2ba1dSToomas Soome textOut = ficlCallbackDefaultTextOut; 32*afc2ba1dSToomas Soome 33*afc2ba1dSToomas Soome (textOut)(callback, text); 34*afc2ba1dSToomas Soome } 35*afc2ba1dSToomas Soome 36*afc2ba1dSToomas Soome /* 37*afc2ba1dSToomas Soome * f i c l C a l l b a c k E r r o r O u t 38*afc2ba1dSToomas Soome * Feeds text to the vm's error output callback 39*afc2ba1dSToomas Soome */ 40*afc2ba1dSToomas Soome void ficlCallbackErrorOut(ficlCallback * callback,char * text)41*afc2ba1dSToomas SoomeficlCallbackErrorOut(ficlCallback *callback, char *text) 42*afc2ba1dSToomas Soome { 43*afc2ba1dSToomas Soome ficlOutputFunction errorOut = NULL; 44*afc2ba1dSToomas Soome 45*afc2ba1dSToomas Soome if (callback != NULL) { 46*afc2ba1dSToomas Soome if (callback->errorOut != NULL) 47*afc2ba1dSToomas Soome errorOut = callback->errorOut; 48*afc2ba1dSToomas Soome else if ((callback->system != NULL) && 49*afc2ba1dSToomas Soome (callback != &(callback->system->callback))) { 50*afc2ba1dSToomas Soome ficlCallbackErrorOut(&(callback->system->callback), 51*afc2ba1dSToomas Soome text); 52*afc2ba1dSToomas Soome return; 53*afc2ba1dSToomas Soome } 54*afc2ba1dSToomas Soome } 55*afc2ba1dSToomas Soome 56*afc2ba1dSToomas Soome if ((errorOut == NULL) && (ficlSystemGlobal != NULL)) { 57*afc2ba1dSToomas Soome callback = &(ficlSystemGlobal->callback); 58*afc2ba1dSToomas Soome errorOut = callback->errorOut; 59*afc2ba1dSToomas Soome } 60*afc2ba1dSToomas Soome 61*afc2ba1dSToomas Soome if (errorOut == NULL) { 62*afc2ba1dSToomas Soome ficlCallbackTextOut(callback, text); 63*afc2ba1dSToomas Soome return; 64*afc2ba1dSToomas Soome } 65*afc2ba1dSToomas Soome 66*afc2ba1dSToomas Soome (errorOut)(callback, text); 67*afc2ba1dSToomas Soome } 68