static int w_scanblt(SCANBLT **scanblt) { LOGSTR((LF_LOG, "w_scanblt: x_scanblt(%p)\n", scanblt)); if (!x_scanblt(scanblt)) return (0); LOGSTR((LF_LOG, "w_scanblt: %p->refcnt = %d\n", *scanblt, (*scanblt)->refcnt)); if ((*scanblt)->refcnt != 1) { LOGSTR((LF_LOG, "w_scanblt: dup_scanblt(%p)\n", *scanblt)); *scanblt = dup_scanblt(*scanblt); } LOGSTR((LF_LOG, "w_scanblt: *%p = %p\n", scanblt, *scanblt)); return (*scanblt) ? (*scanblt)->x1 - (*scanblt)->x0 : 0; }
static int x_scanblt(SCANBLT **scanblt) { LOGSTR((LF_LOG, "x_scanblt: %p\n", scanblt)); if (!scanblt) return (0); LOGSTR((LF_LOG, "x_scanblt: *%p = %p\n", scanblt, *scanblt)); if (!*scanblt) { if (!(*scanblt = (SCANBLT *) WinMalloc(sizeof(SCANBLT)))) { return (0); } LOGSTR((LF_LOG, "x_scanblt: *%p = %p\n", scanblt, *scanblt)); (*scanblt)->refcnt = 1; (*scanblt)->x0 = 0; (*scanblt)->x1 = 0; (*scanblt)->x = (void *) 0; } return ((*scanblt)->refcnt); }
static void free_scanblt(SCANBLT **scanblt) { LOGSTR((LF_LOG, "free_scanblt: %p\n", scanblt)); if (!scanblt) return; LOGSTR((LF_LOG, "free_scanblt: *%p = %p\n", scanblt, *scanblt)); if (!*scanblt) return; LOGSTR((LF_LOG, "free_scanblt: %p->refcnt = %d\n", *scanblt, (*scanblt)->refcnt)); if (--((*scanblt)->refcnt) == 0) { LOGSTR((LF_LOG, "free_scanblt: free %p\n", *scanblt)); WinFree(*scanblt); } *scanblt = (SCANBLT *) 0; LOGSTR((LF_LOG, "free_scanblt: *%p = %p\n", scanblt, *scanblt)); }
/* * ======== main ======== */ Int main(Int argc, Char* argv[]) { Error_Block eb; Task_Params taskParams; Log_print0(Diags_INFO, LOGSTR(1)); /* must initialize the error block before using it */ Error_init(&eb); /* create main thread (interrupts not enabled in main on BIOS) */ Task_Params_init(&taskParams); taskParams.instance->name = "smain"; taskParams.arg0 = (UArg)argc; taskParams.arg1 = (UArg)argv; taskParams.stackSize = 0x700; Task_create(smain, &taskParams, &eb); if (Error_check(&eb)) { System_abort((String)(LOGSTR(13))); } /* start scheduler, this never returns */ BIOS_start(); /* should never get here */ return(0); }
static int w_worldblt(WORLDBLT **worldblt, int y) { LOGSTR((LF_LOG, "w_worldblt: x_worldblt(%p, %d)\n", worldblt, y)); if (!x_worldblt(worldblt, y)) return (0); LOGSTR((LF_LOG, "w_worldblt: w_scanblt(%p)\n", (*worldblt)->y + y)); return (w_scanblt((*worldblt)->y + y)); }
BOOL WINAPI PeekMessage(LPMSG lpMsg, HWND hWnd, UINT uMin, UINT uMax,UINT uFlg) { BOOL bRet; static MSG msg; static BOOL bState; APISTR((LF_APICALL,"PeekMessage(LPMSG=%x,HWND=%x,UINT=%x,UINT=%x,UINT=%x)\n", lpMsg,hWnd,uMin,uMax,uFlg)); if ((bRet = TWIN_DriverMessage(lpMsg,hWnd,uMin,uMax,uFlg,TRUE))) { if (lpHookList[WH_GETMESSAGE+1]) { lpHookList[WH_GETMESSAGE+1]->lpfnHookProc(0,0,(LPARAM)lpMsg); } } if (bRet) { msg = *lpMsg; bState = FALSE; LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n", lpMsg->hwnd,lpMsg->message, GetTwinMsgCode(lpMsg->hwnd, lpMsg->message), lpMsg->wParam,lpMsg->lParam)); APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",TRUE)); return TRUE; } else { if (bState && uMin == WM_MOUSEMOVE && uMax == WM_MOUSEMOVE) { *lpMsg = msg; lpMsg->message = WM_MOUSEMOVE; bState = FALSE; LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n", lpMsg->hwnd,lpMsg->message, GetTwinMsgCode(lpMsg->hwnd, lpMsg->message), lpMsg->wParam,lpMsg->lParam)); APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",TRUE)); return TRUE; } if (msg.message == WM_MOUSEMOVE) { msg.message = WM_ENTERIDLE; bState = TRUE; } else bState = FALSE; LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n", lpMsg->hwnd,lpMsg->message, GetTwinMsgCode(lpMsg->hwnd, lpMsg->message), lpMsg->wParam,lpMsg->lParam)); APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",FALSE)); return FALSE; } }
static WORLDBLT *xscaleblt(WORLDBLT *worldblt, double m11) { /* perform scale operation * | m11 0 0 | * | 0 1 0 | * | 0 0 1 | */ int m11_numer, m11_denom; fraction(m11, &m11_numer, &m11_denom); LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n", worldblt, m11, m11_numer, m11_denom)); if (!worldblt) return ((WORLDBLT *) 0); if (m11_numer == m11_denom) return (worldblt); if (m11_numer == -m11_denom) return (xmirrorblt(worldblt)); if (m11_numer < 0) { worldblt = xmirrorblt(worldblt); m11 = -m11; m11_numer = -m11_numer; LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n", worldblt, m11, m11_numer, m11_denom)); } if (m11_denom < 0) { worldblt = xmirrorblt(worldblt); m11 = -m11; m11_denom = -m11_denom; LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n", worldblt, m11, m11_numer, m11_denom)); } return (worldblt); }
void functor_base::dump (std::string msg) { LOGSTR (DEBUG, "functor_base dump") << " (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << std::endl; }
LONG WINAPI DispatchMessage(const MSG *lpMsg) { TIMERPROC lpfnTimerProc; LONG rc = 0L; APISTR((LF_APICALL,"DispatchMessage(MSG *%x)\n", lpMsg)); if((lpMsg->message == WM_TIMER || lpMsg->message == WM_SYSTIMER) && (lpfnTimerProc = (TIMERPROC)lpMsg->lParam)) { LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n", lpMsg->hwnd,lpMsg->message, GetTwinMsgCode(lpMsg->hwnd, lpMsg->message), lpMsg->wParam,lpMsg->lParam)); lpfnTimerProc(lpMsg->hwnd,lpMsg->message,(UINT)lpMsg->wParam, GetTickCount()); APISTR((LF_APIRET,"DispatchMessage: returns LONG 1L\n")); return 1L; } if (lpMsg->hwnd) rc = SendMessage(lpMsg->hwnd,lpMsg->message, lpMsg->wParam,lpMsg->lParam); APISTR((LF_APIRET,"DispatchMessage: returns LONG %d\n",rc)); return 0L; }
void impl_base::dump (std::string msg) { LOGSTR (DEBUG, "impl_base dump") << "impl_base (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl; engine_.dump (" engine_ : "); engine_->dump(); }
BOOL WINAPI GetMessage(LPMSG lpMsg, HWND hWnd, UINT uMin, UINT uMax) { DWORD pos=0; BOOL rc; APISTR((LF_APICALL,"GetMessage(LPMSG=%x,HWND=%x,UINT=%x,UINT=%x)\n", lpMsg,hWnd,uMin,uMax)); TWIN_DriverMessage(lpMsg,hWnd,uMin,uMax,PM_REMOVE,FALSE); if(DebugMessage == lpMsg->message) pos++; if((pos = MAKELONG( lpMsg->pt.x,lpMsg->pt.y))) LastMessagePos = pos; if(lpMsg->time) LastMessageTime = lpMsg->time; LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n", lpMsg->hwnd,lpMsg->message, GetTwinMsgCode(lpMsg->hwnd, lpMsg->message), lpMsg->wParam,lpMsg->lParam)); rc = lpMsg->message != WM_QUIT; APISTR((LF_APIRET,"GetMessage: returns BOOL %x\n",rc)); return rc; }
void cpi_base::dump (std::string msg) { LOGSTR (DEBUG, "cpi_base dump") << "cpi_base (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl; }
DWORD lsd_display_escape(WORD msg, HDC32 hDC32, DWORD dwParam, LPLSDS_PARAMS lpStruct) { int nInt; switch (dwParam) { case GETTECHNOLOGY: return DRVCALL_GRAPHICS(PGH_GETDEVICECAPS, hDC32->lpDrvData,TECHNOLOGY,0); case MFCOMMENT: return 0L; case QUERYESCSUPPORT: nInt = *((int *)lpStruct->lsde.escape.lpszInData); LOGSTR((LF_LOG,"ESCAPE: QUERYESCSUPPORT for DISPLAY, func %x\n", nInt)); return 0L; default: return 0L; } }
virtual void dump (std::string msg = "") { LOGSTR (DEBUG, "task dump") << "impl::task (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl; idata_.dump (" idata_ : "); idata_->dump(); }
static WORLDBLT *yscaleblt(WORLDBLT *worldblt, double m22) { /* perform scale operation * | 1 0 0 | * | 0 m22 0 | * | 0 0 1 | */ int m22_numer, m22_denom; fraction(m22, &m22_numer, &m22_denom); LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n", worldblt, m22, m22_numer, m22_denom)); if (!worldblt) return ((WORLDBLT *) 0); if (m22_numer == m22_denom) return (worldblt); if (m22_numer == -m22_denom) return (ymirrorblt(worldblt)); if (m22_numer < 0) { worldblt = ymirrorblt(worldblt); m22 = -m22; m22_numer = -m22_numer; LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n", worldblt, m22, m22_numer, m22_denom)); } if (m22_denom < 0) { worldblt = ymirrorblt(worldblt); m22 = -m22; m22_denom = -m22_denom; LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n", worldblt, m22, m22_numer, m22_denom)); } return (worldblt); }
void dump (std::string msg = "") { LOGSTR (DEBUG, "task_instance_data dump") << "(" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl << " t_cc : " << std::endl; t_cc.dump (); t_cc->dump (); // should give infinite recursion! }
static WORLDBLT *yshearblt(WORLDBLT *worldblt, double m21) { /* perform shear operation * | 1 0 0 | * | m21 1 0 | * | 0 0 1 | */ int y; double dx; LOGSTR((LF_LOG, "yshearblt: %p, m21 = %f\n", worldblt, m21)); if (!worldblt) return ((WORLDBLT *) 0); if (fabs((worldblt->y1 - worldblt->y0) * m21) < 0.5) return (worldblt); LOGSTR((LF_LOG, "yshearblt: x0 = %d, x1 = %d, y0 = %d, y1 = %d\n", worldblt->x0, worldblt->x1, worldblt->y0, worldblt->y1)); worldblt->x0 = INT_MAX; worldblt->x1 = INT_MIN; for (y = worldblt->y0, dx = y * m21; y < worldblt->y1; y++, dx += m21) { if (!x_worldblt(&worldblt, y)) { continue; } LOGSTR((LF_LOG, "yshearblt: [%d] x0 = %d, x1 = %d\n", y, worldblt->y[y]->x0, worldblt->y[y]->x1)); worldblt->y[y]->x0 += dx; worldblt->y[y]->x1 += dx; worldblt->x0 = min(worldblt->x0, worldblt->y[y]->x0); worldblt->x1 = max(worldblt->x1, worldblt->y[y]->x1); LOGSTR((LF_LOG, "yshearblt: [%d] x0 = %d, x1 = %d\n", y, worldblt->y[y]->x0, worldblt->y[y]->x1)); } LOGSTR((LF_LOG, "yshearblt: x0 = %d, x1 = %d, y0 = %d, y1 = %d\n", worldblt->x0, worldblt->x1, worldblt->y0, worldblt->y1)); return (worldblt); }
T get_result (void) { SAGA_UTIL_STACKTRACE (); // FIXME: error check: is cast valid? LOGSTR (DEBUG, "saga::async::task get_result") << " getting task result" << std::endl; return impl_->get_result ()->get <T> (); }
void dump (std::string msg = "") { LOGSTR (DEBUG, "func_0 dump") << "func (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl << " call : " << saga::util::demangle (typeid (call_).name ()) << " : " << this->get_name () << std::endl << " IMPL : " << saga::util::demangle (typeid (IMPL ).name ()) << std::endl << " CPI : " << saga::util::demangle (typeid (CPI ).name ()) << std::endl << " RET : " << saga::util::demangle (typeid (RET ).name ()) << std::endl; }
void dump (std::string msg = "") { LOGSTR (DEBUG, "impl::file dump") << "impl::file (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl << " valid : " << valid_ << std::endl << " url : " << url_ << std::endl << " pos : " << pos_ << std::endl; }
void engine::dump (std::string msg) { LOGSTR (DEBUG, "engine dump") << "engine (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl; for ( unsigned int i = 0; i < cpis_.size (); i++ ) { cpis_[i].dump(); } }
virtual void dump (std::string msg = "") { LOGSTR (DEBUG, "func dump") << "func : " << this << " : " << saga::util::demangle (typeid (*this).name ()) << std::endl << " IMPL : " << saga::util::demangle (typeid (IMPL ).name ()) << std::endl << " CPI : " << saga::util::demangle (typeid (CPI ).name ()) << std::endl << " RET : " << saga::util::demangle (typeid (RET ).name ()) << std::endl; result_.dump (" result_ : "); if ( result_ ) result_->dump (); }
////////////////////////////////////////////////////////////////////// // // the SAGA Engine implementation, which loads all adaptors, and // supports the SAGA file implementation. // // In reality, adaptor registration will be more complex: if an adaptor // registers, the engine will inspect it, to register it for all CPI's it // knows about: // // if ( adaptor.is_a <saga_object> () ) // object_cpis.push_back (adaptor); // if ( adaptor.is_a <saga_attribute> () ) // attribute_cpis.push_back (adaptor); // ... // // or something slightly more clever ;-) // engine::engine (void) { SAGA_UTIL_STACKTRACE (); LOGSTR (INFO, "engine") << "engine: register all adaptors"; // create and register adaptor instances cpis_.push_back (open_adaptor <saga::adaptor::test::file_adaptor_0> ()); cpis_.push_back (open_adaptor <saga::adaptor::test::file_adaptor_1> ()); cpis_.push_back (open_adaptor <saga::adaptor::test::dir_adaptor_0> ()); cpis_.push_back (open_adaptor <saga::adaptor::test::dir_adaptor_1> ()); cpis_.push_back (open_adaptor <saga::adaptor::test::task_adaptor_0> ()); }
T get_result (void) { SAGA_UTIL_STACKTRACE (); if ( ! result_ ) { // no type set, yet SAGA_UTIL_STACKDUMP (); throw "result type is not yet set"; } if ( ! has_result_type <T> () ) { LOGSTR (DEBUG, "call_context get_result") << "requested " << saga::util::demangle (typeid (T).name ()) << std::endl; LOGSTR (DEBUG, "call_context get_result") << "available " << result_->get_ptype () << std::endl; SAGA_UTIL_STACKDUMP (); throw "Incorrect result type requested"; } return result_->get <T> (); }
void set_result (T res) { // FIXME: make sure this is called only once, or, at least, always // called with the same type. We might want to do that on // result_t_detail level though. Also, this ambiguity would be // avoided by class level templatization SAGA_UTIL_STACKTRACE (); LOGSTR (DEBUG, "call_context set_result") << "typeset " << saga::util::demangle (typeid (T).name ()) << std::endl; result_->set <T> (res); }
static SCANBLT *not_scanblt(SCANBLT *scanblt1) { SCANBLT *scanblt = dup_scanblt(scanblt1); LOGSTR((LF_LOG, "not_scanblt: %p = ~%p\n", scanblt, scanblt1)); if (scanblt && w_scanblt(&scanblt)) { } return (scanblt); }
static void fraction(double f, int *numer, int *denom) { double emax, e; int n, d; LOGSTR((LF_LOG, "fraction: %f\n", f)); emax = 1.0e6; for (d = 16; d > 0; --d) { n = (int)(f * d); e = fabs(f - ((double) n / (double) d)); if (e <= emax) { emax = e; *numer = n; *denom = d; LOGSTR((LF_LOG, " = (%d / %d) +/- %f\n", n, d, emax)); } } }
int WINAPI ToAscii(UINT uVirtKey, UINT uScanCode, BYTE *lpbKeyState, DWORD *lpdwTransKey, UINT fuState) { LPSTR lpKeyBuffer = (LPSTR)lpdwTransKey; LOGSTR((LF_API,"ToAscii STUB: (%x,%x,%x,%x,%x)\n", uVirtKey,uScanCode,lpbKeyState,lpdwTransKey,fuState)); /* virtual key is ascii, but need to account for shift keys... */ *lpKeyBuffer = uVirtKey; return 1; }
static SCANBLT *xor_scanblt(SCANBLT *scanblt1, SCANBLT *scanblt2) { SCANBLT *scanblt = dup_scanblt(scanblt1); LOGSTR((LF_LOG, "xor_scanblt: %p = %p ^ %p\n", scanblt, scanblt1, scanblt2)); if (scanblt) { } return (scanblt); }
/** * @brief Sets the hostname of the socket. * @param[in] hostname A string value that equal to the hostname of the socket. * @retval false Returned if the hostname is empty. * @retval true Returned if the hostname was successfully set. */ const bool Socket::sHostname( const string& hostname ) { UFLAGS_DE( flags ); if ( hostname.empty() ) { LOGSTR( flags, "Socket::sHostname()-> called with empty hostname" ); return false; } m_hostname = hostname; return true; }