home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / BackStack.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  1KB  |  66 lines

  1. // -*- C++ -*-
  2. /* This file is part of
  3. * ======================================================
  4. *           LyX, The Document Processor
  5. *      
  6. *        Copyright (C) 1997-1998 The LyX Team.
  7. *
  8. *======================================================*/
  9.  
  10. #ifndef _BACK_STACK_H
  11. #define _BACK_STACK_H
  12.  
  13. #include "LString.h"
  14.  
  15. // Created by Alejandro Aguilar Sierra, 970806
  16.  
  17. /**  Utility to get back from a reference or from a child document.
  18.  */
  19. class BackStack {
  20. public:
  21.     ///
  22.     struct BackStackItem {
  23.         ///
  24.         void set(LString f, int xx, int yy) {
  25.             fname = f;  x = xx;  y = yy;
  26.         }
  27.         /// Filename
  28.         LString fname;
  29.         /// Cursor x-position
  30.         int x;
  31.         /// Cursor y-position
  32.         int y;   
  33.     };
  34.     ///
  35.     BackStack(int n) : imax(n) {
  36.         item = new BackStackItem[imax];
  37.         i = 0;
  38.     }
  39.     ///
  40.     ~BackStack() {
  41.         delete[] item;
  42.     }
  43.     ///
  44.     void push(LString f, int x, int y) {
  45.         if (i<imax) 
  46.             item[i++].set(f, x, y);
  47.     }
  48.     ///
  49.     LString &pop(int *x, int *y) {
  50.         if (i>0) i--;
  51.         *x = item[i].x;
  52.         *y = item[i].y;
  53.         return item[i].fname;
  54.     }
  55. private:
  56.     ///
  57.     BackStackItem *item;
  58.     ///
  59.     int i;
  60.     ///
  61.     int imax;
  62. };
  63.  
  64. #endif
  65.