本文整理汇总了C++中VarMap类的典型用法代码示例。如果您正苦于以下问题:C++ VarMap类的具体用法?C++ VarMap怎么用?C++ VarMap使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了VarMap类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generateOutTuple
bool generateOutTuple(std::vector<std::string> &s, lindaTuple &newTuple,
VarMap &localVars,
FunctSet &userDefinedFuncs, LoopMap &loopSymbols, int threadNum) {
for (std::vector<std::string>::iterator it = s.begin(); it != s.end(); it++) {
if (isExp(*it)) {
int result = evaluateExp(*it, loopSymbols, userDefinedFuncs, localVars, threadNum);
if (result != -1) {
newTuple.push_back(new intObj(result));
} else {
// wait and block
}
} else if (isVarPattern(*it)) {
if (localVars.find(*it) != localVars.end()) {
newTuple.push_back(localVars[*it]);
} else {
std::cout<< "Can not find local var " << *it << std::endl;
return false;
}
}
else if (isString(*it))
newTuple.push_back(new stringObj(*it));
else if (isInt(*it))
newTuple.push_back(new intObj(atoi(it->c_str())));
else if (isDouble(*it))
newTuple.push_back(new doubleObj(atof(it->c_str())));
else {
std::cout << "Parse input error: " << *it << std::endl;
exit(EXIT_FAILURE);
}
}
return true;
}
示例2: run_one_test
Test::Result run_one_test(const std::string&, const VarMap& vars) override
{
Test::Result result("OCB wide block KAT");
const std::vector<uint8_t> key = vars.get_req_bin("Key");
const std::vector<uint8_t> nonce = vars.get_req_bin("Nonce");
const std::vector<uint8_t> ad = vars.get_req_bin("AD");
const std::vector<uint8_t> input = vars.get_req_bin("In");
const std::vector<uint8_t> expected = vars.get_req_bin("Out");
const size_t bs = key.size();
Botan::secure_vector<uint8_t> buf(input.begin(), input.end());
Botan::OCB_Encryption enc(new OCB_Wide_Test_Block_Cipher(bs), std::min<size_t>(bs, 32));
enc.set_key(key);
enc.set_ad(ad);
enc.start(nonce);
enc.finish(buf);
result.test_eq("Ciphertext matches", buf, expected);
Botan::OCB_Decryption dec(new OCB_Wide_Test_Block_Cipher(bs), std::min<size_t>(bs, 32));
dec.set_key(key);
dec.set_ad(ad);
dec.start(nonce);
dec.finish(buf);
result.test_eq("Decryption correct", buf, input);
return result;
}
示例3: walkReplaceBuiltin
ACCExpr *cleanupBool(ACCExpr *expr)
{
if (!expr)
return expr;
inBool++; // can be invoked recursively!
walkReplaceBuiltin(expr);
inBool--;
int varIndex = 0;
VarMap varMap;
DdManager * mgr = Cudd_Init(MAX_NAME_COUNT,0,CUDD_UNIQUE_SLOTS,CUDD_CACHE_SLOTS,0);
varIndex = 0;
varMap.clear();
DdNode *bdd = tree2BDD(mgr, expr, varMap);
char const *inames[MAX_NAME_COUNT];
for (auto item: varMap)
inames[item.second->index] = strdup(item.first.c_str());
char * fform = Cudd_FactoredFormString(mgr, bdd, inames);
Cudd_RecursiveDeref(mgr, bdd);
int err = Cudd_CheckZeroRef(mgr);
if (trace_bool)
printf("%s: expr '%s' val = %s\n", __FUNCTION__, tree2str(expr).c_str(), fform);
assert(err == 0 && "Reference counting");
ACCExpr *ret = str2tree(fform);
free(fform);
Cudd_Quit(mgr);
return ret;
}
示例4: TestSlice2
void TestSlice2(const VarMap& mp){
for(VarMap::const_iterator vmIt = mp.begin(); vmIt != mp.end(); ++vmIt){
std::cerr<<"-------------------------"<<std::endl;
std::cerr<<"Variable: "<<vmIt->first<<std::endl;
std::cerr<<"Slines: {";
for(unsigned int sl : vmIt->second.slines){
std::cerr<<sl<<",";
}
std::cerr<<"}"<<std::endl;
std::cerr<<"dvars: {";
for(std::string dv : vmIt->second.dvars){
std::cerr<<dv<<",";
}
std::cerr<<"}"<<std::endl;
std::cerr<<"is aliase for: {";
for(std::string al : vmIt->second.aliases){
std::cerr<<al<<",";
}
std::cerr<<"}"<<std::endl;
std::cerr<<"cfuntions: {";
for(auto cfunc : vmIt->second.cfunctions){
std::cerr<<cfunc.first<<" "<<cfunc.second<<",";
}
std::cerr<<"}"<<std::endl;
std::cerr<<"-------------------------"<<std::endl;
}
}
示例5: get_var
void get_var(Pu *L, const PuString &name, __pu_value *&v)
{
VarMap *pvarmap = L->varstack.top();
VarMap::Bucket_T *ik = pvarmap->find(name);
if (ik != 0)
{
v = &ik->value;
return;
}
pvarmap = L->varstack.bottom();
ik = pvarmap->find(name);
if (ik != 0)
{
v = &ik->value;
return;
}
if (L->upvalue && L->upvalue != pvarmap)
{
pvarmap = L->upvalue;
ik = pvarmap->find(name);
if (ik != 0)
{
v = &ik->value;
return;
}
}
MAKE_TEMP_VALUE(v);
error(L,7);
}
示例6: createVarSc
AstVarScope* createVarSc(AstVarScope* oldvarscp, string name, int width/*0==fromoldvar*/) {
// Because we've already scoped it, we may need to add both the AstVar and the AstVarScope
if (!oldvarscp->scopep()) oldvarscp->v3fatalSrc("Var unscoped");
AstVar* varp;
AstNodeModule* addmodp = oldvarscp->scopep()->modp();
// We need a new AstVar, but only one for all scopes, to match the new AstVarScope
VarMap::iterator iter = m_modVarMap.find(make_pair(addmodp,name));
if (iter != m_modVarMap.end()) {
// Created module's AstVar earlier under some other scope
varp = iter->second;
} else {
if (width==0) {
varp = new AstVar (oldvarscp->fileline(), AstVarType::BLOCKTEMP, name, oldvarscp->varp());
varp->widthSignedFrom(oldvarscp);
} else { // Used for vset and dimensions, so can zero init
varp = new AstVar (oldvarscp->fileline(), AstVarType::BLOCKTEMP, name, AstBitPacked(), width);
}
addmodp->addStmtp(varp);
m_modVarMap.insert(make_pair(make_pair(addmodp, name), varp));
}
AstVarScope* varscp = new AstVarScope (oldvarscp->fileline(), oldvarscp->scopep(), varp);
oldvarscp->scopep()->addVarp(varscp);
return varscp;
}
示例7: getCID
QString DownloadQueue::getCID(const VarMap &map){
if (map.size() < 1)
return "";
auto it = map.constBegin();
return (it.value()).toString();
}
示例8: insertVarMapIntoDOM
void ClientOptions::insertVarMapIntoDOM(ticpp::Element* parent, const VarMap &vars)
{
for (VarMap::const_iterator it = vars.begin(), end = vars.end(); it != end; ++it)
{
ticpp::Element* var = new ticpp::Element("var");
var->SetAttribute("name", it->first.c_str());
var->SetAttribute("value", it->second.c_str());
parent->LinkEndChild( var );
}
}
示例9:
//=================================================================================
/*virtual*/ Node::ValueStringError BoundedPointListNode::SetValueFromString( const std::string& valueString )
{
VarMap varMap;
if( !ConvertValueStringToVarMap( valueString, varMap ) )
return VSE_SYNTAX;
Bounds trialBounds = bounds;
if( varMap.end() != varMap.find( "xMin" ) )
trialBounds.min.set_e1( varMap[ "xMin" ] );
if( varMap.end() != varMap.find( "xMax" ) )
trialBounds.max.set_e1( varMap[ "xMax" ] );
if( varMap.end() != varMap.find( "yMin" ) )
trialBounds.min.set_e2( varMap[ "yMin" ] );
if( varMap.end() != varMap.find( "yMax" ) )
trialBounds.max.set_e2( varMap[ "yMax" ] );
if( trialBounds == bounds )
return VSE_NO_CHANGE;
if( !trialBounds.IsValid() )
return VSE_INVALID;
if( !SetBounds( trialBounds ) )
return VSE_INVALID;
return VSE_NONE;
}
示例10: int
//=================================================================================
/*virtual*/ Node::ValueStringError BoundedIntegerNode::SetValueFromString( const std::string& valueString )
{
VarMap varMap;
if( !ConvertValueStringToVarMap( valueString, varMap ) )
return VSE_SYNTAX;
Data trialData = data;
if( varMap.end() != varMap.find( "min" ) )
trialData.min = int( varMap[ "min" ] );
if( varMap.end() != varMap.find( "max" ) )
trialData.max = int( varMap[ "max" ] );
if( varMap.end() != varMap.find( "value" ) )
trialData.value = int( varMap[ "value" ] );
if( varMap.end() != varMap.find( "multiple" ) )
trialData.multiple = int( varMap[ "multiple" ] );
if( !trialData.IsValid() )
return VSE_INVALID;
if( trialData == data )
return VSE_NO_CHANGE;
data = trialData;
return VSE_NONE;
}
示例11: run_one_test
Test::Result run_one_test(const std::string&, const VarMap& vars) override
{
const std::vector<uint8_t> record = vars.get_req_bin("Record");
const size_t output = vars.get_req_sz("Output");
uint16_t res = Botan::TLS::check_tls_cbc_padding(record.data(), record.size());
Test::Result result("TLS CBC padding check");
result.test_eq("Expected", res, output);
return result;
}
示例12: result
Test::Result
PK_Signature_Generation_Test::run_one_test(const std::string&, const VarMap& vars)
{
const std::vector<uint8_t> message = get_req_bin(vars, "Msg");
const std::vector<uint8_t> signature = get_req_bin(vars, "Signature");
const std::string padding = get_opt_str(vars, "Padding", default_padding(vars));
std::unique_ptr<Botan::RandomNumberGenerator> rng;
if(vars.count("Nonce"))
{
rng.reset(new Fixed_Output_RNG(get_req_bin(vars, "Nonce")));
}
Test::Result result(algo_name() + "/" + padding + " signature generation");
std::unique_ptr<Botan::Private_Key> privkey = load_private_key(vars);
std::unique_ptr<Botan::Public_Key> pubkey(Botan::X509::load_key(Botan::X509::BER_encode(*privkey)));
Botan::PK_Signer signer(*privkey, padding);
Botan::PK_Verifier verifier(*pubkey, padding);
const std::vector<uint8_t> generated_signature = signer.sign_message(message, rng ? *rng : Test::rng());
result.test_eq("generated signature matches KAT", generated_signature, signature);
result.test_eq("generated signature valid", verifier.verify_message(message, generated_signature), true);
check_invalid_signatures(result, verifier, message, signature);
result.test_eq("correct signature valid", verifier.verify_message(message, signature), true);
return result;
}
示例13:
//=================================================================================
/*static*/ bool Node::ConvertValueStringFromVarMap( std::string& valueString, const VarMap& varMap )
{
valueString = "";
for( VarMap::const_iterator iter = varMap.begin(); iter != varMap.end(); iter++ )
{
std::string key = iter->first;
double numericalValue = iter->second;
std::ostringstream stream;
stream << numericalValue;
std::string value = stream.str();
if( !valueString.empty() )
valueString += ", ";
valueString += key + "=" + value;
}
return true;
}
示例14: visit
virtual void visit(AstVarRef* nodep, AstNUser*) {
if (nodep->lvalue() && !nodep->user2()) {
nodep->user2(true); // mark this ref as visited
AstVar* key = nodep->varp();
VarMap::iterator it = m_lhsmapp->find(key);
if (it == m_lhsmapp->end()) {
// this key does not exist yet, so create it
RefVec* refs = new RefVec();
refs->push_back(nodep);
m_lhsmapp->insert(pair<AstVar*, RefVec*>(key, refs));
} else {
(*it).second->push_back(nodep);
}
nodep->user3p(m_sel); // attach the sel to this varref
}
nodep->iterateChildren(*this);
}
示例15:
static __pu_value *get_varref(Pu *L, PuString &name)
{
VarMap *pvarmap = L->varstack.top();
VarMap::Bucket_T *ik = pvarmap->find(name);
if (ik != 0)
{
return &(ik->value);
}
pvarmap = L->varstack.bottom();
ik = pvarmap->find(name);
if (ik != 0)
{
return &(ik->value);
}
return NULL;
}