[colobot] 60/145: Refactored part of CScript to std::string

Didier Raboud odyx at moszumanska.debian.org
Mon Jul 11 12:56:17 UTC 2016


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch debian/master
in repository colobot.

commit bd9184bd92d60986eabe298f2b4479a52f2d2219
Author: krzys-h <krzys_h at interia.pl>
Date:   Fri Apr 8 22:27:42 2016 +0200

    Refactored part of CScript to std::string
---
 src/script/script.cpp       | 62 +++++++++++++++------------------------------
 src/script/script.h         | 12 ++++-----
 src/ui/object_interface.cpp | 14 +++++-----
 3 files changed, 33 insertions(+), 55 deletions(-)

diff --git a/src/script/script.cpp b/src/script/script.cpp
index 924081d..4f7bf32 100644
--- a/src/script/script.cpp
+++ b/src/script/script.cpp
@@ -70,11 +70,8 @@ CScript::CScript(COldObject* object)
     m_bRun = false;
     m_bStepMode = false;
     m_bCompile = false;
-    m_title[0] = 0;
-    m_mainFunction[0] = 0;
     m_cursor1 = 0;
     m_cursor2 = 0;
-    m_filename[0] = 0;
 }
 
 // Object's destructor.
@@ -159,8 +156,8 @@ bool CScript::CheckToken()
     if ( !m_object->GetCheckToken() )  return true;
 
     m_error = CBot::CBotNoErr;
-    m_title[0] = 0;
-    m_mainFunction[0] = 0;
+    m_title.clear();
+    m_mainFunction.clear();
     m_token.clear();
     m_bCompile = false;
 
@@ -206,8 +203,8 @@ bool CScript::CheckToken()
             m_tokenUsed = used[it.first];
             m_tokenAllowed = allowed;
             m_error = static_cast<CBot::CBotError>(error);
-            strcpy(m_title, "<incorrect instructions>");
-            m_mainFunction[0] = 0;
+            m_title = "<incorrect instructions>";
+            m_mainFunction.clear();
             return false;
         }
     }
@@ -220,14 +217,13 @@ bool CScript::CheckToken()
 bool CScript::Compile()
 {
     std::vector<std::string> functionList;
-    int             i;
     std::string     p;
 
     m_error = CBot::CBotNoErr;
     m_cursor1 = 0;
     m_cursor2 = 0;
-    m_title[0] = 0;
-    m_mainFunction[0] = 0;
+    m_title.clear();
+    m_mainFunction.clear();
     m_bCompile = false;
 
     if ( IsEmpty() )  // program exist?
@@ -245,33 +241,17 @@ bool CScript::Compile()
     {
         if (functionList.empty())
         {
-            strcpy(m_title, "<extern missing>");
-            m_mainFunction[0] = 0;
+            m_title = "<extern missing>";
+            m_mainFunction.clear();
         }
         else
         {
-            p = functionList[0];
-            i = 0;
-            bool titleDone = false;
-            while ( true )
+            m_mainFunction = functionList[0];
+            m_title = m_mainFunction;
+            if (m_title.length() >= 20)
             {
-                if ( p[i] == 0 || p[i] == '(' )  break;
-                if ( i >= 20 && !titleDone )
-                {
-                    m_title[i+0] = '.';
-                    m_title[i+1] = '.';
-                    m_title[i+2] = '.';
-                    m_title[i+3] = 0;
-                    titleDone = true;
-                }
-                if(!titleDone)
-                    m_title[i] = p[i];
-                m_mainFunction[i] = p[i];
-                i ++;
+                m_title = m_title.substr(0, 20)+"...";
             }
-            if(!titleDone)
-                m_title[i] = 0;
-            m_mainFunction[i] = p[i];
         }
         m_bCompile = true;
         return true;
@@ -289,8 +269,8 @@ bool CScript::Compile()
         {
             m_cursor1 = m_cursor2 = 0;
         }
-        strcpy(m_title, "<error>");
-        m_mainFunction[0] = 0;
+        m_title = "<error>";
+        m_mainFunction.clear();
         return false;
     }
 }
@@ -298,9 +278,9 @@ bool CScript::Compile()
 
 // Returns the title of the script.
 
-void CScript::GetTitle(char* buffer)
+const std::string& CScript::GetTitle()
 {
-    strcpy(buffer, m_title);
+    return m_title;
 }
 
 
