File:  [parser3project] / parser3 / src / include / pa_request.h
Revision 1.16: download - view: text, annotated - select for diffs - revision graph
Sun Feb 25 17:33:43 2001 UTC (25 years, 4 months ago) by paf
Branches: MAIN
CVS tags: HEAD
VAliased0

/*
  $Id: pa_request.h,v 1.16 2001/02/25 17:33:43 paf Exp $
*/

#ifndef PA_REQUEST_H
#define PA_REQUEST_H

#include "pa_pool.h"
#include "pa_exception.h"
#include "pa_hash.h"
#include "pa_wcontext.h"
#include "pa_value.h"
#include "pa_stack.h"
#include "pa_vclass.h"

#define MAIN_METHOD_NAME "main"
#define NAME_RUN "RUN"

#ifndef NO_STRING_ORIGIN
#	define COMPILE_PARAMS char *source, String *default_name, char *file
#	define COMPILE(source, default_name, file) real_compile(source, default_name, file)
#else
#	define COMPILE_PARAMS char *source, String *default_name
#	define COMPILE(source, default_name, file) real_compile(source, default_name)
#endif

class Local_request_exception;

class Request : public Pooled {
public:
	
	Request(Pool& apool) : Pooled(apool),
		stack(apool),
		fclasses(apool),
		fclasses_array(apool)
		{
	}
	~Request() {}

	// global classes
	Hash& classes() { return fclasses; }
	Array& classes_array() { return fclasses_array; }

	// core request processing
	void core();

private: // core data

	// classes
	Hash fclasses;
	Array fclasses_array;

	// contexts
	Value *self, *root, *rcontext;
	WContext *wcontext;
	
	// execution stack
	Stack stack;

public: // core.C

	void use(char *file, String *alias);

private: // core.C

	char *execute_MAIN();

private: // compile.C

	VClass& real_compile(COMPILE_PARAMS);

private: // execute.C

	void execute(const Array& ops);

	Value *get_element();

};

// core func
void core();

#endif

E-mail: