Example #1
0
void TreeBuilder::AddRandomChildren( 
  Node& node, bool bUseTerminal, bool bUseNode, unsigned int nDepth, unsigned int nMaxDepth ) {
  assert( bUseTerminal || bUseNode ); // use one or both
  assert( nDepth <= nMaxDepth ); 
  NodeType::E nt( node.ChildType() );
  switch ( node.NodeCount() ) {
  case 0: // nothing, this is terminal node
    assert( node.IsTerminal() );
    break;
  case 1:
    node.AddCenter( CreateChild( nt, bUseTerminal, bUseNode, nDepth, nMaxDepth ) );
    if ( !node.ChildCenter().IsTerminal() ) {
      AddRandomChildren( node.ChildCenter(), bUseTerminal, bUseNode, nDepth + 1, nMaxDepth );
    }
    break;
  case 2: 
    node.AddLeft( CreateChild( nt, bUseTerminal, bUseNode, nDepth, nMaxDepth ) );
    if ( !node.ChildLeft().IsTerminal() ) {
      AddRandomChildren( node.ChildLeft(), bUseTerminal, bUseNode, nDepth + 1, nMaxDepth );
    }
    node.AddRight( CreateChild( nt, bUseTerminal, bUseNode, nDepth, nMaxDepth ) );
    if ( !node.ChildRight().IsTerminal() ) {
      AddRandomChildren( node.ChildRight(), bUseTerminal, bUseNode, nDepth + 1, nMaxDepth );
    }
    break;
  }
}
nsresult
txStylesheet::init()
{
    mRootFrame = new ImportFrame;
    NS_ENSURE_TRUE(mRootFrame, NS_ERROR_OUT_OF_MEMORY);
    
    // Create default templates
    // element/root template
    mContainerTemplate = new txPushParams;
    NS_ENSURE_TRUE(mContainerTemplate, NS_ERROR_OUT_OF_MEMORY);

    nsAutoPtr<txNodeTest> nt(new txNodeTypeTest(txNodeTypeTest::NODE_TYPE));
    NS_ENSURE_TRUE(nt, NS_ERROR_OUT_OF_MEMORY);

    nsAutoPtr<Expr> nodeExpr(new LocationStep(nt, LocationStep::CHILD_AXIS));
    NS_ENSURE_TRUE(nodeExpr, NS_ERROR_OUT_OF_MEMORY);

    nt.forget();

    txPushNewContext* pushContext = new txPushNewContext(nodeExpr);
    mContainerTemplate->mNext = pushContext;
    NS_ENSURE_TRUE(pushContext, NS_ERROR_OUT_OF_MEMORY);

    txApplyDefaultElementTemplate* applyTemplates =
        new txApplyDefaultElementTemplate;
    pushContext->mNext = applyTemplates;
    NS_ENSURE_TRUE(applyTemplates, NS_ERROR_OUT_OF_MEMORY);

    txLoopNodeSet* loopNodeSet = new txLoopNodeSet(applyTemplates);
    applyTemplates->mNext = loopNodeSet;
    NS_ENSURE_TRUE(loopNodeSet, NS_ERROR_OUT_OF_MEMORY);

    txPopParams* popParams = new txPopParams;
    pushContext->mBailTarget = loopNodeSet->mNext = popParams;
    NS_ENSURE_TRUE(popParams, NS_ERROR_OUT_OF_MEMORY);

    popParams->mNext = new txReturn();
    NS_ENSURE_TRUE(popParams->mNext, NS_ERROR_OUT_OF_MEMORY);

    // attribute/textnode template
    nt = new txNodeTypeTest(txNodeTypeTest::NODE_TYPE);
    NS_ENSURE_TRUE(nt, NS_ERROR_OUT_OF_MEMORY);

    nodeExpr = new LocationStep(nt, LocationStep::SELF_AXIS);
    NS_ENSURE_TRUE(nodeExpr, NS_ERROR_OUT_OF_MEMORY);

    nt.forget();

    mCharactersTemplate = new txValueOf(nodeExpr, false);
    NS_ENSURE_TRUE(mCharactersTemplate, NS_ERROR_OUT_OF_MEMORY);

    mCharactersTemplate->mNext = new txReturn();
    NS_ENSURE_TRUE(mCharactersTemplate->mNext, NS_ERROR_OUT_OF_MEMORY);

    // pi/comment/namespace template
    mEmptyTemplate = new txReturn();
    NS_ENSURE_TRUE(mEmptyTemplate, NS_ERROR_OUT_OF_MEMORY);

    return NS_OK;
}
Example #3
0
void tool_app_t::static_compile()
{
	netlist_tool_t nt(*this, "netlist");

	nt.init();

	nt.log().verbose.set_enabled(false);
	nt.log().info.set_enabled(false);

	nt.read_netlist(opt_file(), opt_name(),
			opt_logs(),
			m_options, opt_rfolders());

	// no reset needed ...

	plib::putf8_writer w(&pout_strm);
	std::map<pstring, pstring> mp;

	nt.solver()->create_solver_code(mp);

	for (auto &e : mp)
	{
		w.write(e.second);
	}

	nt.stop();

}
Example #4
0
//=============================================================================
// Book cluster tuple
//=============================================================================
void TbTupleWriter::bookClusters() {

  NTupleFilePtr file1(ntupleSvc(), "/NTUPLES/FILE1");
  NTuplePtr nt(ntupleSvc(), "/NTUPLES/FILE1/TbTupleWriter/Clusters");
  // Check if already booked.
  if (nt) return;
  nt = ntupleSvc()->book("/NTUPLES/FILE1/TbTupleWriter/Clusters",
                         CLID_ColumnWiseTuple, "nTuple of Clusters");
  nt->addItem("clID", m_clID);
  nt->addItem("clGx", m_clGx);
  nt->addItem("clGy", m_clGy);
  nt->addItem("clGz", m_clGz);
  nt->addItem("clLx", m_clLx);
  nt->addItem("clLy", m_clLy);
  nt->addItem("clTime", m_clTime);
  nt->addItem("clHTime", m_clHTime);
  nt->addItem("clSize", m_clSize);
  nt->addItem("clCharge", m_clCharge);
  nt->addItem("clIsTracked", m_clTracked);
  nt->addItem("clPlane", m_clPlane);
  nt->addItem("clEvtNo", m_clEvtNo);
  nt->addItem("clNHits", m_clN, 0, (int)m_maxclustersize);
  nt->addIndexedItem("hRow", m_clN, m_clhRow);
  nt->addIndexedItem("hCol", m_clN, m_clhCol);
  nt->addIndexedItem("sCol", m_clN, m_clsCol);
  nt->addIndexedItem("hHTime", m_clN, m_clhHTime);
  nt->addIndexedItem("hToT", m_clN, m_clhToT);
}
solver::result smt2_output_wrapper::check() {
  set_name_transformer nt(d_tm);

  d_output << "(check-sat)" << std::endl;

  return d_solver->check();
}
smt2_output_wrapper::smt2_output_wrapper(expr::term_manager& tm, const options& opts, utils::statistics& stats, solver* solver, std::string filename)
: smt::solver("smt2_wrapper[" + filename + "]", tm, opts, stats)
, d_solver(solver)
, d_output(filename.c_str())
, d_total_assertions_count(0)
{
  set_name_transformer nt(d_tm);

  // Setup the stream
  output::set_output_language(d_output, output::MCMT);
  output::set_term_manager(d_output, &d_tm);

  // Models by default
  d_output << "(set-option :produce-models true)" << std::endl;

  // Unsat cores if supported
  if (solver->supports(solver::UNSAT_CORE)) {
    d_output << "(set-option :produce-unsat-cores true)" << std::endl;
  }

  // Interpolation if supported
  if (solver->supports(solver::INTERPOLATION)) {
    d_output << "(set-option :produce-interpolants true)" << std::endl;
  }

}
void smt2_output_wrapper::add(expr::term_ref f, formula_class f_class) {
  set_name_transformer nt(d_tm);

  assertion a(d_total_assertions_count ++, f, f_class);
  d_assertions.push_back(a);

  bool needs_annotation = d_solver->supports(solver::UNSAT_CORE) || d_solver->supports(solver::INTERPOLATION);

  d_output << "(assert ";
  if (needs_annotation) {
    d_output << "(! ";
  }
  d_output << f;
  if (d_solver->supports(solver::UNSAT_CORE)) {
    d_output << " :named a" << a.index;
  }
  if (d_solver->supports(solver::INTERPOLATION)) {
    if (a.f_class == CLASS_B) {
      d_output << " :interpolation-group B";
    } else {
      d_output << " :interpolation-group A";
    }
  }
  if (needs_annotation) {
    d_output << ")";
  }
  d_output << ")" << std::endl;

  d_solver->add(f, f_class);
}
Example #8
0
//=============================================================================
// Book track tuple
//=============================================================================
void TbTupleWriter::bookTracks() {

  NTupleFilePtr file1(ntupleSvc(), "/NTUPLES/FILE1");
  NTuplePtr nt(ntupleSvc(), "/NTUPLES/FILE1/TbTupleWriter/Tracks");
  // Check if already booked.
  if (nt) return;
  nt = ntupleSvc()->book("/NTUPLES/FILE1/TbTupleWriter/Tracks",
                         CLID_ColumnWiseTuple, "nTuple of Tracks");
  nt->addItem("TkID", m_TkID);
  nt->addItem("TkTime", m_TkTime);
  nt->addItem("TkHTime", m_TkHTime);
  nt->addItem("TkNCl", m_TkNCl, 0, 10);
  nt->addItem("TkX", m_TkX0);
  nt->addItem("TkY", m_TkY0);
  nt->addItem("TkTx", m_TkTx);
  nt->addItem("TkTy", m_TkTy);
  nt->addItem("TkChi2PerNdof", m_TkChi2ndof);
  nt->addIndexedItem("TkClId", m_TkNCl, m_TkClId);
  nt->addItem("TkEvt",m_TkEvt);
  nt->addItem("TkNTg",m_TkNTg,0,(int)m_maxTriggers);
  nt->addIndexedItem("TkTgId",m_TkNTg,m_TkTgId);
  nt->addIndexedItem("TkTgPlane",m_TkNTg,m_TkTgPlane);
  nt->addIndexedItem("TkXResidual",m_TkNCl, m_TkXResidual); 
  nt->addIndexedItem("TkYResidual",m_TkNCl, m_TkYResidual); 

}
void smt2_output_wrapper::add_variable(expr::term_ref var, variable_class f_class) {
  set_name_transformer nt(d_tm);

  d_output << "(declare-fun " << var << " () " << d_tm.type_of(var) << ")" << std::endl;
  solver::add_variable(var, f_class);
  d_solver->add_variable(var, f_class);
}
void Try(int a)
{
 if (d>2)
 {
  if (a==0)
  {
   if (kt(b[0]+b[1])==0 && kt(b[1]+b[2])==0)
   {
    for (int i=0;i<=2;i++) cout<<b[i]<<"+";
    cout<<endl;
    l[m++]=b[0]+b[1];
    l[m++]=b[1]+b[2];
   }
  }
 }
 else
 {
  for (int i=2;i<=a;i++)
   if (nt(i)==1)
   {
    b[d]=i;
    d++;
    Try(a-i);
    d--;
   }
 }
}
Example #11
0
void CppTree2Uml::parseTemplateDeclaration(TemplateDeclarationAST* ast)
{
    TemplateParameterListAST* parmListAST = ast->templateParameterList();
    if (parmListAST == NULL)
        return;
    QList<TemplateParameterAST*> parmList = parmListAST->templateParameterList();
    for (int i = 0; i < parmList.size(); ++i) {
        // The template is either a typeParameter or a typeValueParameter.
        TemplateParameterAST* tmplParmNode = parmList.at(i);
        TypeParameterAST* typeParmNode = tmplParmNode->typeParameter();
        if (typeParmNode) {
            NameAST* nameNode = typeParmNode->name();
            if (nameNode) {
                QString typeName = nameNode->unqualifiedName()->text();
                Model_Utils::NameAndType nt(typeName, NULL);
                m_templateParams.append(nt);
            } else {
                uError() << "nameNode is NULL";
            }
        }

        ParameterDeclarationAST* valueNode = tmplParmNode->typeValueParameter();
        if (valueNode) {
            TypeSpecifierAST* typeSpec = valueNode->typeSpec();
            if (typeSpec == NULL) {
                uError() << "typeSpec is NULL";
                continue;
            }
            QString typeName = typeSpec->name()->text();
            UMLObject *t = Import_Utils::createUMLObject(UMLObject::ot_UMLObject, typeName,
                                                          m_currentNamespace[m_nsCnt]);
            DeclaratorAST* declNode = valueNode->declarator();
            NameAST* nameNode = declNode->declaratorId();
            if (nameNode == NULL) {
                uError() << "CppTree2Uml::parseTemplateDeclaration(value):"
                         << " nameNode is NULL";
                continue;
            }
            QString paramName = nameNode->unqualifiedName()->text();
            Model_Utils::NameAndType nt(paramName, t);
            m_templateParams.append(nt);
        }
    }

    if (ast->declaration())
        TreeParser::parseDeclaration(ast->declaration());
}
void smt2_output_wrapper::push() {
  set_name_transformer nt(d_tm);

  d_output << "(push 1)" << std::endl;
  d_solver->push();

  d_assertions_size.push_back(d_assertions.size());
}
Example #13
0
std::ostream& FOBDD::put(std::ostream& output) const {
	output << print(_kernel);
	pushtab();
	output << "" <<nt();
	output << "FALSE BRANCH:";
	pushtab();
	output << "" <<nt();
	output << print(_falsebranch);
	poptab();
	output << "" <<nt();
	output << "TRUE BRANCH:";
	pushtab();
	output << "" <<nt();
	output << print(_truebranch);
	poptab();
	poptab();
	return output;
}
Example #14
0
 void dfs(vector< vector<Node> > & vv, vector<Node>& v, int n, int x) {
     if(x >= n - 1 ) {
         for(int i = 0; i < n; i++) {
             if( isValid(v, x, i) ) {
                 vector<Node> vt(v);
                 Node nt(x, i);
                 vt.push_back(nt);
                 vv.push_back(vt);
             }
         }
         return ;
     }
     for(int i = 0; i < n; i++) {
         if( isValid(v, x, i) ) {
             Node nt(x, i);
             v.push_back(nt);
             dfs(vv, v, n, x + 1);
             v.pop_back();
         }
     }
 }
