New features in version 0.30.0 ============================== Target dependent part of the grapnel library has been introduced for new targets: MPI and QNX. These parts of the library is introduced only, they are not implemented yet. GRP parser ---------- Definition of the `fClose' method of the `TprsSource' class has been changed from: void fClose(void) to: void fClose(FILE *fds) Some bugs caused by NULL pointers have been fixed. `TprsSource' class has been expanded with a new method `SpaceOnly' which returns TRUE if the source code handled by the object contains space characters only or it is empty. `TprsSource' class has been extended with a new method `fPrintf' which can be used to print out text handled by the object to a file. Rule of `DataTypeDef' has been changed from DataTypeDef::= | DataType | DataType "[" IntNumber "]"; to DataTypeDef::= | DataType | DataType "[" DataTypeNum "]"; DataTypeNum::= IntNumber | CSource; According to changes above, the `TprsPortData' class has been extended with a new field `Src'. If IntNumber is found in the rule `DataTypeNum', the result is stored in the `Num' field of the object, but if a C source id found then it is stored in the `Src' field. `Num' field will be -1 if it is unused and `Src' will be NULL if it is not used. Definitions of program item rules in the parser have been changed: `ParamsOfPrgItem' rule has been chaged from: ParamsOfPrgItem::= ConnList PortParamList ItemListOfGraph. to ParamsOfPrgItem::= ItemOptionList ConnList PortParamList ItemListOfGraph. `ItemOptionList', `ItemOption' rules have been introduced: ItemOptionList::= | ItemOptionList ItemOption. ItemOption::= "BLOCKED" | "UNBLOCKED" | ItemGuard. ItemGuard::= "GUARD" "=" CSource. `TprsAppColl' class has been extended with a new method: `SetItemOption'. `TprsItem' class has been extended with a new member: `Options' which is a structure to hold options of the program item, and a new method: `SetOption' which can be used to set up an option. Rule of `ProgramSection' has been changed from ProgramSection::= "PROCESS" ":" ID "HEADERSECTION" "{" ProcHgroupList "}" "PORTSECTION" "{" ProcSgroupList "}" "PROGRAMSECTION" "{" ProcPgroupList "}". to ProgramSection::= "PROCESS" ProcessNumID ":" ID "HEADERSECTION" "{" ProcHgroupList "}" "PORTSECTION" "{" ProcSgroupList "}" "PROGRAMSECTION" "{" ProcPgroupList "}". where the `ProcessNumID' rule is: ProcessNumID::= | IntNumber. According to this change, a new field (`NumID') has been added to `TprsProcess' class which is set up by `TprsProcColl::ActivateProc' method when it needs to create a new process object. Rule of `PortParam' has been changed from PortParam::= "PORT" IntNumber ":" PortSourceList. to PortParam::= "PORT" Int ":" PortGuard PortSourceList. PortGuard::= | "GUARD" "=" CSource. To hold new `guard' parameter of the port references, the class that represents the reference (`TPortRefAndSrc') has been extended with a new data field `Guard'. `TprsCollApp' has been extended with a new method `AddGuardToLastPort'. GRP code generator ------------------ Bug in generated Makefile to compile user defined code has been fixed. Error detection capability of code generator has been improved. Code generator produces unblocking send operations by default. Code generator generates code which supports guarded communication. Code generator dosn't generate application header file any more. Every definitions and declarations have been placed in application server program's code directly. GRP library ----------- Type definition of struct channel has been removed and `TChanDefP' has been renamed to `Tchannel'. Definition of `TProcessInfo' has been changed. Some of Grapnel API functions have been chaged: `ReadMapFile', `grp_create_process', `grp_create_channel', `grp_init_channel', `grp_pre_mrecv', `grp_pre_send', `grp_post_send', `grp_pre_recv', `grp_post_recv'. `grp_nrecv', `grp_mcast_array', `grp_mrecv', `grp_mrecv_array' functions have been removed. Jun 20, 1997.