Example #1
0
int main(int argc, char **argv)
{
  gsl_matrix *m;
  FILE *f;
  size_t *result;
  double work;
  int rows, cols, keep, i;
  time_t start, end;


  if (argc != 3) {
    fprintf(stderr, "USAGE: %s dist_matrix keep_rows\n\n", argv[0]);
    fprintf(stderr, "dist_matrix should have one line with 'n_rows n_cols' ");
    fprintf(stderr, "followed by the matrix.\n");
    return 1;
  }

  keep = atoi(argv[2]);

  f = fopen(argv[1], "r");
  /* Read dimensions: width then height */
  assert(fscanf(f, "%d %d", &rows, &cols) == 2);
  m = gsl_matrix_alloc(rows, cols);
  assert(!gsl_matrix_fscanf(f, m));
  fclose(f);

  time(&start);
  result = pam(m, keep, NULL, &work);
  time(&end);

  for(i = 0; i < keep; i++)
    printf("%lu ", result[i]);
  printf("\n");
  printf("Total work: %f\n", work);
  printf("Took: %.2lfs\n", difftime(end, start));

  gsl_matrix_free(m);
  free(result);

  return 0;
}
Example #2
0
bool InitializeStructure::FiniteStateMachineAnalysis(char *buffer,size_t size,int separator,int codepage)
{
    char *p=buffer;
    char *end=buffer+size;
    char *secStart=nullptr;
    char *keyStart=nullptr;
    char *valueStart=nullptr;
    auto anonymous=new IniSection();
    auto currentSec=anonymous;
    enum _FSMState{
        STAT_NONE=0,
        STAT_SECTION,
        STAT_KEY,
        STAT_VALUE,
        STAT_COMMENT
    }state=STAT_NONE;
    for(;p<end;p++)
    {
        switch(state)
        {
            case STAT_NONE:
            {
                if(*p==L'[')
                {
                    state=STAT_SECTION;
                    secStart=p+1;
                }else if(*p=='#'||*p==';')
                {
                    state=STAT_COMMENT;
                }else if(!isspace(*p)){
                    state=STAT_KEY;
                    keyStart=p;
                }
                break;
            }
            case STAT_SECTION:
            {
                if(*p==']')
                {
                    *p='\0';
                    std::string ke=keyStart;
                    std::string va=valueStart;
                    wcharget k(ke.c_str());
                    wcharget v(va.c_str());
                    Parameters pam(std::wstring(k.Get()),std::wstring(v.Get()),std::wstring(),0);
                    currentSec->items.push_back(pam);
                    state=STAT_NONE;
                }
                break;
            }
            case STAT_COMMENT:
            {
                if(*p=='\n')
                {
                    state=STAT_NONE;
                    break;
                }
                break;
            }
            case STAT_KEY:
            {
                if(*p==separator||*p=='\t')
                {
                    *p='\0';
                    state=STAT_VALUE;
                    valueStart=p+1;
                }
                break;
            }
            case STAT_VALUE:
            {
                if(*p=='\n'||*p=='\r')
                {
                    *p='\0';
                    std::string ke=keyStart;
                    std::string va=valueStart;
                    wcharget k(ke.c_str());
                    wcharget v(va.c_str());
                    Parameters pam(std::wstring(k.Get()),std::wstring(v.Get()),std::wstring(),0);
                    state=STAT_NONE;
                }
                break;
            }
            default:
            break;
        }
    }
    if(state==STAT_VALUE)
    {
        ////
        std::string ke=keyStart;
        std::string va=valueStart;
        wcharget k(ke.c_str());
        wcharget v(va.c_str());
        Parameters pam(std::wstring(k.Get()),std::wstring(v.Get()),std::wstring(),0);
    }
    return true;
}
Example #3
0
bool InitializeStructure::FiniteStateMachineAnalysis(wchar_t *buffer,size_t size,int separator)
{
    wchar_t *p=buffer;
    wchar_t *end=buffer+size;
    wchar_t *secStart=nullptr;
    wchar_t *keyStart=nullptr;
    wchar_t *valueStart=nullptr;
    auto anonymous=new IniSection();
    auto currentSec=anonymous;
    setlocale(LC_ALL, NULL);
    enum _FSMState{
        STAT_NONE=0,
        STAT_SECTION,
        STAT_KEY,
        STAT_VALUE,
        STAT_COMMENT
    }state=STAT_NONE;
    for(;p<end;p++)
    {
        switch(state)
        {
            case STAT_NONE:
            {
                if(*p==L'[')
                {
                    state=STAT_SECTION;
                    secStart=p+1;
                }else if(*p=='#'||*p==';')
                {
                    state=STAT_COMMENT;
                }else if(!iswspace(*p)){
                    state=STAT_KEY;
                    keyStart=p;
                }
                break;
            }
            case STAT_SECTION:
            {
                if(*p==']')
                {
                    *p='\0';
                    currentSec=new IniSection();
                    std::wstring wsec=secStart;
                    attrTable.insert(std::pair<std::wstring, decltype(currentSec)>(wsec, currentSec));
                    state=STAT_NONE;
                }
                break;
            }
            case STAT_COMMENT:
            {
                if(*p=='\n')
                {
                    state=STAT_NONE;
                    break;
                }
                break;
            }
            case STAT_KEY:
            {
                if(*p==separator||*p=='\t')
                {
                    *p='\0';
                    state=STAT_VALUE;
                    valueStart=p+1;
                }
                break;
            }
            case STAT_VALUE:
            {
                if(*p=='\n'||*p=='\r')
                {
                    *p='\0';
                    std::wstring ke=keyStart;
                    std::wstring va=valueStart;
                    Parameters pam(ke,va,std::wstring(),0);
                    currentSec->items.push_back(pam);
                    state=STAT_NONE;
                }
                break;
            }
            default:
            break;
        }
    }
    if(state==STAT_VALUE)
    {
        ////
        std::wstring ke=keyStart;
        std::wstring va=valueStart;
        Parameters pam(ke,va,std::wstring(),0);
        currentSec->items.push_back(pam);
    }
    return true;
}