globle int LoadCommand( void *theEnv) { #if (! BLOAD_ONLY) && (! RUN_TIME) char *theFileName; int rv; if (EnvArgCountCheck(theEnv,"load",EXACTLY,1) == -1) return(FALSE); if ((theFileName = GetFileName(theEnv,"load",1)) == NULL) return(FALSE); SetPrintWhileLoading(theEnv,TRUE); if ((rv = EnvLoad(theEnv,theFileName)) == FALSE) { SetPrintWhileLoading(theEnv,FALSE); OpenErrorMessage(theEnv,"load",theFileName); return(FALSE); } SetPrintWhileLoading(theEnv,FALSE); if (rv == -1) return(FALSE); return(TRUE); #else EnvPrintRouter(theEnv,WDIALOG,"Load is not available in this environment\n"); return(FALSE); #endif }
//Initializes the CLIPS Engine for the WebCLIPS environment int Init(void) { //Initialize the appropriate CLIPS Engine (Standard vs. Fuzzy) // DLL Loaded here SetPrintWhileLoading(FALSE); InitializeEnvironment(); return 0; }
/******************************************************************************* NAME : CreateGetAndPutHandlers DESCRIPTION : Creates two message-handlers with the following syntax for the slot: (defmessage-handler <class> get-<slot-name> primary () ?self:<slot-name>) For single-field slots: (defmessage-handler <class> put-<slot-name> primary (?value) (bind ?self:<slot-name> ?value)) For multifield slots: (defmessage-handler <class> put-<slot-name> primary ($?value) (bind ?self:<slot-name> ?value)) INPUTS : The class slot descriptor RETURNS : Nothing useful SIDE EFFECTS : Message-handlers created NOTES : A put handler is not created for read-only slots *******************************************************************************/ globle void CreateGetAndPutHandlers( void *theEnv, SLOT_DESC *sd) { char *className,*slotName; unsigned bufsz; char *buf,*handlerRouter = "*** Default Public Handlers ***"; int oldPWL,oldCM; char *oldRouter; char *oldString; long oldIndex; if ((sd->createReadAccessor == 0) && (sd->createWriteAccessor == 0)) return; className = ValueToString(sd->cls->header.name); slotName = ValueToString(sd->slotName->name); bufsz = (sizeof(char) * (strlen(className) + (strlen(slotName) * 2) + 80)); buf = (char *) gm2(theEnv,bufsz); oldPWL = GetPrintWhileLoading(theEnv); SetPrintWhileLoading(theEnv,FALSE); oldCM = EnvSetConserveMemory(theEnv,TRUE); if (sd->createReadAccessor) { sprintf(buf,"%s get-%s () ?self:%s)",className,slotName,slotName); oldRouter = RouterData(theEnv)->FastCharGetRouter; oldString = RouterData(theEnv)->FastCharGetString; oldIndex = RouterData(theEnv)->FastCharGetIndex; RouterData(theEnv)->FastCharGetRouter = handlerRouter; RouterData(theEnv)->FastCharGetIndex = 0; RouterData(theEnv)->FastCharGetString = buf; ParseDefmessageHandler(theEnv,handlerRouter); DestroyPPBuffer(theEnv); /* if (OpenStringSource(theEnv,handlerRouter,buf,0)) { ParseDefmessageHandler(handlerRouter); DestroyPPBuffer(); CloseStringSource(theEnv,handlerRouter); } */ RouterData(theEnv)->FastCharGetRouter = oldRouter; RouterData(theEnv)->FastCharGetIndex = oldIndex; RouterData(theEnv)->FastCharGetString = oldString; } if (sd->createWriteAccessor) { sprintf(buf,"%s put-%s ($?value) (bind ?self:%s ?value))", className,slotName,slotName); oldRouter = RouterData(theEnv)->FastCharGetRouter; oldString = RouterData(theEnv)->FastCharGetString; oldIndex = RouterData(theEnv)->FastCharGetIndex; RouterData(theEnv)->FastCharGetRouter = handlerRouter; RouterData(theEnv)->FastCharGetIndex = 0; RouterData(theEnv)->FastCharGetString = buf; ParseDefmessageHandler(theEnv,handlerRouter); DestroyPPBuffer(theEnv); /* if (OpenStringSource(theEnv,handlerRouter,buf,0)) { ParseDefmessageHandler(handlerRouter); DestroyPPBuffer(); CloseStringSource(theEnv,handlerRouter); } */ RouterData(theEnv)->FastCharGetRouter = oldRouter; RouterData(theEnv)->FastCharGetIndex = oldIndex; RouterData(theEnv)->FastCharGetString = oldString; } SetPrintWhileLoading(theEnv,oldPWL); EnvSetConserveMemory(theEnv,oldCM); rm(theEnv,(void *) buf,bufsz); }