发现简单的测试还是比较好用的,于是考虑重写代码,取消库前缀,做一些库结构上的改变.
暂时先不考虑写内存泄露检测库.
等有空,可以再把测试时测试代码自动输出测试文档的部分写下.
#ifdef TEST_OPEN
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#ifndef TEST__
#define
TEST__
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#include
<
iostream
>
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
using
std::cout;
using
std::endl;
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#define
FLAG__ cout<<"[test:flag]";
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#define
SHOW__(X) cout<<X<<endl;
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#define
TEST_THROW(X) throw string(X);
#define
TEST_BEGIN try{
#define
TEST_END }catch(string TEST_CATCH){ cout<<TEST_CATCH<<endl;}
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#endif
#endif
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#ifndef TEST_OPEN
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#define
TEST_BEGIN
#define
TEST_END
#define
TEST_THROW(X)
#define
SHOW__(X)
#define
FLAG__
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#endif
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
让测试能够原封不动的保留其代码而不需要在不需要的时候注释掉他们 只需要通过一条#define TEST_OPEN 启动或者关闭其功能.
TEST_BEGIN / TEST_END 用于获取库调用时出现的库使用者越界或者其他极端条件下造成的异常.
对于自己宏的命名规则只两种:
XXX_XXXX :
XXXX__
#define
TEST_OPEN
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#include
<
iostream
>
#include
<
string
>
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
using
namespace
std;
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#include
"
base.h
"
#include
"
ptr.h
"
#include
"
runtime.h
"
#include
"
tree.h
"
#include
"
array.h
"
#include
"
vector.h
"
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
void
test_runtime()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
using os::chaos;
using os::runtime;
chaos c;
runtime t_;
t_.begin();
for(int i=0;i!=1110;i++)
cout<<c.getRandom(5,10)<<endl;
t_.end();
cout<<"get time:"<<t_.getDTime()<<"ms"<<endl;
}
void
test_ptr()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
using code::ptr;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
ptr<string> str,str2;
str ="lost butterfly.";
str2=str;
cout<<str()<<endl
<<str2()<<endl;
str2.free();
cout<<str()<<endl;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
void
test_tree()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
using adt::tree;
tree<int> t,t2;
t.set(1);
t.goLeft(1);
t.goRight(2);
t.setLeft(3);
t.setRight(4);
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
int list[10]=
{0},list2[20]=
{0};
t.travel(list,1);
for(int i=0;i!=t.n;i++)
cout<<list[i]<<endl;
t2=t;
t2.travel(list2,1);
cout<<":\n";
for(int i=0;i!=t2.n;i++)
cout<<list2[i]<<endl;
}
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
void
test_array()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
using adt::array;
array<int> ar(5,0),ar2(10,1);
ar[0]=1;
ar[1]=2;
ar[4]=3;
for(int i=0;i!=ar.n_;i++)
cout<<ar[i]<<endl;
ar=ar2;
ar2[3]=2;
for(int i=0;i!=ar2.n_;i++)
cout<<ar2[i]<<endl;
}
void
test_vector()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
using adt::vector;
vector<int> v,v2;
v2.push(3);
v2.push(4);
v2[1]=5;
v2.pop();
v=v2;
FLAG__
cout<<v.pop()<<endl;
//cout<<v.isNull();
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
TEST_BEGIN
cout<<v.pop()<<endl;
TEST_END
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
//cout<<v.isNull();
}
int
main()
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
test_ptr();
test_tree();
test_runtime();
test_array();
test_vector();
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
初步对整个库的部分实现顺序和命名规则,1 左边是原则
1 左边是约定
2 右边是实现顺序,从左到右.
临时草稿在这个程度上还是没什么问题的,必要时列出AOV防止实现的冲突
对于表中自己设定的"属性名首字母大写",恐怕我还是喜欢小写.
有的时候为了让库的使用者知道某些封装的属性虽然是public但不应该去擅自修改值的,可以后缀带"_". 成员函数也如此,是内置且开放方法但不推荐直接使用的函数.
另外从现在开始在vector以及以后的所有代码里增加对代码的维护test,
#ifndef VECTOR__
#define
VECTOR__
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#pragma warning (disable:
4138
)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
#include
"
base.h
"//it includes test.h
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
namespace
adt
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
{
#define SMART_INDEX
template<typename VType>
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
class /**//*Adt: Double Chain Table*/ vector:public base::adt
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
public:
int smartindex(int & _i,const int& _n)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
#ifdef SMART_INDEX
if(_n==1)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
_i=0;
return 0;
}
if(_i<0)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
_i=-_i;
_i=_i%_n;
_i = _n - _i;
}else
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
_i=_i%_n;
}
#endif
return 1;
}
typedef struct VNode
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
VNode*/**//*prior node*/ prev;
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
VNode*/**//*following node*/ next;
VType elem;
int extend_prev(VType _prev_elem)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
prev=new VNode;
prev->elem=_prev_elem;
prev->next=this;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
int extend_prev()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
prev=new VNode;
prev->next=this;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
int extend_next(VType _nextend_elem)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
next=new VNode;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
next->elem=_nextend_elem;
next->prev=this;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
int extend_next()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
next=new VNode;
next->prev=this;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
int inst_node(const VType &_inst_elem)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
/**//* inserts a node between obj and obj's following */
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
VNode* _ins_node=new VNode;
_ins_node->elem=_inst_elem;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
_ins_node->next=this->next;
_ins_node->next->prev=_ins_node;
this->next=_ins_node;
_ins_node->prev=this;
return 1;
}
int remove()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
/**//* deletes the middle node and close its prev and next */
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
if(!this->prev||!this->next)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
return 0;
}
this->prev->next=this->next;
this->next->prev=this->prev;
delete this;
return 1;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
};
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
public :
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
VNode* head;
VNode* tail;
VNode* p;
int n;
vector(VType *_init_elem=0,int _len=0)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
if(_len<=-1)return;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
p=head=new VNode;
p->prev=0;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
for(int j=0;j!=_len;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p->extend_next(_init_elem[j]);
p=p->next;
}
p->extend_next();
n=_len;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
int rebirth(VType *_re_init_elem,int _len=0)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
vector(_re_init_elem,_len);
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
int index(VType _value)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
p=head->next;
for(int j=0;j!=n;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
if(p->elem==_value)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
return j;
}
p=p->next;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return -1;
}
VType & operator [](int _i)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
smartindex(_i,n);
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
p=head->next;
for(int j=0;j!=_i;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p=p->next;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return p->elem;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
int insert(int _i,VType _obj_elem)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p=head;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
for(int j=0;j!=_i;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p=p->next;
}
p->inst_node(_obj_elem);
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
++n;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return 1;
}
int isNull()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
if(n==0)return 1;
else return 0;
}
int push(VType _obj)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
insert(n,_obj);
return 1;
}
VType pop()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
#ifdef TEST_OPEN
if(n==0)
TEST_THROW("Exception in vector pop-function")
#endif
return remove(-1);
}
VType remove(int _i)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
smartindex(_i,n);
p=head->next;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
for(int j=0;j!=_i;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p=p->next;
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
VType buf=p->elem;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
p->remove();
--n;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
return buf;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
void operator = (vector& _copy)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
p=head;
_copy.p=_copy.head;
for(int i=0;i!=_copy.n;i++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
_copy.p=_copy.p->next;
p->extend_next(_copy.p->elem);
p=p->next;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
p->extend_next();
n=_copy.n;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
int free()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
for(int j=0;j!=n;j++)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
head=head->next;
delete head->prev;
}
delete head->next;
delete head;
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
n=0;
p=0;
head=0;
return 1;
}
~vector()
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
{
free();
}
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
};
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
}
;
#endif
暂时先不考虑写内存泄露检测库.
等有空,可以再把测试时测试代码自动输出测试文档的部分写下.
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
让测试能够原封不动的保留其代码而不需要在不需要的时候注释掉他们 只需要通过一条#define TEST_OPEN 启动或者关闭其功能.
TEST_BEGIN / TEST_END 用于获取库调用时出现的库使用者越界或者其他极端条件下造成的异常.
对于自己宏的命名规则只两种:
XXX_XXXX :
XXXX__
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
初步对整个库的部分实现顺序和命名规则,1 左边是原则
1 左边是约定
2 右边是实现顺序,从左到右.
临时草稿在这个程度上还是没什么问题的,必要时列出AOV防止实现的冲突
![基于测试环境,Ving Algo&Vir Library v1.4.0 -重写版本_第1张图片](http://img.e-com-net.com/image/product/7ab300d592f24442850f916bf2f73aa2.jpg)
对于表中自己设定的"属性名首字母大写",恐怕我还是喜欢小写.
有的时候为了让库的使用者知道某些封装的属性虽然是public但不应该去擅自修改值的,可以后缀带"_". 成员函数也如此,是内置且开放方法但不推荐直接使用的函数.
另外从现在开始在vector以及以后的所有代码里增加对代码的维护test,
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)
![](http://img.e-com-net.com/image/product/44df1c303f404ee184fdd8904c682a7f.gif)
![](http://img.e-com-net.com/image/product/f6242890d71a40ab957c0cf10b55aac8.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/16676c75a1f24c2286f9cfe3320175c2.gif)
![](http://img.e-com-net.com/image/product/b5abf8d594ba49098bdc3fa165ae14f7.gif)
![](http://img.e-com-net.com/image/product/4ed387f41cd5427898b953ccc4b441ea.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/4407806dd42e464c873774a6e93bb38f.gif)
![](http://img.e-com-net.com/image/product/58b5517de74d4214832479bcb515bf73.gif)
![](http://img.e-com-net.com/image/product/91d69a26e7ce47d4bd97bff91bc3e9d1.gif)
![](http://img.e-com-net.com/image/product/696412be261e44caa983ccc5cd2a1540.gif)