Esempio n. 1
0
void PushBack(pSeqList pseq, DataType x)
{
	CheckCapacity(pseq);
	if (pseq->size == MAX)
	{
		printf("˳Ðò±íÒÑÂú\n");
		return;
	}
	CheckCapacity(pseq);
	pseq->list[pseq->size] = x;
	pseq->size++;
}
Esempio n. 2
0
TNode *ReadTip(FILE *fv, char ch, TTree *tree, int numNames, char **names)
{
	int i;
	char *P;
	char name[256];
	
	TNode *node;
	
	node=NewNode(tree);
	i=0;
	
	P=name;
	while (!feof(fv) && ch!=':' && ch!=',' && ch!=')' && i<MAX_NAME_LEN) {
		if (!isspace(ch)) {
			*P=ch;
			i++;P++;
		}
		ch=fgetc(fv);
	}
	*P='\0';

	CheckCapacity(tree, tree->numTips+1);
	
	if (numNames == 0) {
		node->tipNo=tree->numTips;
		if (tree->names[node->tipNo]==NULL) {
			if ( (tree->names[node->tipNo]=(char *)malloc(MAX_NAME_LEN+1))==NULL ) {
				strcpy(treeErrorMsg, "Out of memory creating name.");
				return NULL;
			}
		}
		strcpy(tree->names[node->tipNo], name);
	} else {
	/* we already have some names so just look it up...*/
		i = 0;
		while (i < numNames && strcmp(name, names[i]) != 0)
			i++;

		if (i == numNames) {
			sprintf(treeErrorMsg, "Taxon names in trees for different partitions do not match.");
			return NULL;
		}
		
		node->tipNo=i;
	}
	
	tree->tips[node->tipNo]=node;
	tree->numTips++;

	while (!feof(fv) && ch!=':' && ch!=',' && ch!=')') 
		ch=fgetc(fv);

	if (feof(fv)) {
		sprintf(treeErrorMsg, "Unexpected end of file");
		return NULL;
	}
	ungetc(ch, fv);
	
	return node;
}
Esempio n. 3
0
void PushBack(pSeq pseq, DataType x)
{
	assert(pseq);
	CheckCapacity(pseq);
	pseq->data[pseq->size] = x;
	pseq->size++;
}
Esempio n. 4
0
TObject* TreeBranch::NewEntry()
{
    INFO(clones_array_.GetName());
    CheckCapacity();
    auto * object = clones_array_.AddrAt(position_++);
    CHECK(object, "not object to write to");
    return object;
}
Esempio n. 5
0
int32_t WriteBytes(Buffer* buf, const void* bytes, uint32_t count)
{
    my_assert(buf->_read_pos == 0);
    if (CheckCapacity(buf, count))
        return -1;
    memcpy(buf->_data + buf->_write_pos, bytes, count);
    buf->_write_pos += count;
    return 0;
}
Esempio n. 6
0
/*---------------------------------------------------------------------------*/
int32_t WriteByte(Buffer* buf, uint8_t byte)
{
    my_assert(buf->_read_pos == 0);
    if (CheckCapacity(buf, 1))
        return -1;
    buf->_data[buf->_write_pos] = byte;
    buf->_write_pos++;
    return 0;
}
Esempio n. 7
0
void PushFront(pSeq pseq, DataType x)
{
	int i;
	assert(pseq);
	CheckCapacity(pseq);
	for(i = pseq->size-1; i >= 0; i--)
	{
		pseq->data[i+1] = pseq->data[i];
	}
	pseq->data[0] = x;
	pseq->size++;
}
Esempio n. 8
0
/*----------*/
TTree *NewTree()
{
	TTree *tree;
	
	if ( (tree=(TTree *)malloc(sizeof(TTree)))==NULL ) {
		strcpy(treeErrorMsg, "Out of memory creating tree.");
		return NULL;
	}
	memset(tree, 0, sizeof(TTree)); /* grj */
	tree->capacity=0;
	CheckCapacity(tree, 1000);
	
	InitTree(tree);
	
	return tree;
} /* NewTree */
Esempio n. 9
0
void PushFront(pSeqList pseq, DataType x)
{
	int i = 0;
	if (pseq->size == MAX)
	{
		printf("˳Ðò±íÒÑÂú\n");
		return;
	}
	CheckCapacity(pseq);
	for (i = pseq->size; i > 0; i--)
	{
		pseq->list[i] = pseq->list[i - 1];
	}
	pseq->list[0] = x;
	pseq->size++;
}
Esempio n. 10
0
void Insert(pSeqList pseq, int pos, DataType x)
{
	int i = 0;
	if (pseq->size == MAX)
	{
		printf("˳Ðò±íÒÑÂú\n");
		return;
	}
	CheckCapacity(pseq);
	for (i = pseq->size; i > pos; i--)
	{
		pseq->list[i] = pseq->list[i - 1];
	}
	pseq->list[pos] = x;
	pseq->size++;
	
}