// // KPN Research 1997 // // Emile van Gerwen (M.J.A.M.vanGerwen@research.kpn.com) // // Conversion unit to use Netica Bayesian Network functions in Delphi programs // unit NeticaConvert; interface const NeticaDLL = 'M:\ML\Netica\WindowsAPI\Netica.dll'; const MESG_LEN_ns = 256; NAME_MAX_ns = 30; const // // query QUERY_ns = -1; // // errdanger_ns // NOTHING_ERR = 1; REPORT_ERR = 2; NOTICE_ERR = 3; WARNING_ERR = 4; ERROR_ERR = 5; XXX_ERR = 6; // // nodekind_bn // NATURE_NODE = 0; ASSUME_NODE = 1; DECISION_NODE = 2; UTILITY_NODE = 3; DISCONNECTED_NODE = 4; // // state_bn // WILDCARD_STATE = -5; IMPOSS_STATE = -4; UNDEF_STATE = -3; // // checking_ns // NO_CHECKING = 23; QUICK_CHECK = 24; REGULAR_CHECK = 25; COMPLETE_CHECK = 26; // // bool_ns // FALSE_ns = 0; TRUE_ns = 1; // // caseposn_bn // FIRST_CASE = -15; NEXT_CASE = -14; NO_MORE_CASES = -13; type level_bn = Double; long = Integer; int = Integer; p_environ_ns = pointer; p_p_environ_ns = pointer; p_net_bn = pointer; errdanger_ns = Integer; p_report_ns = pointer; p_node_bn = pointer; state_bn = long; p_state_bn = pointer; p_PChar = ^PChar; prob_bn = Single; // float in "C" p_prob_bn = ^prob_bn; checking_ns = int; p_nodelist_bn = pointer; bool_ns = int; p_stream_ns = pointer; caseposn_bn = long; p_caseposn_bn = ^caseposn_bn; p_long = ^long; p_Double = ^Double; {double = Double fortunately} // // Administration // function NewNeticaEnviron_bn(license : PChar) : p_environ_ns; stdcall; external NeticaDLL; function InitNetica_bn(env : p_p_environ_ns; mesg : PChar) : int; stdcall; external NeticaDLL; function CloseNetica_bn(env : p_environ_ns; mesg : PChar) : int; stdcall; external NeticaDLL; function NewNet_bn(name : PChar; env : p_environ_ns) : p_net_bn; stdcall; external NeticaDLL; procedure FreeNet_bn(net : p_net_bn); stdcall; external NeticaDLL; function GetNeticaVersion_bn(env : p_environ_ns; version : p_PChar) : int; stdcall; external NeticaDLL; function ArgumentChecking_ns(setting : checking_ns; env : p_environ_ns) : checking_ns; stdcall; external NeticaDLL; function GetNetName_bn(net : p_net_bn) : PChar; stdcall; external NeticaDLL; procedure CompileNet_bn(net : p_net_bn); stdcall; external NeticaDLL; procedure WriteNet_bn(net : p_net_bn; netfile : p_stream_ns); stdcall; external NeticaDLL; function ReadNet_bn(netfile : p_stream_ns; read_visual : bool_ns) : p_net_bn; stdcall; external NeticaDLL; function FileNamed_ns(filename : PChar; env : p_environ_ns) : p_stream_ns; stdcall; external NeticaDLL; // // Errors // function GetError_ns(env : p_environ_ns; danger : errdanger_ns; after : p_report_ns) : p_report_ns; stdcall; external NeticaDLL; function ErrorMessage_ns(error : p_report_ns) : PChar; stdcall; external NeticaDLL; function ErrorNumber_ns(error : p_report_ns) : int; stdcall; external NeticaDLL; function ErrorDanger_ns(error : p_report_ns) : errdanger_ns; stdcall; external NeticaDLL; procedure ClearError_ns(error : p_report_ns); stdcall; external NeticaDLL; procedure ClearErrors_ns(env : p_environ_ns; danger : errdanger_ns); stdcall; external NeticaDLL; // // Node operations // function NewNode_bn(name : PChar; num_status : Integer; net : p_net_bn) : p_node_bn; stdcall; external NeticaDLL; procedure SetNodeStateName_bn(node : p_node_bn; state : state_bn; state_name : PChar); stdcall; external NeticaDLL; procedure SetNodeProbs_bn(node : p_node_bn; parent_states : pointer; probs : pointer {p_prob_bn}); stdcall; external NeticaDLL; function GetNodeBeliefs_bn(node : p_node_bn) : p_prob_bn; stdcall; external NeticaDLL; function NodeNamed_bn(name : PChar; net : p_net_bn) : p_node_bn; stdcall; external NeticaDLL; function GetNodeLevel_bn(node : p_node_bn; state : state_bn) : level_bn; stdcall; external NeticaDLL; // // Node lists // function LengthNodeList_bn(nodes : p_nodelist_bn) : int; stdcall; external NeticaDLL; function GetNetNodes_bn(net : p_net_bn) : p_nodelist_bn; stdcall; external NeticaDLL; function NthNode_bn(nodes : p_nodelist_bn; index : int) : p_node_bn; stdcall; external NeticaDLL; function GetNodeParents_bn(node : p_node_bn) : p_nodelist_bn; stdcall; external NeticaDLL; function GetNodeChildren_bn(node : p_node_bn) : p_nodelist_bn; stdcall; external NeticaDLL; function GetNodeName_bn(node : p_node_bn) : PChar; stdcall; external NeticaDLL; function GetNodeNumberStates_bn(node : p_node_bn) : int; stdcall; external NeticaDLL; function DuplicateNodes_bn(nodes : p_nodelist_bn; new_net : p_net_bn) : p_nodelist_bn; stdcall; external NeticaDLL; function DupNodeList_bn(nodes : p_nodelist_bn) : p_nodelist_bn; stdcall; external NeticaDLL; procedure FreeNodeList_bn(nodes : p_nodelist_bn); stdcall; external NeticaDLL; // // Link operations // function AddLink_bn(parent : p_node_bn; child : p_node_bn) : int; stdcall; external NeticaDLL; procedure DeleteLink_bn(link_index : int; child : p_node_bn); stdcall; external NeticaDll; // // Evidence // procedure RetractAllFindings_bn(net : p_net_bn); stdcall; external NeticaDLL; procedure EnterFinding_bn(node : p_node_bn; state : state_bn); stdcall; external NeticaDLL; procedure EnterNodeValue_bn(node : p_node_bn; value : Double); stdcall; external NeticaDLL; function GetNodeFinding_bn(node : p_node_bn) : state_bn; stdcall; external NeticaDLL; // // Joint probabilities // function RandomCase_bn(nodes : p_nodelist_bn; method : int; num : Double) : int; stdcall; external NeticaDLL; procedure ReadCase_bn(var case_posn : {p_}caseposn_bn; casefile : p_stream_ns; nodes : p_nodelist_bn; ID_num : p_long; freq : p_Double); stdcall; external NeticaDLL; function WriteCase_bn(nodes : p_nodelist_bn; casefile : p_stream_ns; ID_num : long; freq : Double) : caseposn_bn; stdcall; external NeticaDLL; function CaseProbability_bn(net : p_net_bn) : Double; stdcall; external NeticaDLL; implementation end.