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

📄 tables.h

📁 Full support for extended regular expressions (those with intersection and complement); Support for
💻 H
字号:

#ifndef __DOLPHIN__TABLES_H

#define __DOLPHIN__TABLES_H

#include <stdio.h>
#include <vector>
#include <set>

void make_tables();

class TableMaker
{
	std::vector<int> *table;
	
public:
	TableMaker(std::vector<int> &supplied_table)
	{
		table=&supplied_table;
	}
	// returns offset of string in global table
	template<class ForwardIterator> int add(ForwardIterator first, ForwardIterator last)
	{
		int offset=table->size();
		for(ForwardIterator p=first; p!=last; p++)
			table->push_back(*p);
		return offset;
	}
	int add(std::vector<int> &v) { return add(v.begin(), v.end()); }
	int add(std::set<int> &s) { return add(s.begin(), s.end()); }
};

inline char *determine_optimal_format_field(int n)
{
	if(n<10)
		return "%1d";
	else if(n<100)
		return "%2d";
	else if(n<1000)
		return "%3d";
	else if(n<10000)
		return "%4d";
	else if(n<100000)
		return "%5d";
	else
		return "%d";
}

class TablePrinter
{
	FILE *a;
	char *indent, *format;
	int numbers_in_line, pos;
	bool it_is_the_first_number;
	
public:
	TablePrinter(FILE *supplied_a, char *supplied_indent, char *supplied_format, int supplied_numbers_in_line)
	{
		a=supplied_a;
		indent=supplied_indent;
		format=supplied_format;
		numbers_in_line=supplied_numbers_in_line;
		pos=0;
		it_is_the_first_number=true;
	}
	void print(int x)
	{
		if(it_is_the_first_number)
		{
			fprintf(a, "%s", indent);
			it_is_the_first_number=false;
		}
		else if(pos%numbers_in_line)
			fprintf(a, ", ");
		else
			fprintf(a, ",\n%s", indent);

		fprintf(a, format, x);
		
		pos++;
	}
	void print(std::vector<int> &v)
	{
		for(int i=0; i<v.size(); i++)
			print(v[i]);
	}
};

#endif

⌨️ 快捷键说明

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