// -*- C++ -*-
-/* This is the bullet class definition file.
- * This file is part of
- *======================================================
+/**
+ * \file Bullet.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * LyX, The Document Processor
+ * \author Lars Gullik Bjønnes
+ * \author Allan Rae
*
- * Copyright (C) 1997-1998 Allan Rae
- * and the LyX Team
- *
- *======================================================*/
-
-// $Id: Bullet.h,v 1.1 1999/09/27 18:44:36 larsbj Exp $
+ * Full author contact details are available in file CREDITS.
+ */
-#ifndef BULLET_H_
-#define BULLET_H_
-
-#ifdef __GNUG__
-#pragma interface
-#endif
+#ifndef BULLET_H
+#define BULLET_H
#include "LString.h"
-#ifdef DEBUG_AS_DEFAULT
-#include <assert.h>
-#endif
-
///
class Bullet {
public:
///
- Bullet(const int f = -1, const int c = -1, const int s = -1);
-
- ///
- Bullet(const LString &);
+ 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 LString &);
+ void setText(string const &);
///
int getCharacter() const;
///
///
int getSize() const;
///
- LString getText() const;
- ///
- LString getText();
+ string const & getText() const;
///
- char const * c_str();
+ Bullet & operator=(Bullet const &);
///
- Bullet & operator = (const Bullet &);
- ///
- 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;
#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,
};
///
- void generateText();
+ void generateText() const;
///
- static const LString & bulletSize(const short &);
+ static string const bulletSize(int);
///
- static const LString & bulletEntry(const short &, const short &);
+ static string const bulletEntry(int, int);
///
- short font;
+ int font;
///
- short character;
+ int character;
///
- short size;
-
- // size, character and font are array indices to access
+ 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 LStrings (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.
- */
- LString text;
+ or one generated internally from the font, character
+ and size settings.
+ */
+ mutable string text;
};
-/*----------------Inline Bullet Member Functions------------------*/
-
-inline Bullet::Bullet(const LString & t)
- : font(MIN), character(MIN), size(MIN), user_text(1), text(t)
+inline
+bool operator!=(Bullet const & b1, Bullet const & b2)
{
-#ifdef DEBUG_AS_DEFAULT
- testInvariant();
-#endif
+ return !(b1 == b2);
}
+///
+extern
+Bullet const ITEMIZE_DEFAULTS[];
-inline Bullet::~Bullet()
-{}
-
-
-inline void Bullet::setCharacter(const int c)
-{
- if (c < MIN || c >= CHARMAX) {
- character = MIN;
- }
- else {
- character = c;
- }
- user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
- testInvariant();
-#endif
-}
-
-
-inline void Bullet::setFont(const int f)
-{
- if (f < MIN || f >= FONTMAX) {
- font = MIN;
- }
- else {
- font = f;
- }
- user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
- testInvariant();
-#endif
-}
-
-
-inline void Bullet::setSize(const int s)
-{
- if (s < MIN || s >= SIZEMAX) {
- size = MIN;
- }
- else {
- size = s;
- }
- user_text = 0;
-#ifdef DEBUG_AS_DEFAULT
- testInvariant();
-#endif
-}
-
-
-inline void Bullet::setText(const LString & t)
-{
- font = character = size = MIN;
- user_text = 1;
- text = t;
-#ifdef DEBUG_AS_DEFAULT
- testInvariant();
-#endif
-}
-
-
-inline int Bullet::getCharacter() const
-{
- return character;
-}
-
-
-inline int Bullet::getFont() const
-{
- return font;
-}
-
-
-inline int Bullet::getSize() const
-{
- return size;
-}
-
-
-inline LString Bullet::getText() const
-{
- return text;
-}
-
-
-inline Bullet & Bullet::operator = (const Bullet & b)
-{
-#ifdef DEBUG_AS_DEFAULT
- b.testInvariant();
-#endif
- font = b.font;
- character = b.character;
- size = b.size;
- user_text = b.user_text;
- text = b.text;
-#ifdef DEBUG_AS_DEFAULT
- this->testInvariant();
-#endif
- return *this;
-}
-
-
-inline const char * Bullet::c_str()
-{
- return this->getText().c_str();
-}
-
-
-/*-----------------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_ */