void POVMS_Message::SetSourceAddress(POVMSAddress addr) { int err; err = POVMSMsg_SetSourceAddress(&data, addr); if(err != pov_base::kNoErr) throw POV_EXCEPTION_CODE(err); }
void MessageFactory::WarningAt(unsigned int level, const UCS2 *filename, POV_LONG line, POV_LONG column, POV_LONG offset, const char *format, ...) { va_list marker; POVMSObject msg; char localvsbuffer[1024]; sprintf(localvsbuffer, "%s Warning: ", stageName); va_start(marker, format); vsnprintf(localvsbuffer + strlen(localvsbuffer), 1023 - strlen(localvsbuffer), format, marker); va_end(marker); CleanupString(localvsbuffer); if((warningLevel < 5) || ((warningLevel < 10) && (level == 0))) return; if(level >= languageVersion) return; (void)POVMSObject_New(&msg, kPOVObjectClass_ControlData); (void)POVMSUtil_SetUCS2String(&msg, kPOVAttrib_FileName, filename); (void)POVMSUtil_SetLong(&msg, kPOVAttrib_Line, line); (void)POVMSUtil_SetLong(&msg, kPOVAttrib_Column, column); (void)POVMSUtil_SetLong(&msg, kPOVAttrib_FilePosition, offset); (void)POVMSUtil_SetString(&msg, kPOVAttrib_EnglishText, localvsbuffer); (void)POVMSUtil_SetInt(&msg, kPOVAttrib_Warning, 0); if(viewId != 0) (void)POVMSUtil_SetInt(&msg, kPOVAttrib_ViewId, viewId); else (void)POVMSUtil_SetInt(&msg, kPOVAttrib_SceneId, sceneId); if(viewId != 0) (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_ViewOutput, kPOVMsgIdent_Warning); else (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_SceneOutput, kPOVMsgIdent_Warning); (void)POVMSMsg_SetSourceAddress(&msg, sourceAddress); (void)POVMSMsg_SetDestinationAddress(&msg, destinationAddress); (void)POVMS_Send(NULL, &msg, NULL, kPOVMSSendMode_NoReply); }
// filename defaults to NULL, and line, column, and offset default to -1 std::string MessageFactory::SendError(const char *format, va_list arglist, const UCS2 *filename, POV_LONG line, POV_LONG column, POV_LONG offset) { POVMSObject msg; char localvsbuffer[1024]; sprintf(localvsbuffer, "%s Error: ", stageName); vsnprintf(localvsbuffer + strlen(localvsbuffer), 1023 - strlen(localvsbuffer), format, arglist); CleanupString(localvsbuffer); (void)POVMSObject_New(&msg, kPOVObjectClass_ControlData); if (filename != NULL) (void)POVMSUtil_SetUCS2String(&msg, kPOVAttrib_FileName, filename); if (line != -1) (void)POVMSUtil_SetLong(&msg, kPOVAttrib_Line, line); if (column != -1) (void)POVMSUtil_SetLong(&msg, kPOVAttrib_Column, column); if (offset != -1) (void)POVMSUtil_SetLong(&msg, kPOVAttrib_FilePosition, offset); (void)POVMSUtil_SetString(&msg, kPOVAttrib_EnglishText, localvsbuffer); (void)POVMSUtil_SetInt(&msg, kPOVAttrib_Error, 0); if(viewId != 0) { (void)POVMSUtil_SetInt(&msg, kPOVAttrib_ViewId, viewId); (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_ViewOutput, kPOVMsgIdent_FatalError); } else { (void)POVMSUtil_SetInt(&msg, kPOVAttrib_SceneId, sceneId); (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_SceneOutput, kPOVMsgIdent_FatalError); } (void)POVMSMsg_SetSourceAddress(&msg, sourceAddress); (void)POVMSMsg_SetDestinationAddress(&msg, destinationAddress); (void)POVMS_Send(NULL, &msg, NULL, kPOVMSSendMode_NoReply); return std::string(localvsbuffer); }
void MessageFactory::PossibleError(const char *format,...) { va_list marker; POVMSObject msg; char localvsbuffer[1024]; sprintf(localvsbuffer, "Possible %s Error: ", stageName); va_start(marker, format); vsnprintf(localvsbuffer + strlen(localvsbuffer), 1023 - strlen(localvsbuffer), format, marker); va_end(marker); CleanupString(localvsbuffer); if(warningLevel == 0) return; (void)POVMSObject_New(&msg, kPOVObjectClass_ControlData); (void)POVMSUtil_SetString(&msg, kPOVAttrib_EnglishText, localvsbuffer); (void)POVMSUtil_SetInt(&msg, kPOVAttrib_Error, 0); if(viewId != 0) (void)POVMSUtil_SetInt(&msg, kPOVAttrib_ViewId, viewId); else (void)POVMSUtil_SetInt(&msg, kPOVAttrib_SceneId, sceneId); if(viewId != 0) (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_ViewOutput, kPOVMsgIdent_Error); else (void)POVMSMsg_SetupMessage(&msg, kPOVMsgClass_SceneOutput, kPOVMsgIdent_Error); (void)POVMSMsg_SetSourceAddress(&msg, sourceAddress); (void)POVMSMsg_SetDestinationAddress(&msg, destinationAddress); (void)POVMS_Send(NULL, &msg, NULL, kPOVMSSendMode_NoReply); }