- ECOBMC ;BP/CMF - Methods object
- ;;2.0;EVENT CAPTURE;**100**;8 May 96;Build 21
- ;@author - Chris Flegel
- ;@date - 17 May 2009
- ;@version - 1.0
- ;;
- Q
- ;;private methods
- ADD(RESULT,HANDLE,VALUE) ; add Method object to list
- N CREATE,CHILD,ITEM,X
- D METHOD(.CREATE,HANDLE_".Get_namespace")
- S CHILD=$$CREATE^ECOBM(CREATE)
- D COLLECT^ECOBL(.ITEM,HANDLE,CHILD)
- D METHOD^ECOBM(.RESULT,CHILD_".SetName."_VALUE)
- D METHOD(.X,HANDLE_".Criteria.Index."_ITEM)
- S RESULT=CHILD
- Q
- ;;
- INFO(RESULT,HANDLE,PARAMS) ; view method details
- N METHOD,JUSTIFY,OFFSET
- D PARSE("Offset",PARAMS)
- D METHOD(.METHOD,HANDLE_".First")
- F Q:METHOD="-1^End of list" D
- .D METHOD^ECOBM(.RESULT,METHOD_".ShowName."_JUSTIFY)
- .D METHOD^ECOBM(.RESULT,METHOD_".ShowDescription."_OFFSET)
- .D METHOD^ECOBM(.RESULT,METHOD_".ShowParams."_OFFSET)
- .D METHOD^ECOBM(.RESULT,METHOD_".ShowReturns."_OFFSET)
- .D METHOD(.METHOD,HANDLE_".Next")
- .Q
- Q
- OVERRIDE(RESULT,HANDLE,VALUE) ; override established method
- N LIST,CHILD
- S RESULT="-1^Method does not exist to override"
- D METHOD(.LIST,HANDLE_".Find."_VALUE)
- D METHOD(.CHILD,LIST_".First")
- I CHILD'="-1^End of list" S RESULT=CHILD
- D DESTROY^ECOBL(LIST)
- Q
- ;;
- PARSE(PARSE,VALUE) ;
- D PARSE^ECOBL(PARSE,VALUE) ; parent method
- Q
- ;;
- PROPERTY(HANDLE,SCOPE,PROPERTY,VALUE) ; parent method
- D PROPERTY^ECOBL(HANDLE,SCOPE,PROPERTY,VALUE)
- Q
- ;;
- ;; public methods
- CREATE(NAME) ;
- ; call parent first
- N HANDLE,X
- S HANDLE=$$CREATE^ECOBL(NAME)
- ;;
- D SELF^ECOB(.RESULT,HANDLE,"Methods","Methods","METHOD^ECOBMC(.RESULT,ARGUMENT)","ECOBL")
- ;;
- D METHOD(.X,HANDLE_".Criteria.SetArgument.GetName")
- D METHOD(.X,HANDLE_".Criteria.SetOnReturn.handle")
- Q HANDLE
- ;;
- DESTROY(HANDLE) ;
- ; call parent last
- N CHILD
- D METHOD(.CHILD,HANDLE_".First")
- F Q:+CHILD=-1 D
- .D DESTROY^ECOBM(CHILD)
- .D METHOD(.CHILD,HANDLE_".Next")
- .Q
- Q $$DESTROY^ECOBL(HANDLE)
- ;;
- METHOD(RESULT,ARGUMENT) ;
- ; argument=(name.count[handle]).method.(additional.params...)
- N HANDLE,METHOD,PARAMS
- D PARSE("Handle",ARGUMENT)
- D PARSE("Method",ARGUMENT)
- D PARSE("Params",ARGUMENT)
- I METHOD="Add" D ADD(.RESULT,HANDLE,PARAMS) Q
- I METHOD="Override" D OVERRIDE(.RESULT,HANDLE,PARAMS) Q
- I METHOD="Info" D INFO(.RESULT,HANDLE,PARAMS) Q
- D METHOD^ECOBL(.RESULT,ARGUMENT)
- Q
- ;;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HECOBMC 2345 printed Mar 13, 2025@21:02:56 Page 2
- ECOBMC ;BP/CMF - Methods object
- +1 ;;2.0;EVENT CAPTURE;**100**;8 May 96;Build 21
- +2 ;@author - Chris Flegel
- +3 ;@date - 17 May 2009
- +4 ;@version - 1.0
- +5 ;;
- +6 QUIT
- +7 ;;private methods
- ADD(RESULT,HANDLE,VALUE) ; add Method object to list
- +1 NEW CREATE,CHILD,ITEM,X
- +2 DO METHOD(.CREATE,HANDLE_".Get_namespace")
- +3 SET CHILD=$$CREATE^ECOBM(CREATE)
- +4 DO COLLECT^ECOBL(.ITEM,HANDLE,CHILD)
- +5 DO METHOD^ECOBM(.RESULT,CHILD_".SetName."_VALUE)
- +6 DO METHOD(.X,HANDLE_".Criteria.Index."_ITEM)
- +7 SET RESULT=CHILD
- +8 QUIT
- +9 ;;
- INFO(RESULT,HANDLE,PARAMS) ; view method details
- +1 NEW METHOD,JUSTIFY,OFFSET
- +2 DO PARSE("Offset",PARAMS)
- +3 DO METHOD(.METHOD,HANDLE_".First")
- +4 FOR
- if METHOD="-1^End of list"
- QUIT
- Begin DoDot:1
- +5 DO METHOD^ECOBM(.RESULT,METHOD_".ShowName."_JUSTIFY)
- +6 DO METHOD^ECOBM(.RESULT,METHOD_".ShowDescription."_OFFSET)
- +7 DO METHOD^ECOBM(.RESULT,METHOD_".ShowParams."_OFFSET)
- +8 DO METHOD^ECOBM(.RESULT,METHOD_".ShowReturns."_OFFSET)
- +9 DO METHOD(.METHOD,HANDLE_".Next")
- +10 QUIT
- End DoDot:1
- +11 QUIT
- OVERRIDE(RESULT,HANDLE,VALUE) ; override established method
- +1 NEW LIST,CHILD
- +2 SET RESULT="-1^Method does not exist to override"
- +3 DO METHOD(.LIST,HANDLE_".Find."_VALUE)
- +4 DO METHOD(.CHILD,LIST_".First")
- +5 IF CHILD'="-1^End of list"
- SET RESULT=CHILD
- +6 DO DESTROY^ECOBL(LIST)
- +7 QUIT
- +8 ;;
- PARSE(PARSE,VALUE) ;
- +1 ; parent method
- DO PARSE^ECOBL(PARSE,VALUE)
- +2 QUIT
- +3 ;;
- PROPERTY(HANDLE,SCOPE,PROPERTY,VALUE) ; parent method
- +1 DO PROPERTY^ECOBL(HANDLE,SCOPE,PROPERTY,VALUE)
- +2 QUIT
- +3 ;;
- +4 ;; public methods
- CREATE(NAME) ;
- +1 ; call parent first
- +2 NEW HANDLE,X
- +3 SET HANDLE=$$CREATE^ECOBL(NAME)
- +4 ;;
- +5 DO SELF^ECOB(.RESULT,HANDLE,"Methods","Methods","METHOD^ECOBMC(.RESULT,ARGUMENT)","ECOBL")
- +6 ;;
- +7 DO METHOD(.X,HANDLE_".Criteria.SetArgument.GetName")
- +8 DO METHOD(.X,HANDLE_".Criteria.SetOnReturn.handle")
- +9 QUIT HANDLE
- +10 ;;
- DESTROY(HANDLE) ;
- +1 ; call parent last
- +2 NEW CHILD
- +3 DO METHOD(.CHILD,HANDLE_".First")
- +4 FOR
- if +CHILD=-1
- QUIT
- Begin DoDot:1
- +5 DO DESTROY^ECOBM(CHILD)
- +6 DO METHOD(.CHILD,HANDLE_".Next")
- +7 QUIT
- End DoDot:1
- +8 QUIT $$DESTROY^ECOBL(HANDLE)
- +9 ;;
- METHOD(RESULT,ARGUMENT) ;
- +1 ; argument=(name.count[handle]).method.(additional.params...)
- +2 NEW HANDLE,METHOD,PARAMS
- +3 DO PARSE("Handle",ARGUMENT)
- +4 DO PARSE("Method",ARGUMENT)
- +5 DO PARSE("Params",ARGUMENT)
- +6 IF METHOD="Add"
- DO ADD(.RESULT,HANDLE,PARAMS)
- QUIT
- +7 IF METHOD="Override"
- DO OVERRIDE(.RESULT,HANDLE,PARAMS)
- QUIT
- +8 IF METHOD="Info"
- DO INFO(.RESULT,HANDLE,PARAMS)
- QUIT
- +9 DO METHOD^ECOBL(.RESULT,ARGUMENT)
- +10 QUIT
- +11 ;;