// -*- C++ -*-
/* This is the bullet class definition file.
* This file is part of
- * ======================================================
+ * ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-1999 The LyX Team.
+ * Copyright 1995-2000 The LyX Team.
*
* This file Copyright 1997-1999
* Allan Rae
- * ======================================================*/
+ * ====================================================== */
#ifndef BULLET_H
#define BULLET_H
#include "LString.h"
-#ifdef DEBUG_AS_DEFAULT
-#include <cassert>
-#endif
+#include "support/LAssert.h"
///
class Bullet {
public:
///
- Bullet(const int f = -1, const int c = -1, const int s = -1);
-
- ///
- Bullet(const string &);
+ Bullet(int f = -1, int c = -1, int s = -1);
///
- ~Bullet();
+ explicit Bullet(string const &);
///
- void setCharacter(const int);
+ void setCharacter(int);
///
- void setFont(const int);
+ void setFont(int);
///
- void setSize(const int);
+ void setSize(int);
///
- void setText(const string &);
+ void setText(string const &);
///
int getCharacter() const;
///
///
int getSize() const;
///
- string getText() const;
- ///
- string getText();
- ///
- char const * c_str();
+ string const & getText() const;
///
- Bullet & operator = (const Bullet &);
+ Bullet & operator=(Bullet const &);
///
- friend bool operator == (const Bullet &, const Bullet &);
- ///
- friend bool operator != (const Bullet & b1, const Bullet & b2)
- {
- return !(b1 == b2);
- }
-
-
+ friend bool operator==(Bullet const &, Bullet const &);
protected:
-#ifdef DEBUG_AS_DEFAULT
- void testInvariant() const
- {
- assert(font >= MIN);
- assert(font < FONTMAX);
- assert(character >= MIN);
- assert(character < CHARMAX);
- assert(size >= MIN);
- assert(size < SIZEMAX);
- assert(user_text >= -1);
- assert(user_text <= 1);
- // now some relational/operational tests
- if (user_text == 1) {
- assert(font == -1 && (character == -1 && size == -1));
- // assert(!text.empty()); // this isn't necessarily an error
- }
- // else if (user_text == -1) {
- // assert(!text.empty()); // this also isn't necessarily an error
- // }
- // else {
- // // user_text == 0
- // assert(text.empty()); // not usually true
- // }
+#ifdef ENABLE_ASSERTIONS
+ ///
+ void testInvariant() const {
+ Assert(font >= MIN);
+ Assert(font < FONTMAX);
+ Assert(character >= MIN);
+ Assert(character < CHARMAX);
+ Assert(size >= MIN);
+ Assert(size < SIZEMAX);
+ Assert(user_text >= -1);
+ Assert(user_text <= 1);
+ // now some relational/operational tests
+ if (user_text == 1) {
+ Assert(font == -1 && (character == -1 && size == -1));
+ // Assert(!text.empty()); // this isn't necessarily an error
}
+ // else if (user_text == -1) {
+ // Assert(!text.empty()); // this also isn't necessarily an error
+ // }
+ // else {
+ // // user_text == 0
+ // Assert(text.empty()); // not usually true
+ // }
+ }
#endif
-
private:
/**
- This enum makes adding additional panels or changing panel sizes
- easier. Since you only need change these values for all tests to
- be correct for the new values.
-
- Note: MAX means the size of the array so to test you need:
- (x < MAX) *not* (x <= MAX)
- */
+ This enum makes adding additional panels or changing panel sizes
+ easier. Since you only need change these values for all tests to
+ be correct for the new values.
+
+ Note: MAX means the size of the array so to test you need:
+ (x < MAX) *not* (x <= MAX)
+ */
enum {
///
MIN = -1,
///
SIZEMAX = 10
};
-
+
///
- void generateText();
+ void generateText() const;
///
- static const string & bulletSize(const short &);
+ static string const bulletSize(short int);
///
- static const string & bulletEntry(const short &, const short &);
-
+ static string const bulletEntry(short int, short int);
+
///
- short font;
+ int font;
///
- short character;
+ int character;
///
- short size;
+ int size;
// size, character and font are array indices to access
// the predefined arrays of LaTeX equivalent strings.
-
+
/** flag indicates if user has control of text (1)
- or if I can use it to generate strings (0)
- or have already (-1)
- */
- short user_text;
-
+ or if I can use it to generate strings (0)
+ or have already (-1)
+ */
+ mutable short user_text;
+
//NOTE: Arranging these four shorts above to be together
// like this should ensure they are in a single cache line
-
+
/** text may contain a user-defined LaTeX symbol command
- or one generated internally from the font, character
- and size settings.
- */
- string text;
+ or one generated internally from the font, character
+ and size settings.
+ */
+ mutable string text;
};
/*----------------Inline Bullet Member Functions------------------*/
-inline Bullet::Bullet(const string & t)
- : font(MIN), character(MIN), size(MIN), user_text(1), text(t)
+inline
+Bullet::Bullet(string const & t)
+ : font(MIN), character(MIN), size(MIN), user_text(1), text(t)
{
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
testInvariant();
#endif
}
-inline Bullet::~Bullet()
-{}
-
-
-inline void Bullet::setCharacter(const int c)
+inline
+void Bullet::setCharacter(int c)
{
if (c < MIN || c >= CHARMAX) {
character = MIN;
- }
- else {
+ } else {
character = c;
}
user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
testInvariant();
#endif
}
-inline void Bullet::setFont(const int f)
+inline
+void Bullet::setFont(int f)
{
if (f < MIN || f >= FONTMAX) {
font = MIN;
- }
- else {
+ } else {
font = f;
}
user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
testInvariant();
#endif
}
-inline void Bullet::setSize(const int s)
+inline
+void Bullet::setSize(int s)
{
if (s < MIN || s >= SIZEMAX) {
size = MIN;
- }
- else {
+ } else {
size = s;
}
user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
testInvariant();
#endif
}
-inline void Bullet::setText(const string & t)
+inline
+void Bullet::setText(string const & t)
{
font = character = size = MIN;
user_text = 1;
text = t;
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
testInvariant();
#endif
}
-inline int Bullet::getCharacter() const
+inline
+int Bullet::getCharacter() const
{
return character;
}
-inline int Bullet::getFont() const
+inline
+int Bullet::getFont() const
{
return font;
}
-inline int Bullet::getSize() const
+inline
+int Bullet::getSize() const
{
return size;
}
-inline string Bullet::getText() const
+inline
+Bullet & Bullet::operator=(Bullet const & b)
{
- return text;
-}
-
-
-inline Bullet & Bullet::operator = (const Bullet & b)
-{
-#ifdef DEBUG_AS_DEFAULT
+#ifdef ENABLE_ASSERTIONS
b.testInvariant();
#endif
font = b.font;
size = b.size;
user_text = b.user_text;
text = b.text;
-#ifdef DEBUG_AS_DEFAULT
- this->testInvariant();
+#ifdef ENABLE_ASSERTIONS
+ this->testInvariant();
#endif
return *this;
}
+/*-----------------End Bullet Member Functions-----------------*/
-inline const char * Bullet::c_str()
+inline
+bool operator!=(Bullet const & b1, Bullet const & b2)
{
- return this->getText().c_str();
+ return !(b1 == b2);
}
+///
+extern
+Bullet const ITEMIZE_DEFAULTS[];
-/*-----------------End Bullet Member Functions-----------------*/
-
-/** The four LaTeX itemize environment default bullets
- */
-static Bullet const ITEMIZE_DEFAULTS[4] = { Bullet( 0, 8 ),//"\\(\\bullet\\)"
- Bullet( 0, 0 ),//"\\normalfont\\bfseries{--}"
- Bullet( 0, 6 ),//"\\(\\ast\\)"
- Bullet( 0,10 ) };//"\\(\\cdot\\)"
#endif /* BULLET_H_ */