예제 #1
0
파일: sqstate.cpp 프로젝트: elleryq/madedit
SQChar* SQSharedState::GetScratchPad(SQInteger size)
{
	SQInteger newsize;
	if(size>0) {
		if(_scratchpadsize < size) {
			newsize = size + (size>>1);
			_scratchpad = (SQChar *)SQ_REALLOC(_scratchpad,_scratchpadsize,newsize);
			_scratchpadsize = newsize;

		}else if(_scratchpadsize >= (size<<5)) {
예제 #2
0
파일: sqstate.cpp 프로젝트: noriter/nit
SQChar* SQSharedState::GetScratchPad(SQInteger size)
{
	ScratchPad& pad = _scratchpads[_scratchpadindex];

	SQInteger newsize;
	if(size>0) {
		if(pad.size < size) {
			newsize = size + (size>>1);
			pad.buf = (SQChar *)SQ_REALLOC(pad.buf, pad.size, newsize);
			pad.size = newsize;

		}else if(pad.size >= (size<<5)) {
예제 #3
0
파일: sqstate.cpp 프로젝트: elleryq/madedit
	c->_prev = NULL;
}
#endif

SQChar* SQSharedState::GetScratchPad(SQInteger size)
{
	SQInteger newsize;
	if(size>0) {
		if(_scratchpadsize < size) {
			newsize = size + (size>>1);
			_scratchpad = (SQChar *)SQ_REALLOC(_scratchpad,_scratchpadsize,newsize);
			_scratchpadsize = newsize;

		}else if(_scratchpadsize >= (size<<5)) {
			newsize = _scratchpadsize >> 1;
			_scratchpad = (SQChar *)SQ_REALLOC(_scratchpad,_scratchpadsize,newsize);
			_scratchpadsize = newsize;
		}
	}
	return _scratchpad;
}

RefTable::RefTable()
{
	AllocNodes(4);
}

void RefTable::Finalize()
{
	RefNode *nodes = _nodes;
	for(SQUnsignedInteger n = 0; n < _numofslots; n++) {
예제 #4
0
파일: sqstate.cpp 프로젝트: noriter/nit
#endif

SQChar* SQSharedState::GetScratchPad(SQInteger size)
{
	ScratchPad& pad = _scratchpads[_scratchpadindex];

	SQInteger newsize;
	if(size>0) {
		if(pad.size < size) {
			newsize = size + (size>>1);
			pad.buf = (SQChar *)SQ_REALLOC(pad.buf, pad.size, newsize);
			pad.size = newsize;

		}else if(pad.size >= (size<<5)) {
			newsize = pad.size >> 1;
			pad.buf = (SQChar *)SQ_REALLOC(pad.buf, pad.size, newsize);
			pad.size = newsize;
		}
	}

	return pad.buf;
}

void SQSharedState::PushScratchPad()
{
	if (++_scratchpadindex == _scratchpads.size())
	{
		ScratchPad pad;
		pad.buf = NULL;
		pad.size = 0;
		_scratchpads.push_back(pad);