Ejemplo n.º 1
0
extern "C" __declspec(dllexport) kkrError_t KkrSetEventHandler(kkrHandle_t hBoard, kkrSolveEventRequest_t req, kkrSolveEventHandler_t cb, void * pUser)
{
	kkrError_t retVal = KKRERR_NO_ERROR;

	if(!HandleExists(hBoard))
		return KKRERR_INVALID_HANDLE;

	kakuro::slvEventRequest_t kReq;
	switch(req) {
	case KKRREQEVENT_NONE:
		kReq = kakuro::REQEVENT_NONE;
		break;
	case KKRREQEVENT_SOLUTION:
		kReq = kakuro::REQEVENT_SOLUTION;
		break;
	case KKRREQEVENT_DETERMINED:
		kReq = kakuro::REQEVENT_DETERMINED;
		break;
	case KKRREQEVENT_TEMPORARY:
		kReq = kakuro::REQEVENT_TEMPORARY;
		break;
	default:
		retVal = KKRERR_INVALID_ARGUMENT;
		goto quit;
	}

	kakuro::solver_t * pSolver = reinterpret_cast<kakuro::solver_t *>(hBoard);
	try {
		pSolver->SetEventHandler(kReq, cb, pUser);
	}
	catch(kakuro::slvExceptionInvalidArgument_t & eArg) {
		retVal = KKRERR_INVALID_ARGUMENT;
	}
	catch(kakuro::slvException_t & e) {
		retVal = KKRERR_INTERNAL_ERROR;
	}
	catch(...) {
		retVal = KKRERR_SYSTEM_ERROR;
	}

quit:
	return retVal;
}
Ejemplo n.º 2
0
extern "C" __declspec(dllexport) kkrError_t KkrSolve(kkrHandle_t HBoard)
{
	kkrError_t retVal = KKRERR_NO_ERROR;

	if(!HandleExists(HBoard))
		return KKRERR_INVALID_HANDLE;

	kakuro::solver_t * pSolver = reinterpret_cast<kakuro::solver_t *>(HBoard);
	try {
		pSolver->Solve();
	}
	catch(kakuro::slvException_t & eKkr) {
		retVal = KKRERR_INTERNAL_ERROR;
	}
	catch(...) {
		retVal = KKRERR_SYSTEM_ERROR;
	}

	return retVal;
}
Ejemplo n.º 3
0
/*----------------------------------------------------------------------------
	DispatchEvent 
	
	Handles all OSL messages that this object should handle
----------------------------------------------------------------------------*/
void AEGenericClass::DispatchEvent(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply)
{
	OSErr		err = noErr;
	
	AEEventID		eventID;
	OSType		typeCode;
	Size			actualSize 	= 0L;
	
	// Get the event ID
	err = AEGetAttributePtr(appleEvent, 	keyEventIDAttr, 
									typeType, 
									&typeCode, 
									(Ptr)&eventID, 
									sizeof(eventID), 
									&actualSize);
	ThrowIfOSErr(err);
	
	try
	{
		switch (eventID)
		{
			case kAEClone:
				HandleDuplicate(token, appleEvent, reply);
				break;
				
			case kAEClose:
				HandleClose(token, appleEvent, reply);
				break;
				
			case kAECountElements:
				HandleCount(token, appleEvent, reply);
				break;
				
			case kAECreateElement:
				HandleMake(token, appleEvent, reply);
				break;
				
			case kAEDelete:
				HandleDelete(token, appleEvent, reply);
				break;
				
			case kAEDoObjectsExist:
				HandleExists(token, appleEvent, reply);
				break;
				
			case kAEGetData:
				HandleGetData(token, appleEvent, reply);
				break;
				
			case kAEGetDataSize:
				HandleDataSize(token, appleEvent, reply);
				break;
				
			case kAEMove:
				HandleMove(token, appleEvent, reply);
				break;
				
			case kAEOpen:		// == kAEOpenDocuments
				HandleOpen(token, appleEvent, reply);
				break;
				
			case kAEPrint:
				HandlePrint(token, appleEvent, reply);
				break;
			
			case kAEOpenApplication:
				HandleRun(token, appleEvent, reply);
				break;
			
			case kAEReopenApplication:
			  HandleReOpen(token, appleEvent, reply);
			  break; 
							
			case kAEQuitApplication:
				HandleQuit(token, appleEvent, reply);
				break;
				
			case kAESave:
				HandleSave(token, appleEvent, reply);
				break;
				
			case kAESetData:
				HandleSetData(token, appleEvent, reply);
				break;

			// MT-NW suite
			case kAEExtract:
				HandleExtract(token, appleEvent, reply);
				break;
				
			case kAESendMessage:
				HandleSendMessage(token, appleEvent, reply);
				break;
				
			default:
				err = errAEEventNotHandled;
				break;
		}
	}
	catch (OSErr catchErr)
	{
		PutReplyErrorNumber(reply, catchErr);
		throw;
	}
	catch ( ... )
	{
		PutReplyErrorNumber(reply, paramErr);
		throw;
	}
}