Beispiel #1
0
Boolean EntityApp::makeSystemId(int nFiles, AppChar *const *files,
					StringC &result)
{
  Vector<StringC> filenames(nFiles == 0 ? 1 : nFiles);
  int i;
  for (i = 0; i < nFiles; i++)
    filenames[i] = convertInput(tcscmp(files[i], SP_T("-")) == 0
				? SP_T("<OSFD>0")
				: files[i]);
  if (nFiles == 0)
    filenames[0] = convertInput(SP_T("<OSFD>0"));
  return entityManager()->mergeSystemIds(filenames,
					 mapCatalogDocument_,
					 systemCharset_,
					 *this,
					 result);
}
Beispiel #2
0
std::vector<WordAnalysis> Vabamorf::analyze(
    StringVector const& sentence,
    const bool disambiguate,
    const bool guess,
    const bool phonetic,
    const bool propername) {

    applyMorfSettings(linguistic, guess, phonetic, propername);
    CFSArray<CFSVar> words = convertInput(sentence);
    addAnalysis(linguistic, disambiguator, words, disambiguate);
    return convertOutput(words);
}
/********************************************** MAIN FUNCTION *************************************************/
int main()
{
	int v, i, j, index1, index2, integers1[1000] = {0}, integers2[1000] = {0}, number1, number2;
	char start[100], key[100], s[100];
	scanf("%s", s);
	v = checkFloat(s);
	getchar();
	if(v < 0 || v > 1000 || v == -1)
	{
		printf("INVALID INPUT\n");
		return 0;
	}

	struct Graph *graph = makeGraph(v);

	for(i = 0; i < 10000; i++)
	{
		visited[i] = 0;
	}

	char input[1000][1000], weight[1000][1000];
	for(i = 0; i < v; i++)
	{
		scanf("%[^\n]s", input[i]);
		getchar();
	}

	for(i = 0; i < v; i++)
	{
		scanf("%[^\n]s", weight[i]);
		getchar();
	}

	for(i = 0; i < v; i++)
	{
		index1 = convertInput(input[i], integers1);
		index2 = convertInput(weight[i], integers2);

		if(index1 == -1 || index2 == -1)
		{
			printf("INVALID INPUT\n");
			return 0;
		}

		for(j = 0; j < index2; j++)
		{
			if(integers2[j] < 0 || integers2[j] > 10000)
			{
				printf("INVALID INPUT\n");
				return 0;
			}
		}
		
		if(index1 > 0)
		{
			if(isSorted(integers1, index1) == 0)
			{
				printf("INVALID INPUT\n");
				return 0;
			}
		}

		for(j = 0; j < index1; j++)
		{
			if(integers1[j] < 0 || integers1[j] > (v - 1))
			{
				printf("INVALID INPUT\n");
				return 0;
			}
			makeEdge(graph, i, integers1[j], integers2[j]);
		}
	}
	
	while(1)
	{
		char choice[5];
		scanf("%s", choice);
		if(strcmp(choice, "apsp") == 0)
		{
			scanf("%s", start);
			number1 = checkFloat(start);
			if(number1 < 0 || number1 > (v - 1))
			{
				printf("INVALID INPUT\n");
				return 0;
			}

			dijkstra(graph, number1);
			for(i = 0; i < graph->v; i++)
			{
				if(min_dist_array[i] != 50000)
				{
					printf("%d ", min_dist_array[i]);
				}
				else
				{
					printf("INF ");
				}
			}
			printf("\n");
		}
		else if(strcmp(choice, "sssp") == 0)
		{
			scanf("%s %s", start, key);
			number1 = checkFloat(start);
			if(number1 < 0 || number1 > (v - 1))
			{
				printf("INVALID INPUT\n");
				return 0;
			}

			number2 = checkFloat(key);
			if(number2 < 0 || number2 > (v - 1))
			{
				printf("INVALID INPUT\n");
				return 0;
			}
			dijkstra(graph, number1);
			if(min_dist_array[number2] != 50000)
			{
				printf("%d", min_dist_array[number2]);
			}
			else
			{
				printf("UNREACHABLE");
			}
			printf("\n");
		}
		else if(strcmp(choice, "stop") == 0)
		{
			break;
		}

		else 
		{
			printf("ENTER CORRECT CHOICE\n");
		}
	}
}
Beispiel #4
0
std::vector<SpellingResults>
Vabamorf::spellcheck(StringVector const& sentence, const bool suggest) {
    CFSArray<CFSVar> words = convertInput(sentence);
    addSuggestions(linguistic, words, suggest);
    return convertSpellingOutput(words);
}
Beispiel #5
0
// Ambisonic to binaural render
void AudioFOA::render(int16_t* input, float* output, int index, float qw, float qx, float qy, float qz, float gain, int numFrames) {

    assert(index >= 0);
    assert(index < FOA_TABLES);
    assert(numFrames == FOA_BLOCK);

    ALIGN32 float fftBuffer[FOA_NFFT];          // in-place FFT buffer
    ALIGN32 float accBuffer[2][FOA_NFFT] = {};  // binaural accumulation buffers
    ALIGN32 float inBuffer[4][FOA_BLOCK];       // deinterleaved input buffers

    float* in[4] = { inBuffer[0], inBuffer[1], inBuffer[2], inBuffer[3] };
    float rotation[4][4];

    // convert input to deinterleaved float
    convertInput(input, in, FOA_GAIN, FOA_BLOCK);

    // convert quaternion to 4x4 rotation
    quatToMatrix_4x4(qw, qx, qy, qz, rotation);

    // apply gain as uniform scale
    scaleMatrix_4x4(gain, rotation);

    // disable interpolation from reset state
    if (_resetState) {
        memcpy(_rotationState, rotation, sizeof(_rotationState));
    }

    // rotate and scale the soundfield
    rotate_4x4(in, _rotationState, rotation, crossfadeTable, FOA_BLOCK);

    // new parameters become old
    memcpy(_rotationState, rotation, sizeof(_rotationState));

    //
    // Accumulate the contribution of each spherical harmonic into binaural output buffers.
    // Performed in the frequency domain, using overlap-save FFT.
    //
    for (int n = 0; n < 4; n++) {

        // fill with overlapped input
        memcpy(fftBuffer, _fftState[n], FOA_OVERLAP * sizeof(float));       // old input
        memcpy(&fftBuffer[FOA_OVERLAP], in[n], FOA_BLOCK * sizeof(float));  // new input

        // input history update
        memcpy(_fftState[n], &fftBuffer[FOA_BLOCK], FOA_OVERLAP * sizeof(float));

        // forward transform
        rfft512(fftBuffer);

        // multiply-accumulate with filter kernels
        rfft512_cmadd_1X2(fftBuffer, foa_table_table[index][n][0], foa_table_table[index][n][1], accBuffer[0], accBuffer[1]);
    }

    // inverse transform
    rifft512(accBuffer[0]);
    rifft512(accBuffer[1]);

    //
    // Mix into the interleaved output buffer.
    // The first FOA_OVERLAP samples are discarded, due to overlap-save FFT.
    //
    for (int i = 0; i < FOA_BLOCK; i++) {
        output[2*i+0] += accBuffer[0][i + FOA_OVERLAP];
        output[2*i+1] += accBuffer[1][i + FOA_OVERLAP];
    }

    _resetState = false;
}
Beispiel #6
0
Ptr<ExtendEntityManager> &EntityApp::entityManager()
{
  if (!entityManager_.isNull())
    return entityManager_;
  PosixStorageManager *sm
    = new PosixStorageManager("OSFILE",
			      systemCharset_.desc(),
#ifndef SP_WIDE_SYSTEM
			      codingSystem(),
#endif
			      5);
  size_t i;
  for (i = 0; i < searchDirs_.size(); i++)
    sm->addSearchDir(convertInput(searchDirs_[i]));
  {
    const AppChar *e = tgetenv(SP_T("SGML_SEARCH_PATH"));
    if (!e)
      e = SGML_SEARCH_PATH_DEFAULT;
    if (*e) {
      StringC str(convertInput(e));
      size_t i = 0;
      size_t start = 0;
      for (;;) {
	if (i == str.size() || str[i] == FILE_SEP) {
	  sm->addSearchDir(StringC(str.data() + start,
				   i - start));
	  if (i == str.size())
	    break;
	  start = ++i;
	}
	else
	  i++;
      }
    }
  }

  entityManager_ = ExtendEntityManager::make(sm, codingSystem());
  entityManager_
  ->registerStorageManager(new PosixFdStorageManager("OSFD",
						     systemCharset_.desc()));
  entityManager_->registerStorageManager(new URLStorageManager("URL"));
  entityManager_->registerStorageManager(new LiteralStorageManager("LITERAL"));
  for (i = 0;; i++) {
    const char *s;
    const CodingSystem *p = codingSystem(i, s);
    if (!p)
      break;
    entityManager_->registerCodingSystem(s, p);
  }
#ifdef SP_MULTI_BYTE
  for (i = 0; i < SIZEOF(inputCodingSystems); i++)
    entityManager_->registerCodingSystem(inputCodingSystems[i].name,
					 inputCodingSystems[i].cs);
#endif
  Vector<StringC> v;
  for (i = 0; i < catalogSysids_.size(); i++)
    // filenames specified on command-line must exist
    v.push_back(convertInput(catalogSysids_[i]));
  {
    const AppChar *e = tgetenv(SP_T("SGML_CATALOG_FILES"));
    if (!e)
      e = SGML_CATALOG_FILES_DEFAULT;
    if (*e) {
      StringC str(convertInput(e));
      size_t i = 0;
      size_t start = 0;
      for (;;) {
	if (i == str.size() || str[i] == FILE_SEP) {
	  v.push_back(StringC(str.data() + start,
			      i - start));
	  if (i == str.size())
	    break;
	  start = ++i;
	}
	else
	  i++;
      }
    }
  }
  entityManager_->setCatalogManager(SOCatalogManager::make(v,
							   catalogSysids_.size(),
							   systemCharset_,
							   systemCharset_));
  return entityManager_;
}