Beispiel #1
0
int CLabel::Regist( char *name, int type, int opt, char const *filename, int line )
{
    if ( name[0]==0 ) return -1;
    if ( cur>=maxlab ) {				// ラベルバッファ拡張
        LABOBJ *tmp;
        int i,oldsize;
        oldsize = sizeof(LABOBJ)*maxlab;
        maxlab += def_maxlab;
        tmp = (LABOBJ *)malloc( sizeof(LABOBJ)*maxlab );
        for(i=0;i<maxlab;i++) { tmp[i].flag = -1; }
        memcpy( (char *)tmp, (char *)mem_lab, oldsize );
        free( mem_lab );
        mem_lab = tmp;
    }
    
    int label_id = cur;
    LABOBJ *lab=&mem_lab[cur++];
    lab->flag = 1;
    lab->type = type;
    lab->opt  = opt;
    lab->eternal = 0;
    lab->ref = 0;
    lab->name = RegistSymbol( name );
    lab->data = NULL;
    lab->data2 = NULL;
    lab->hash = StrCase( lab->name );
    lab->rel = NULL;
    lab->init = LAB_INIT_NO;
    lab->typefix = LAB_TYPEFIX_NONE;
    SetDefinition(label_id, filename, line);
    
    labels.insert(std::make_pair(lab->name, label_id));
    return label_id;
}
// Reset to the default state.
void ParticleParameter::Reset(){
	m_restartOnChange = true;
	m_index = 0;
	SetDefinition(k_defaultDefinition, B2_ARRAY_SIZE(k_defaultDefinition));
	Set(0);
}