svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r20849:20855
[blender.git] / source / gameengine / Expressions / Expression.cpp
1 // Expression.cpp: implementation of the CExpression class.
2 /*
3  * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
4  *
5  * Permission to use, copy, modify, distribute and sell this software
6  * and its documentation for any purpose is hereby granted without fee,
7  * provided that the above copyright notice appear in all copies and
8  * that both that copyright notice and this permission notice appear
9  * in supporting documentation.  Erwin Coumans makes no
10  * representations about the suitability of this software for any
11  * purpose.  It is provided "as is" without express or implied warranty.
12  *
13  */
14
15 #include "Expression.h"
16 #include "ErrorValue.h"
17
18 #ifdef HAVE_CONFIG_H
19 #include <config.h>
20 #endif
21
22 //////////////////////////////////////////////////////////////////////
23 // Construction/Destruction
24 //////////////////////////////////////////////////////////////////////
25 #ifdef _DEBUG
26 //int gRefCountExpr;
27 #endif
28 CExpression::CExpression()// : m_cached_calculate(NULL)
29 {
30         m_refcount = 1;
31 #ifdef _DEBUG
32         //gRefCountExpr++;
33 #endif
34 }
35
36 CExpression::~CExpression()
37 {
38         assert (m_refcount == 0);
39 }
40
41
42
43 // destuctor for CBrokenLinkInfo
44 CBrokenLinkInfo::~CBrokenLinkInfo()
45 {
46         if (m_pExpr && !m_bRestored)
47                 m_pExpr->Release();
48 }
49
50
51 void CBrokenLinkInfo::RestoreLink()
52 {
53
54         
55         assertd(m_pExpr);
56
57         if (m_pExpr)
58         {
59                 if (!m_bRestored){
60                         m_bRestored=true;
61                         
62                 }
63                 if (*m_pmemExpr)
64                 {
65                         (*m_pmemExpr)->Release();
66                 }
67                 *m_pmemExpr = m_pExpr;
68                 
69 //              m_pExpr=NULL;
70         }
71 }
72
73 void CBrokenLinkInfo::BreakLink()
74 {
75         m_bRestored=false;
76         m_pExpr->AddRef();
77 }
78