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