⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 table.h

📁 早期freebsd实现
💻 H
字号:
// -*- C++ -*-/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.     Written by James Clark (jjc@jclark.com)This file is part of groff.groff is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 2, or (at your option) any laterversion.groff is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public License alongwith groff; see the file COPYING.  If not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <ctype.h>#include <errno.h>#include "cset.h"#include "cmap.h"#include "stringclass.h"#include "errarg.h"#include "error.h"#include "lib.h"struct inc_number {  short inc;  short val;};struct entry_modifier {  inc_number point_size;  inc_number vertical_spacing;  string font;  enum { CENTER, TOP, BOTTOM } vertical_alignment;  char zero_width;  char stagger;  entry_modifier();  ~entry_modifier();};enum format_type {  FORMAT_LEFT,   FORMAT_CENTER,   FORMAT_RIGHT,   FORMAT_NUMERIC,  FORMAT_ALPHABETIC,  FORMAT_SPAN,   FORMAT_VSPAN,  FORMAT_HLINE,  FORMAT_DOUBLE_HLINE};struct entry_format : entry_modifier {  format_type type;  entry_format(format_type);  entry_format();  void debug_print() const;};struct table_entry;struct horizontal_span;struct stuff;struct vertical_rule;class table {  unsigned flags;  int nrows;  int ncolumns;  int linesize;  char delim[2];  char decimal_point_char;  vertical_rule *vrule_list;  stuff *stuff_list;  horizontal_span *span_list;  table_entry *entry_list;  table_entry ***entry;  char **vline;  char *row_is_all_lines;  string *minimum_width;  int *column_separation;  char *equal;  int left_separation;  int right_separation;  int allocated_rows;  void build_span_list();  void do_hspan(int r, int c);  void do_vspan(int r, int c);  void allocate(int r);  void compute_widths();  void divide_span(int, int);  void sum_columns(int, int);  void compute_separation_factor();  void compute_column_positions();  void do_row(int);  void init_output();  void add_stuff(stuff *);  void do_top();  void do_bottom();  void do_vertical_rules();  void build_vrule_list();  void add_vertical_rule(int, int, int, int);  void define_bottom_macro();  int vline_spanned(int r, int c);  int row_begins_section(int);  int row_ends_section(int);  void make_columns_equal();  void compute_vrule_top_adjust(int, int, string &);  void compute_vrule_bot_adjust(int, int, string &);  void determine_row_type();public:  /* used by flags */  enum {    CENTER = 01,    EXPAND = 02,    BOX = 04,    ALLBOX = 010,    DOUBLEBOX = 020,    NOKEEP = 040    };  table(int nc, unsigned flags, int linesize, char decimal_point_char);  ~table();  void add_text_line(int r, const string &, const char *, int);  void add_single_hline(int r);  void add_double_hline(int r);  void add_entry(int r, int c, const string &, const entry_format *,		 const char *, int lineno);  void add_vlines(int r, const char *);  void check();  void print();  void set_minimum_width(int c, const string &w);  void set_column_separation(int c, int n);  void set_equal_column(int c);  void set_delim(char c1, char c2);  void print_single_hline(int r);  void print_double_hline(int r);  int get_nrows();};void set_troff_location(const char *, int);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -