Exemple #1
0
Pass* Technique::CreatePass(StringHash type)
{
    Pass* oldPass = GetPass(type);
    if (oldPass)
        return oldPass;
    
    SharedPtr<Pass> newPass(new Pass(type));
    passes_.Insert(type.Value(), newPass);
    
    return newPass;
}
Exemple #2
0
Pass* Technique::CreatePass(StringHash type)
{
    /// \todo Memory use is not tracked when creating passes programmatically due to HashTable not returning the element count
    Pass* oldPass = GetPass(type);
    if (oldPass)
        return oldPass;
    
    SharedPtr<Pass> newPass(new Pass(type));
    passes_.Insert(type.Value(), newPass);
    
    return newPass;
}
Exemple #3
0
Pass* Technique::CreatePass(const ea::string& name)
{
    Pass* oldPass = GetPass(name);
    if (oldPass)
        return oldPass;

    ea::shared_ptr<Pass> newPass(new Pass(name));
    unsigned passIndex = newPass->GetIndex();
    if (passIndex >= passes_.size())
        passes_.resize(passIndex + 1);
    passes_[passIndex] = newPass;

    // Calculate memory use now
    SetMemoryUse((unsigned)(sizeof(Technique) + GetNumPasses() * sizeof(Pass)));

    return newPass;
}
Exemple #4
0
sourcefile_t *assemble(void)
{
	sourcefile_t *src;


	newPass();

	if( (src=newSourcefile())!=NULL && cmdlineSourcefile(src, cmdLineSrc, cmdLineSrc_count) )
	{
		do
		{
			pass_cnt++;
			if( cfg_verbose )
			{
				printf("[pass %d]\n", pass_cnt);
			}

			if( !pass_parse(src) )
			{
				delSourcefile(src);
				src = NULL;
				break;
			}

			if( cfg_debug )
			{
				fprintf(debugLog, "<hr width=\"100%%\">\n<h1>[pass %d]</h1><p>\n", pass_cnt);
				fprintf(debugLog, "<hr width=\"100%%\">\n<h2>LABELS</h2><p>\n");
				dump(debugLog, (localdepth_t)-1,true);

				fprintf(debugLog, "<hr width=\"100%%\">\n<h2>SOURCE</h2><p>\n");
				src_debug(src, debugLog);
				segment_debug(debugLog);
			}
			if( cfg_verbose )
			{
				printf("\n");
			}

			if( cfg_verbose && errorcnt==0 )
			{
				if( allBytesResolved ) {
					printf("All bytes resolved\n");
				}
				else {
					printf("Unresolved bytes left\n");
				}
/*
				if( resolvedSomething() ) {
					printf("Undefined vars resolved in this pass\n");
				}
				else {
					printf("No undefined vars resolved in this pass\n");
				}
*/
			}

		} while( errorcnt==0 && resolvedSomething() && !allBytesResolved );
	}

	return src;
}