File:  [parser3project] / parser3 / src / classes / classes.C
Revision 1.8: download - view: text, annotated - select for diffs - revision graph
Fri Sep 21 14:46:09 2001 UTC (24 years, 9 months ago) by parser
Branches: MAIN
CVS tags: HEAD
zillions of #ifdef XML
created new projects for sql drivers [planning to remove sql drivers from main cvs project]
first, will join latest changes

/** @file
	Parser: @b Methoded and Methoded_array classes.

	Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)

	Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
*/
static const char *RCSId="$Id: classes.C,v 1.8 2001/09/21 14:46:09 parser Exp $"; 

#include "classes.h"
#include "pa_request.h"

// Methoded

void Methoded::register_directly_used(Request& r) {
	if(used_directly())
		r.classes().put(name(), this);
}

// Methoded_array

// global variable

Methoded_array *methoded_array;

// methods

Methoded_array::Methoded_array(Pool& apool) : Array(apool) {
#	include "classes.inc"
}

static void configure_admin_one(Array::Item *value, void *info) {
	Request& r=*static_cast<Request *>(info);
	Methoded *methoded=static_cast<Methoded *>(value);
	methoded->configure_admin(r);
}

void Methoded_array::configure_admin(Request& r) {
	for_each(configure_admin_one, &r);
}

static void configure_user_one(Array::Item *value, void *info) {
	Request& r=*static_cast<Request *>(info);
	if(Methoded *methoded=static_cast<Methoded *>(value))
		methoded->configure_user(r);
}

void Methoded_array::configure_user(Request& r) {
	for_each(configure_user_one, &r);
}

static void register_one(Array::Item *value, void *info) {
	Request& r=*static_cast<Request *>(info);
	if(Methoded *methoded=static_cast<Methoded *>(value))
		methoded->register_directly_used(r);
}

void Methoded_array::register_directly_used(Request& r) {
	for_each(register_one, &r);
}

// creator

void init_methoded_array(Pool& pool) {
	methoded_array=new(pool) Methoded_array(pool);
}

E-mail: