]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_atom.C
several smallish changes/bugfixes/left overs from Porto
[lyx.git] / src / mathed / math_atom.C
index 57acb4a0a7d9b8a113eaeb2c822604f121e6df67..a8e2815a0f146acfd65d18ebd5f2e069f4dfafcb 100644 (file)
@@ -1,27 +1,27 @@
 /*
- *  File:        math_inset.C
- *  Purpose:     Implementation of insets for mathed
- *  Author:      Alejandro Aguilar Sierra <asierra@servidor.unam.mx> 
- *  Created:     January 1996
- *  Description: 
+ *  File:        math_atom.C
+ *  Purpose:     Wrapper for MathInset *
+ *  Author:      André Pönitz
+ *  Created:     July 2001
  *
- *  Dependencies: Xlib, XForms
+ *  Copyright: 2001 The LyX team
  *
- *  Copyright: 1996, 1997 Alejandro Aguilar Sierra
- *
- *   Version: 0.8beta.
+ *   Version: 1.2.0
  *
  *   You are free to use and modify this code under the terms of
  *   the GNU General Public Licence version 2 or later.
  */
 
+#include <config.h>
+
 #ifdef __GNUG__
 #pragma implementation
 #endif
 
 #include "math_atom.h"
 #include "math_inset.h"
-#include "support/LAssert.h"
+
+#include <utility>
 
 
 MathAtom::MathAtom()
@@ -34,50 +34,36 @@ MathAtom::MathAtom(MathInset * p)
 {}
 
 
-MathAtom::MathAtom(MathAtom const & p)
-{
-       copy(p);
-}
+MathAtom::MathAtom(MathAtom const & at)
+       : nucleus_(at.nucleus_ ? at.nucleus_->clone() : 0)
+{}
 
 
-void MathAtom::operator=(MathAtom const & p)
+void MathAtom::operator=(MathAtom const & at)
 {
-       if (this != &p) {
-               done();
-               copy(p);
-       }
+       if (&at == this)
+               return;
+       MathAtom tmp(at);
+       std::swap(tmp.nucleus_, nucleus_);
 }
 
 
-MathAtom::~MathAtom()
+void MathAtom::operator=(MathInset * p)
 {
-       done();
+       reset(p);
 }
 
 
-void MathAtom::done()
+MathAtom::~MathAtom()
 {
        delete nucleus_;
 }
 
 
-void MathAtom::copy(MathAtom const & p)
+void MathAtom::reset(MathInset * p)
 {
-       //cerr << "calling MathAtom::copy\n";
-       nucleus_   = p.nucleus_;
-       if (nucleus_)
-               nucleus_ = nucleus_->clone();
-}
-
-
-MathInset * MathAtom::nucleus() const
-{
-       lyx::Assert(nucleus_);
-       return nucleus_;
-}
-
-
-MathInset * MathAtom::operator->() const
-{
-       return nucleus();
+       if (p == nucleus_)
+               return;
+       delete nucleus_;
+       nucleus_ = p;
 }