// -*- C++ -*-
/* This is the bullet class definition file.
* This file is part of
- * ======================================================
+ * ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* This file Copyright 1997-1999
* Allan Rae
#ifndef BULLET_H
#define BULLET_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
#include "LString.h"
-#include "support/LAssert.h"
-
///
class Bullet {
public:
///
string const & getText() const;
///
- char const * c_str() const;
- ///
- Bullet & operator = (Bullet const &);
+ Bullet & operator=(Bullet const &);
///
friend bool operator==(Bullet const &, Bullet const &);
- ///
- friend bool operator!=(Bullet const & b1, Bullet const & b2) {
- return !(b1 == b2);
- }
protected:
#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
- // }
- }
+ 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)
*/
///
SIZEMAX = 10
};
-
+
///
void generateText() const;
///
- static string bulletSize(short int);
+ static string const bulletSize(int);
///
- static string bulletEntry(short int, short int);
-
+ 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 strings (0)
or have already (-1)
*/
- mutable short user_text;
-
+ 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.
};
-/*----------------Inline Bullet Member Functions------------------*/
-
-inline
-Bullet::Bullet(string const & t)
- : font(MIN), character(MIN), size(MIN), user_text(1), text(t)
-{
-#ifdef ENABLE_ASSERTIONS
- testInvariant();
-#endif
-}
-
-
-inline
-void Bullet::setCharacter(int c)
-{
- if (c < MIN || c >= CHARMAX) {
- character = MIN;
- } else {
- character = c;
- }
- user_text = 0;
-#ifdef ENABLE_ASSERTIONS
- testInvariant();
-#endif
-}
-
-
-inline
-void Bullet::setFont(int f)
-{
- if (f < MIN || f >= FONTMAX) {
- font = MIN;
- } else {
- font = f;
- }
- user_text = 0;
-#ifdef ENABLE_ASSERTIONS
- testInvariant();
-#endif
-}
-
-
-inline
-void Bullet::setSize(int s)
-{
- if (s < MIN || s >= SIZEMAX) {
- size = MIN;
- } else {
- size = s;
- }
- user_text = 0;
-#ifdef ENABLE_ASSERTIONS
- testInvariant();
-#endif
-}
-
-
inline
-void Bullet::setText(string const & t)
+bool operator!=(Bullet const & b1, Bullet const & b2)
{
- font = character = size = MIN;
- user_text = 1;
- text = t;
-#ifdef ENABLE_ASSERTIONS
- testInvariant();
-#endif
+ return !(b1 == b2);
}
-
-inline
-int Bullet::getCharacter() const
-{
- return character;
-}
-
-
-inline
-int Bullet::getFont() const
-{
- return font;
-}
-
-
-inline
-int Bullet::getSize() const
-{
- return size;
-}
-
-
-inline
-Bullet & Bullet::operator=(Bullet const & b)
-{
-#ifdef ENABLE_ASSERTIONS
- b.testInvariant();
-#endif
- font = b.font;
- character = b.character;
- size = b.size;
- user_text = b.user_text;
- text = b.text;
-#ifdef ENABLE_ASSERTIONS
- this->testInvariant();
-#endif
- return *this;
-}
-
-
-inline
-char const * Bullet::c_str() const
-{
- return getText().c_str();
-}
-
-
-/*-----------------End Bullet Member Functions-----------------*/
-
///
extern
Bullet const ITEMIZE_DEFAULTS[];