void smt2_output_wrapper::pop() {
  set_name_transformer nt(d_tm);

  d_output << "(pop 1)" << std::endl;
  d_solver->pop();

  size_t size = d_assertions_size.back();
  d_assertions_size.pop_back();
  while (d_assertions.size() > size) {
    d_assertions.pop_back();
  }
}
void Templates::on_pushButton_New_clicked()
{
    newTemplate nt(this);

    nt.setTemplates(temp);
    if (nt.exec() == QDialog::Accepted)
    {
        temp = nt.getTemplates();
        tempOriginal << temp.back();
        setTemplate(temp.back());
        ui->pushButton_Delete->setEnabled(ui->comboBoxNew->count() != 0);
        ui->pushButton_Save->setEnabled(ui->comboBoxNew->count() != 0);
    }
}
Example #17
0
void tool_app_t::listdevices()
{
	netlist_tool_t nt(*this, "netlist");
	nt.init();

	nt.log().verbose.set_enabled(false);
	nt.log().info.set_enabled(false);
	nt.log().warning.set_enabled(false);

	netlist::factory::list_t &list = nt.setup().factory();

	nt.setup().register_source(plib::make_unique<netlist::source_proc_t>("dummy", &netlist_dummy));
	nt.setup().include("dummy");


	nt.setup().prepare_to_run();

	std::vector<netlist::pool_owned_ptr<netlist::core_device_t>> devs;

	for (auto & f : list)
	{
		pstring out = plib::pfmt("{1:-20} {2}(<id>")(f->classname())(f->name());

		f->macro_actions(nt.setup(), f->name() + "_lc");
		auto d = f->Create(nt.nlstate(), f->name() + "_lc");
		// get the list of terminals ...

		std::vector<pstring> terms(nt.setup().get_terminals_for_device_name(d->name()));

		out += "," + f->param_desc();
		for (const auto &p : plib::psplit(f->param_desc(),",") )
		{
			if (plib::startsWith(p, "+"))
			{
				plib::container::remove(terms, p.substr(1));
			}
		}
		out += ")";
		pout("{}\n", out);
		if (terms.size() > 0)
		{
			pstring t = "";
			for (auto & j : terms)
				t += "," + j;
			pout("\tTerminals: {}\n", t.substr(1));
		}
		devs.emplace_back(std::move(d));
	}
}
Example #18
0
//=============================================================================
// Book trigger tuple
//=============================================================================
void TbTupleWriter::bookTriggers() {

  NTupleFilePtr file1(ntupleSvc(), "/NTUPLES/FILE1");
  NTuplePtr nt(ntupleSvc(), "/NTUPLES/FILE1/TbTupleWriter/Trigger");
  // Check if already booked.
  if (nt) return;
  nt = ntupleSvc()->book("/NTUPLES/FILE1/TbTupleWriter/Trigger",
                         CLID_ColumnWiseTuple, "nTuple of Triggers");
  nt->addItem("TgID", m_TgID);
  nt->addItem("TgTime", m_TgTime);
  nt->addItem("TgHTime", m_TgHTime);
  nt->addItem("TgEvt", m_TgEvt);
  nt->addItem("TgPlane", m_TgPlane);
  nt->addItem("TgCounter",m_TgCounter);
}
Example #19
0
File: main.cpp Project: nyhu/PCPP
int main()
{
    NinjaTrap nt("naze");
    FragTrap ft("filou");
    ScavTrap st("saurien");
    SuperTrap sut("Super Tramp");

    testCommuns(ft, st, nt, sut);
    testNinjaSpecials(nt);
    testScavSpecials(st);
    testFragSpecials(ft);
    testNinjaSpecials(sut);
    testFragSpecials(sut);
    return 0;
}
Example #20
0
static void
test_value_move_ctor ()
{
    rw_info (0, __FILE__, __LINE__, "value move constructor");

#define INTEGER_CONSTANT        256

    std::tuple<int> it1 (INTEGER_CONSTANT);
    test (__LINE__, it1, INTEGER_CONSTANT);
    const int c = std::rand ();
    int i = c;   // move semantics can alter source value
    std::tuple<int> it2 (i);   // temporary source value
    test (__LINE__, it2, c);

    const std::tuple<int> it3 (INTEGER_CONSTANT);
    test (__LINE__, it3, INTEGER_CONSTANT);
    i = c;
    const std::tuple<int> it4 (i);
    test (__LINE__, it4, c);

    std::tuple<const int> ct1 (INTEGER_CONSTANT);
    test (__LINE__, ct1, INTEGER_CONSTANT);
    i = c;
    std::tuple<const int> ct2 (i);
    test (__LINE__, ct2, c);

    // ill-formed for tuples with element types containing references

    std::tuple<std::tuple<int> > nt (it1);
    test (__LINE__, nt, it1);

    std::tuple<long, const char*> pt (123456789L, "string");
    test (__LINE__, pt, 123456789L, (const char*) "string");

    const UserDefined src (c);
    UserDefined tmp (src);
    UserDefined::reset ();
    std::tuple<UserDefined> ut (tmp);
    UserDefined::expect.move_ctor = 1;
    test (__LINE__, ut, src);

    tmp = src;  ++UserDefined::expect.copy_asgn;
    std::tuple<bool, char, int, double, void*, UserDefined>
        bt (true, 'a', INTEGER_CONSTANT, 3.14159, (void*) 0, tmp);
    ++UserDefined::expect.move_ctor;
    test (__LINE__, bt,
          true, 'a', INTEGER_CONSTANT, 3.14159, (void*) 0, src);
}
Example #21
0
NTSequence::NTSequence(const std::string &name, const std::string &description,
		       const std::string &aSeqString,
		       bool sampleAmbiguities)
  throw (ParseException)
  : std::vector<Nucleotide>(aSeqString.length()),
    name_(name),
    description_(description)
{
  for (unsigned i = 0; i < aSeqString.length(); ++i) {
    Nucleotide nt(aSeqString[i]);
    if (sampleAmbiguities)
      nt.sampleAmbiguity();

    (*this)[i] = nt;
  }
}
Example #22
0
void
NtEInfo::
print(jstream& os)
{
    int num=0;
    for(iterator iter=begin(); iter!=end(); iter++)
    {
        string rightPart=iter->first;
        double rcount=iter->second;
        Rule rule;
        rule.left=nt();
        rule.right=rightPart;
        rule.prob=rcount/count();
        rule.print(os);
    }
}
Example #23
0
//=============================================================================
// Book hit tuple
//=============================================================================
void TbTupleWriter::bookHits() {

  NTupleFilePtr file1(ntupleSvc(), "/NTUPLES/FILE1");
  NTuplePtr nt(ntupleSvc(), "/NTUPLES/FILE1/TbTupleWriter/Hits");
  // Check if already booked.
  if (nt) return;
  nt = ntupleSvc()->book("/NTUPLES/FILE1/TbTupleWriter/Hits",
                         CLID_ColumnWiseTuple, "nTuple of Hits");
  nt->addItem("hID", m_hID);
  nt->addItem("hCol", m_hCol);
  nt->addItem("hRow", m_hRow);
  nt->addItem("hTime", m_hTime);
  nt->addItem("hHTime", m_hHTime);
  nt->addItem("hToT", m_hToT);
  nt->addItem("hPlane", m_hPlane);
}
Example #24
0
static void listdevices()
{
	netlist_tool_t nt("netlist");
	nt.init();
	netlist::factory_list_t &list = nt.setup().factory();

	nt.setup().register_source(std::make_shared<netlist::source_proc_t>("dummy", &netlist_dummy));
	nt.setup().include("dummy");

	nt.setup().start_devices();
	nt.setup().resolve_inputs();

	for (auto & f : list)
	{
		pstring out = plib::pfmt("{1} {2}(<id>")(f->classname(),"-20")(f->name());
		pstring terms("");

		auto d = f->Create(nt.setup().netlist(), "dummy");

		// get the list of terminals ...
		for (auto & inp :  d->m_terminals)
		{
			if (inp.startsWith(d->name() + "."))
				inp = inp.substr(d->name().len() + 1);
			terms += "," + inp;
		}

		if (f->param_desc().startsWith("+"))
		{
			out += "," + f->param_desc().substr(1);
			terms = "";
		}
		else if (f->param_desc() == "-")
		{
			/* no params at all */
		}
		else
		{
			out += "," + f->param_desc();
		}
		out += ")";
		printf("%s\n", out.cstr());
		if (terms != "")
			printf("Terminals: %s\n", terms.substr(1).cstr());
	}
}
Example #25
0
static void static_compile(tool_options_t &opts)
{
	netlist_tool_t nt("netlist");

	nt.m_opts = &opts;
	nt.init();

	nt.log().verbose.set_enabled(false);
	nt.log().warning.set_enabled(false);

	nt.read_netlist(opts.opt_file(), opts.opt_name());

	nt.solver()->create_solver_code(pout_strm);

	nt.stop();

}
Example #26
0
void tool_app_t::create_docheader()
{
	netlist_tool_t nt(*this, "netlist");

	nt.init();

	nt.log().verbose.set_enabled(false);
	nt.log().warning.set_enabled(false);

	nt.setup().register_source(plib::make_unique_base<netlist::source_t,
			netlist::source_proc_t>(nt.setup(), "dummy", &netlist_dummy));
	nt.setup().include("dummy");

	std::vector<pstring> devs;
	for (auto &e : nt.setup().factory())
		devs.push_back(e->name());
	std::sort(devs.begin(), devs.end(), [&](pstring &a, pstring &b) { return a < b; });

	pout("// license:GPL-2.0+\n");
	pout("// copyright-holders:Couriersud\n");
	pout("/* ----------------------------------------------------------------------------\n");
	pout(" *  Automatically created file. DO NOT MODIFY.\n");
	pout(" * ---------------------------------------------------------------------------*/\n");
	pout("/*!\n");
	pout(" * \\page devices Devices\n");
	pout(" *\n");
	pout(" * Below is a list of all the devices currently known to the system ...\n");
	pout(" *\n");

	for (auto &s : devs)
		pout(" *         - \\subpage {1}\n", s);

	pout(" *\n");

	for (auto &e : nt.setup().factory())
	{
		pout("//! [{1} csynopsis]\n", e->name());
		cmac(e.get());
		pout("//! [{1} csynopsis]\n", e->name());
		pout("//! [{1} synopsis]\n", e->name());
		mac(e.get());
		pout("//! [{1} synopsis]\n", e->name());
	}
	nt.stop();
}
Example #27
0
int
NetCallback::NodeAssociation(Vector<pnl::CNodeType> *paNodeType,
			     bool isDiscrete, int size, int nodeState)
{
    pnl::CNodeType nt(isDiscrete ? 1:0, size, pnl::EIDNodeState(nodeState));

    for(int i = paNodeType->size(); --i >= 0;)
    {
	if((*paNodeType)[i] == nt)
	{
	    return i;
	}
    }

    paNodeType->push_back(nt);

    return paNodeType->size() - 1;
}
Example #28
0
void tool_app_t::create_header()
{
	netlist_tool_t nt(*this, "netlist");

	nt.init();

	nt.log().verbose.set_enabled(false);
	nt.log().warning.set_enabled(false);

	nt.setup().register_source(plib::make_unique_base<netlist::source_t,
			netlist::source_proc_t>(nt.setup(), "dummy", &netlist_dummy));
	nt.setup().include("dummy");

	pout("// license:GPL-2.0+\n");
	pout("// copyright-holders:Couriersud\n");
	pout("#ifndef NLD_DEVINC_H\n");
	pout("#define NLD_DEVINC_H\n");
	pout("\n");
	pout("#include \"nl_setup.h\"\n");
	pout("#ifndef __PLIB_PREPROCESSOR__\n");
	pout("\n");
	pout("/* ----------------------------------------------------------------------------\n");
	pout(" *  Netlist Macros\n");
	pout(" * ---------------------------------------------------------------------------*/\n");
	pout("\n");

	pstring last_source("");

	for (auto &e : nt.setup().factory())
	{
		if (last_source != e->sourcefile())
		{
			last_source = e->sourcefile();
			pout("{1}\n", pstring("// ").rpad("-", 72));
			pout("{1}{2}\n", pstring("// Source: "), e->sourcefile().replace_all("../", ""));
			pout("{1}\n", pstring("// ").rpad("-", 72));
		}
		cmac(e.get());
	}
	pout("#endif // __PLIB_PREPROCESSOR__\n");
	pout("#endif\n");
	nt.stop();

}
expr::model::ref smt2_output_wrapper::get_model() const {
  set_name_transformer nt(d_tm);

  std::ofstream& out_nonconst = const_cast<smt2_output_wrapper*>(this)->d_output;
  out_nonconst << "(get-value (";
  std::set<expr::term_ref>::const_iterator it;
  bool space = false;
  for (it = d_A_variables.begin(); it != d_A_variables.end(); ++ it, space = true) {
    if (space) { out_nonconst << " "; }
    out_nonconst << *it << std::endl;
  }
  for (it = d_B_variables.begin(); it != d_B_variables.end(); ++ it, space = true) {
    if (space) { out_nonconst << " "; }
    out_nonconst << *it << std::endl;
  }
  out_nonconst << "))" << std::endl;

  return d_solver->get_model();
}
Example #30
0
 void helper(int lastnum, char lastopt, int i, stack<int>& n, stack<char>& opt)
 {
     stack<int> nt(n);
     stack<char> optt(opt);
     int num = num_set[i];
     
     optt.push(lastopt);
     nt.push(lastnum);
     
     if(len-1 == i)
     {
         while(!nt.empty())
         {
             int tmpn = nt.top();
             nt.pop();
             
             char tmpopt = optt.top();
             optt.pop();
             
             num = cal(tmpn,tmpopt,num);
         }
         res.push_back(num);
     }
     else
     {
         helper(num,opt_set[i],i+1,nt,optt);
         
         while(!nt.empty())
         {
             int tmpn = nt.top();
             nt.pop();
             
             char tmpopt = optt.top();
             optt.pop();
             
             num = cal(tmpn,tmpopt,num);
             
             helper(num,opt_set[i],i+1,nt,optt);
         }
     }
     
 }