@@ -323,9 +303,9 @@ bool CScript::Run()
 {
     if (m_botProg == nullptr)  return false;
     if ( m_script == nullptr || m_len == 0 )  return false;
-    if ( m_mainFunction[0] == 0 ) return false;
+    if ( m_mainFunction.empty() ) return false;
 
-    if ( !m_botProg->Start(m_mainFunction) )  return false;
+    if ( !m_botProg->Start(m_mainFunction.c_str()) )  return false;
 
     m_bRun = true;
     m_bContinue = false;
@@ -1024,12 +1004,12 @@ bool CScript::Compare(CScript* other)
 
 // Management of the file name when the script is saved.
 
-void CScript::SetFilename(char *filename)
+void CScript::SetFilename(const std::string& filename)
 {
-    strcpy(m_filename, filename);
+    m_filename = filename;
 }
 
-char* CScript::GetFilename()
+const std::string& CScript::GetFilename()
 {
     return m_filename;
 }
diff --git a/src/script/script.h b/src/script/script.h
index a114171..deed0c6 100644
--- a/src/script/script.h
+++ b/src/script/script.h
@@ -66,7 +66,7 @@ public:
     bool        GetScript(Ui::CEdit* edit);
     bool        GetCompile();
 
-    void        GetTitle(char* buffer);
+    const std::string& GetTitle();
 
     void        SetStepMode(bool bStep);
     bool        GetStepMode();
@@ -92,8 +92,8 @@ public:
     bool        WriteStack(FILE *file);
     bool        Compare(CScript* other);
 
-    void        SetFilename(char *filename);
-    char*       GetFilename();
+    void        SetFilename(const std::string &filename);
+    const std::string& GetFilename();
 
 protected:
     bool        IsEmpty();
@@ -119,9 +119,9 @@ protected:
     bool    m_bStepMode = false;        // step by step
     bool    m_bContinue = false;        // external function to continue
     bool    m_bCompile = false;     // compilation ok?
-    char    m_title[50] = {};        // script title
-    char    m_mainFunction[50] = {};
-    char    m_filename[50] = {};     // file name
+    std::string m_title = "";        // script title
+    std::string m_mainFunction = "";
+    std::string m_filename = "";     // file name
     std::string m_token = "";        // missing instruction
     int m_tokenUsed = 0, m_tokenAllowed = 0;
     CBot::CBotError m_error = CBot::CBotNoErr;        // error (0=ok)
diff --git a/src/ui/object_interface.cpp b/src/ui/object_interface.cpp
index c2ed098..aa52678 100644
--- a/src/ui/object_interface.cpp
+++ b/src/ui/object_interface.cpp
@@ -1623,7 +1623,6 @@ void CObjectInterface::UpdateInterface()
     CSlider*    ps;
     CColor*     pc;
     bool        bFly, bRun;
-    char        title[100];
 
     if ( !m_object->GetSelect() )  return;
 
@@ -1793,8 +1792,8 @@ void CObjectInterface::UpdateInterface()
         {
             if (m_programStorage->GetProgram(m_selScript)->runnable)
             {
-                m_programStorage->GetProgram(m_selScript)->script->GetTitle(title);
-                if ( title[0] != 0 )
+                std::string title = m_programStorage->GetProgram(m_selScript)->script->GetTitle();
+                if ( !title.empty() )
                 {
                     bRun = true;
                 }
@@ -1943,7 +1942,6 @@ void CObjectInterface::UpdateScript(CWindow *pw)
 {
     CList*      pl;
     char        name[100];
-    char        title[100];
 
     pl = static_cast< CList* >(pw->SearchControl(EVENT_OBJECT_PROGLIST));
     if ( pl == nullptr )  return;
@@ -1953,16 +1951,16 @@ void CObjectInterface::UpdateScript(CWindow *pw)
     {
         sprintf(name, "%d", i+1);
 
-        m_programStorage->GetProgram(i)->script->GetTitle(title);
-        if ( title[0] != 0 )
+        std::string title = m_programStorage->GetProgram(i)->script->GetTitle();
+        if ( !title.empty() )
         {
             if(!m_programStorage->GetProgram(i)->readOnly)
             {
-                sprintf(name, "%d: %s", i+1, title);
+                sprintf(name, "%d: %s", i+1, title.c_str());
             }
             else
             {
-                sprintf(name, "*%d: %s", i+1, title);
+                sprintf(name, "*%d: %s", i+1, title.c_str());
             }
         }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list