Personal tools
You are here: Home Projects C++ Cfront releases Release 3.0.3 source libSC Path wild.c
Document Actions

wild.c

by Michael L Powell last modified 2007-01-26 03:24

Click here to get the file

Size 1.8 kB - File type text/plain

File contents

/*ident	"@(#)Path:wild.c	3.1" */
/******************************************************************************
*
* C++ Standard Components, Release 3.0.
*
* Copyright (c) 1991, 1992 AT&T and Unix System Laboratories, Inc.
* Copyright (c) 1988, 1989, 1990 AT&T.  All Rights Reserved.
*
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T and Unix System
* Laboratories, Inc.  The copyright notice above does not evidence
* any actual or intended publication of such source code.
*
******************************************************************************/

#include "Pathlib.h"
#include <List.h>

//ostream & operator<<(ostream & o, const Vpool_stats & v);

static Vpool *pool;
static List<Path> *lp;

static void poolcreate(size_t n, size_t exp) {
	pool = new Vpool(n, exp);
}

static void found(const char *p) {
//	cout << "callback: " << p << endl;
	lp->put(Path(p));
}

static char * alloc() {
	return (char*)pool->alloc();
}

static void shrink(char *p, size_t n) {
	pool->realloc_inplace(p, n);
}

void Path::expand_wildcards(List<Path> & ret) const {
	ret.make_empty();
	lp = &ret;
	
	/*int i =*/ path_expand_Path_ATTLC(rep, found, poolcreate, alloc, shrink);
//	cout << pool->stats() << endl;
	delete pool;

	// not really necessary, since put doesn't change current position
	// ret.reset();
}

#if 0
ostream & operator<<(ostream & o, const Vpool_stats & v) {
	o << "There are " << v.count << " elements in the pool, occupying ";
	o << v.mem_inuse << " bytes, and with a waste " << endl;
	o << "of " << v.mem_waste << " bytes, for a current memory utilization of ";
	o << v.mem_util << " and a total savings\nof ";
	o << v.mem_savings << " bytes achieved due to shrinking/reallocing." << endl;
	o << "(Underlying block size is " << v.chunk_size << ".)" << endl;
	o << "(Underlying element size is " << v.elsize << ".)" << endl;

	return o;
}	
#endif
« July 2014 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: