products/Sources/formale Sprachen/C/Lyx/src image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: texrow.C   Sprache: C

Original von: Lyx©

/* This file is part of
 * ======================================================
 * 
 *           LyX, The Document Processor
 *   
 *     Copyright (C) 1995 Matthias Ettrich
 *          Copyright (C) 1995-1998 The LyX Team.
 *
 *======================================================*/


#include <config.h>

#ifdef __GNUG__
#pragma implementation
#endif

#include "texrow.h"
#include "lyxparagraph.h"
#include "error.h"

//  $Id: texrow.C,v 1.1.1.1 1998/04/20 21:14:56 larsbj Exp $

#if !defined(lint) && !defined(WITH_WARNINGS)
static char vcid[] = "$Id: texrow.C,v 1.1.1.1 1998/04/20 21:14:56 larsbj Exp $";
#endif /* lint */

// Delete linked list
void TexRow::reset()
{
 TexRow_Item *current, *iter = next;
 while (iter) {
  // Iterate through the list deleting as you go.
  // A bit easier to debug than recursive deletion.
  current = iter;
  iter = iter->next;
  delete current;
 }
 count = 0;
 next = 0;
 lastpar = 0;
 lastpos = -1;
}

// Defines paragraph and position for the beginning of this row
void TexRow::start(LyXParagraph *par, int pos) {
 lastpar = par;
 lastpos = pos;
}

// Insert node when line is completed
void TexRow::newline()
{
 TexRow_Item *tmp = new TexRow_Item;
 tmp->pos = lastpos;
 
 if (lastpar)
  tmp->id = lastpar->GetID();
 else
  tmp->id = -1;

 // Inserts at the beginning of the list
 tmp->next = next;
 next = tmp;
 count++;
 tmp->rownumber = count;
}


void TexRow::getIdFromRow(int row, int &id, int &pos)
{
 TexRow_Item *tmp = next;
 while (tmp && tmp->rownumber != row) {
  tmp = tmp->next;
 }
 if (tmp) {
  TexRow_Item *tmp2 = next;
  // Increase the pos of all rows with the
  // same id (and where the pos is larger)
  // to avoid putting errorinsets at the
  // same pos.
  while (tmp2) {
   if (tmp2 != tmp &&
       tmp2->id == tmp->id &&
       tmp2->pos >= tmp->pos)
    tmp2->pos++;
   tmp2 = tmp2->next;
  }
  id = tmp->id;
  pos = tmp->pos;
 } else {
  id = -1;
  pos = 0;
 }
}


TexRow & TexRow::operator+=(const TexRow &tr)
{
 // remember that the lists are stored in reverse 
 // so you've got to turn the second one around 
 // as you insert it in the first
 for (int counter = tr.count; counter > 0; --counter) {
  int i = 1;
  TexRow_Item *iter = tr.next;
  while (i < counter) {
   iter = iter->next;
   ++i;
  }

  ++count;
  TexRow_Item *tmp;
  tmp = new TexRow_Item;
  tmp->id = iter->id;
  tmp->pos = iter->pos;
  tmp->next = next;
  tmp->rownumber = count;
  next = tmp;
 }
 // should I be doing this or not?
 //lastpar = tr.lastpar;
 //lastpos = tr.lastpos;
 return *this;


¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff