00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00027 #include <inference_engine.h>
00028 #include <print_seq.h>
00029
00030 void inference_engine::__prep_delta_list()
00031 {
00032 if(!_new_deltas.empty())
00033 _new_deltas.erase(_new_deltas.begin(), _new_deltas.end());
00034 _new_deltas.reserve((*__wnode)->deltas.size());
00035 std::copy((*__wnode)->deltas.begin(), (*__wnode)->deltas.end(),
00036 _new_deltas.end());
00037 if(!_new_deltas.empty())
00038 std::sort(_new_deltas.begin(), _new_deltas.end());
00039 }
00040
00041 std::pair<std::list<delta_id>,std::list<delta_id> > inference_engine::new_deltas()
00042 {
00043 std::list<delta_id> _app, _unapp;
00044 std::vector<delta_id>::const_iterator _o, _n, _eo, _en;
00045
00046 _eo = _old_deltas.end();
00047 _en = _new_deltas.end();
00048
00049 _o = _old_deltas.begin();
00050 _n = _new_deltas.begin();
00051
00052 while(_o != _eo && _n != _en)
00053 {
00054 if(_o == _eo)
00055 {
00056 _app.push_back(*_n);
00057 ++_n;
00058 }
00059 else if(_n == _en)
00060 {
00061 _unapp.push_back(*_o);
00062 ++_o;
00063 }
00064 else if(*_o < *_n)
00065 {
00066 _unapp.push_back(*_o);
00067 ++_o;
00068 }
00069 else if(*_o > *_n)
00070 {
00071 _app.push_back(*_n);
00072 ++_n;
00073 }
00074 else
00075 {
00076 ++_o;
00077 ++_n;
00078 }
00079 }
00080
00081 return std::make_pair(_app,_unapp);
00082 }