示例#1
0
/*this function starts the first pass procedure*/
void SecondPass(char* fileName)
{
	CmdQueue layoutQueue;
	Cmd tempRecord;
	printf("\nBegining second pass...\n");
	CalculateAddressesForLabels(_labels,IC);
	UpdateEntryLabels(&Linkage_List,_labels);
	layoutQueue=CreateCmdQueue();
	while(IsCmdQueueEmpty(computerLanguage)==FALSE)
	{
		tempRecord=RetrieveRecord(computerLanguage);
		AddItemToLayout(tempRecord,layoutQueue);
	}
	layoutQueue=KindOfSort_CmdQ(layoutQueue);
	if(WasThereCompilingError()==TRUE)
		ErrorHandler(FatalError," cannot proceed!\n");
	WriteObjFile(fileName,layoutQueue,IC,DC);
	WriteExtAndEntFiles(fileName,&Linkage_List);
	printf("\nCompilation was successful, files were created.\n");
}
示例#2
0
int R3Model::
WriteFile(const char *filename) const
{
  // Parse input filename extension
  const char *extension;
  if (!(extension = strrchr(filename, '.'))) {
    printf("Filename %s has no extension (e.g., .obj)\n", filename);
    return 0;
  }

  // Write file of appropriate type
  if (!strncmp(extension, ".obj", 4)) {
    if (!WriteObjFile(filename)) return 0;
  }
  else {
    RNFail("Unable to write file %s (unrecognized extension: %s)\n", filename, extension);
    return 0;
  }

  // Return success
  return 1;
}