doxygen: gameengine/Expressions tagged.
[blender-staging.git] / source / gameengine / Expressions / IntValue.cpp
index 591fe76cd487835f6e1789c12275181ec57b2af3..cf0aed181bbb8525e9d481f2596abd2567204796 100644 (file)
@@ -1,3 +1,6 @@
+/** \file gameengine/Expressions/IntValue.cpp
+ *  \ingroup expressions
+ */
 // IntValue.cpp: implementation of the CIntValue class.
 /*
 * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
 *
 */
 
-
 #include "IntValue.h"
 #include "ErrorValue.h"
 #include "FloatValue.h"
 #include "BoolValue.h"
 #include "StringValue.h"
 #include "VoidValue.h"
-//#include "FactoryManager.h"
 
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
@@ -40,10 +41,10 @@ effect: constructs a new CIntValue
 
 
 
-CIntValue::CIntValue(int innie)
+CIntValue::CIntValue(cInt innie)
 /*
 pre:
-effect: constructs a new CIntValue containing int innie
+effect: constructs a new CIntValue containing cInt innie
 */
 {
        m_int = innie;
@@ -52,7 +53,7 @@ effect: constructs a new CIntValue containing int innie
 
 
 
-CIntValue::CIntValue(int innie,STR_String name,AllocationTYPE alloctype)
+CIntValue::CIntValue(cInt innie,const char *name,AllocationTYPE alloctype)
 {
        m_int = innie;
        SetName(name);
@@ -123,6 +124,9 @@ this object
        case VALUE_INT_TYPE:
                {
                        switch (op) {
+                       case VALUE_MOD_OPERATOR:
+                               ret = new CIntValue (((CIntValue *) val)->GetInt() % m_int);
+                               break;
                        case VALUE_ADD_OPERATOR:
                                ret = new CIntValue (((CIntValue *) val)->GetInt() + m_int);
                                break;
@@ -179,6 +183,9 @@ this object
        case VALUE_FLOAT_TYPE:
                {
                        switch (op) {
+                       case VALUE_MOD_OPERATOR:
+                               ret = new CFloatValue(fmod(((CFloatValue *) val)->GetFloat(), m_int));
+                               break;
                        case VALUE_ADD_OPERATOR:
                                ret = new CFloatValue (((CFloatValue *) val)->GetFloat() + m_int);
                                break;
@@ -272,10 +279,10 @@ this object
 
 
 
-int CIntValue::GetInt()
+cInt CIntValue::GetInt()
 /*
 pre:
-ret: the int stored in the object
+ret: the cInt stored in the object
 */
 {
        return m_int;
@@ -283,7 +290,7 @@ ret: the int stored in the object
 
 
 
-float CIntValue::GetNumber()
+double CIntValue::GetNumber()
 {
        return (float) m_int;
 }
@@ -294,7 +301,7 @@ const STR_String & CIntValue::GetText()
 {
        if (!m_pstrRep)
                m_pstrRep=new STR_String();
-       m_pstrRep->Format("%d",m_int);
+       m_pstrRep->Format("%lld",m_int);
        
        return *m_pstrRep;
 }
@@ -303,7 +310,7 @@ const STR_String & CIntValue::GetText()
 
 CValue* CIntValue::GetReplica() { 
        CIntValue* replica = new CIntValue(*this);
-       CValue::AddDataToReplica(replica);
+       replica->ProcessReplica();
        replica->m_pstrRep = NULL;
        
        return replica;
@@ -313,13 +320,17 @@ CValue* CIntValue::GetReplica() {
 
 void CIntValue::SetValue(CValue* newval)
 {      
-       m_int = (int)newval->GetNumber(); 
+       m_int = (cInt)newval->GetNumber(); 
        SetModified(true);
 }
 
 
-
+#ifdef WITH_PYTHON
 PyObject* CIntValue::ConvertValueToPython()
 {
-       return PyInt_FromLong(m_int);
-}
\ No newline at end of file
+       if((m_int > INT_MIN) && (m_int < INT_MAX))
+               return PyLong_FromSsize_t(m_int);
+       else
+               return PyLong_FromLongLong(m_int);
+}
+#endif // WITH_PYTHON