本文整理汇总了C++中ValuePtr类的典型用法代码示例。如果您正苦于以下问题:C++ ValuePtr类的具体用法?C++ ValuePtr怎么用?C++ ValuePtr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ValuePtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pushScalarProperties
void ModuleMerger::pushScalarProperties(Item::PropertyMap *dst, Item *srcItem)
{
Item *origSrcItem = srcItem;
do {
if (!m_seenInstancesTopDown.contains(srcItem)) {
m_seenInstancesTopDown.insert(srcItem);
for (auto it = srcItem->properties().constBegin();
it != srcItem->properties().constEnd(); ++it) {
const ValuePtr &srcVal = it.value();
if (srcVal->type() != Value::JSSourceValueType)
continue;
const PropertyDeclaration srcDecl = srcItem->propertyDeclaration(it.key());
if (!srcDecl.isValid() || !srcDecl.isScalar())
continue;
ValuePtr &v = (*dst)[it.key()];
if (v)
continue;
ValuePtr clonedVal = srcVal->clone();
m_decls[clonedVal] = srcDecl;
clonedVal->setDefiningItem(origSrcItem);
v = clonedVal;
}
}
srcItem = srcItem->prototype();
} while (srcItem && srcItem->isModuleInstance());
}
示例2: insertProperties
void ModuleMerger::insertProperties(Item::PropertyMap *dst, Item *srcItem, PropertiesType type)
{
QSet<const Item *> &seenInstances
= type == ScalarProperties ? m_seenInstancesTopDown : m_seenInstancesBottomUp;
Item *origSrcItem = srcItem;
do {
if (!seenInstances.contains(srcItem)) {
seenInstances.insert(srcItem);
for (Item::PropertyMap::const_iterator it = srcItem->properties().constBegin();
it != srcItem->properties().constEnd(); ++it) {
const ValuePtr &srcVal = it.value();
if (srcVal->type() != Value::JSSourceValueType)
continue;
const PropertyDeclaration srcDecl = srcItem->propertyDeclaration(it.key());
if (!srcDecl.isValid() || srcDecl.isScalar() != (type == ScalarProperties))
continue;
ValuePtr &v = (*dst)[it.key()];
if (v && type == ScalarProperties)
continue;
ValuePtr clonedVal = srcVal->clone();
m_decls[clonedVal] = srcDecl;
clonedVal->setDefiningItem(origSrcItem);
if (v) {
QBS_CHECK(!clonedVal->next());
clonedVal->setNext(v);
}
v = clonedVal;
}
}
srcItem = srcItem->prototype();
} while (srcItem && srcItem->type() == ItemType::ModuleInstance);
}
示例3: sCdr
ValuePtr
sCdr(EnvPtr env, ValuePtr args)
{
CHECK("Number of arguments", sLength(args) == 1);
CHECK("Argument is pair", args->car()->isPair());
return args->car()->cdr();
}
示例4: evalIf
ValuePtr
evalIf(EnvPtr env, ValuePtr statement)
{
int length = sLength(statement);
if(length == 3) {
if(sEqP(eval(env, statement->cdr()->car()), rsFalse()) == false) {
return eval(env, statement->cdr()->cdr()->car());
}
else {
return rsUndefined();
}
}
else if(length == 4) {
if(sEqP(eval(env, statement->cdr()->car()), rsFalse()) == false) {
return eval(env, statement->cdr()->cdr()->car());
}
else {
return eval(env, statement->cdr()->cdr()->cdr()->car());
}
}
else {
CHECK_FAIL("Wrong number of arguments to if");
return rsUndefined();
}
}
示例5: libraryEnvironment
void
TestEval::eval_apply()
{
EnvPtr env = libraryEnvironment();
ValuePtr result = eval(env, "(list? '(foo bar baz))");
CHECK("Result is boolean", result->isBool() && result->vBool());
}
示例6: print_exists
void DisassemblerContext::print_exists(const ValuePtr<Exists>& term, bool bracket) {
if (bracket)
*m_output << '(';
*m_output << "exists (";
unsigned n_parameters = term->parameter_types().size();
unsigned parameter_name_base = m_parameter_name_index;
m_parameter_name_index += n_parameters;
boost::format name_formatter("%%%s");
m_parameter_names.push_back(ParameterNameList::value_type());
ParameterNameList::value_type& name_list = m_parameter_names.back();
for (unsigned ii = 0; ii != n_parameters; ++ii) {
if (ii)
*m_output << ", ";
std::string name = str(name_formatter % (parameter_name_base + ii));
*m_output << name << " : ";
print_term(term->parameter_types()[ii], false);
name_list.push_back(name);
}
*m_output << ") > ";
print_term(term->result(), true);
m_parameter_names.pop_back();
m_parameter_name_index = parameter_name_base;
if (bracket)
*m_output << ')';
}
示例7: lastInNextChain
ValuePtr ModuleMerger::lastInNextChain(const ValuePtr &v)
{
ValuePtr n = v;
while (n->next())
n = n->next();
return n;
}
示例8: encodeProperties
void ObjectImpl::encodeProperties(qpid::framing::Buffer& buffer) const
{
int propCount = objectClass->getPropertyCount();
uint8_t bit = 0;
uint8_t mask = 0;
ValuePtr value;
for (int idx = 0; idx < propCount; idx++) {
const SchemaProperty* prop = objectClass->getProperty(idx);
if (prop->isOptional()) {
value = properties[prop->getName()];
if (bit == 0)
bit = 1;
if (!value->isNull())
mask |= bit;
if (bit == 0x80) {
buffer.putOctet(mask);
bit = 0;
mask = 0;
} else
bit = bit << 1;
}
}
if (bit != 0) {
buffer.putOctet(mask);
}
for (int idx = 0; idx < propCount; idx++) {
const SchemaProperty* prop = objectClass->getProperty(idx);
value = properties[prop->getName()];
if (!prop->isOptional() || !value->isNull()) {
value->impl->encode(buffer);
}
}
}
示例9: apply
ValuePtr
apply(EnvPtr env, ValuePtr procedure, ValuePtr args)
{
if(procedure->type() == Value::NATIVE_PROCEDURE) {
NativeProcedureValue* proc = static_cast<NativeProcedureValue*>(procedure.mValue);
return (*proc->mProc)(env, args);
}
else if(procedure->type() == Value::PROCEDURE) {
EnvPtr callEnvironment = new Environment;
ProcedureValue* proc = static_cast<ProcedureValue*>(procedure.mValue);
callEnvironment->parent = proc->environment;
int iParam = 0;
while(args->isNull() == false) {
if(iParam == static_cast<int>(proc->paramList.size())) {
CHECK_FAIL("Too many arguments to procedure");
}
callEnvironment->values[proc->paramList[iParam]] = args->car();
iParam++;
args = args->cdr();
}
if(iParam != static_cast<int>(proc->paramList.size())) {
CHECK_FAIL("Too few arguments to procedure");
}
return evalSequence(callEnvironment, proc->body);
}
else {
sWrite(env, new PairValue(procedure, new PairValue()));
CHECK_FAIL("Wrong type of argument to apply: not procedure");
return NULL;
}
}
示例10: LogicError
void PackedValue::Unpack() const
{
if (m_packedDataLayout && (m_packedDataLayout->GetNumTimeSteps() != 1) && (m_packedDataLayout->GetNumSequences() != 1) && Internal::IsAutomaticUnpackingOfPackedValuesDisabled())
LogicError("PackedValue::Unpack: Automatic unpacking of PackedValue objects is disabled");
if (m_isPacked)
{
ValuePtr valueObject;
auto dataType = m_packedData->GetDataType();
switch (dataType)
{
case DataType::Float:
valueObject = CompositeFunction::GetValueObjectFromCNTKImplMatrixAndMBLayout(m_sampleShape, *(m_packedData->GetMatrix<float>()), m_packedDataLayout, m_isReadOnly);
break;
case DataType::Double:
valueObject = CompositeFunction::GetValueObjectFromCNTKImplMatrixAndMBLayout(m_sampleShape, *(m_packedData->GetMatrix<double>()), m_packedDataLayout, m_isReadOnly);
break;
default:
LogicError("Unsupported DataType %s", DataTypeName(dataType));
}
m_data = valueObject->Data();
m_mask = valueObject->Mask();
m_packedData = nullptr;
m_packedDataLayout = nullptr;
m_isPacked = false;
if (m_unpackedShape != m_data->Shape())
LogicError("The computed unpacked shape of the PackedValue object does not match the actual Data NDArrayView's shape after unpacking");
}
}
示例11: sListP
bool
sListP(ValuePtr data)
{
while(data->isPair() && !data->isNull())
data = data->cdr();
return data->isNull();
}
示例12: RunEvaluationOneHidden
void RunEvaluationOneHidden(FunctionPtr evalFunc, const DeviceDescriptor& device)
{
const std::wstring inputNodeName = L"features";
const std::wstring outputNodeName = L"out.z_output";
Variable inputVar;
if (!GetInputVariableByName(evalFunc, inputNodeName, inputVar))
{
fprintf(stderr, "Input variable %S is not available.\n", inputNodeName.c_str());
throw("Input variable not found error.");
}
Variable outputVar;
if (!GetOutputVaraiableByName(evalFunc, outputNodeName, outputVar))
{
fprintf(stderr, "Output variable %S is not available.\n", outputNodeName.c_str());
throw("Output variable not found error.");
}
// Evaluate the network in several runs
size_t iterationCount = 4;
size_t numSamples = 3;
for (size_t t = 0; t < iterationCount; ++t)
{
std::vector<float> inputData(inputVar.Shape().TotalSize() * numSamples);
for (size_t i = 0; i < inputData.size(); ++i)
{
inputData[i] = static_cast<float>(i % 255);
}
NDShape inputShape = inputVar.Shape().AppendShape({1, numSamples});
ValuePtr inputValue = MakeSharedObject<Value>(MakeSharedObject<NDArrayView>(inputShape, inputData, true));
ValuePtr outputValue;
std::unordered_map<Variable, ValuePtr> outputs = {{outputVar, outputValue}};
evalFunc->Forward({{inputVar, inputValue}}, outputs, device);
outputValue = outputs[outputVar];
NDShape outputShape = outputVar.Shape().AppendShape({1, numSamples});
std::vector<float> outputData(outputShape.TotalSize());
NDArrayViewPtr cpuArrayOutput = MakeSharedObject<NDArrayView>(outputShape, outputData, false);
cpuArrayOutput->CopyFrom(*outputValue->Data());
assert(outputData.size() == outputVar.Shape()[0] * numSamples);
fprintf(stderr, "Evaluation result:\n");
size_t dataIndex = 0;
auto outputDim = outputVar.Shape()[0];
for (size_t i = 0; i < numSamples; i++)
{
fprintf(stderr, "Iteration:%lu, Sample %lu:\n", t, i);
fprintf(stderr, "Ouput:");
for (size_t j = 0; j < outputDim; j++)
{
fprintf(stderr, "%f ", outputData[dataIndex++]);
}
fprintf(stderr, "\n");
}
}
}
示例13: CheckValue
void CheckValue(const ValuePtr testValue, const size_t dimension, const vector<vector<size_t>>& expectedData, const vector<size_t>& seqLenList, const vector<bool>& seqStartFlags = {})
{
// Check parameters
BOOST_TEST(expectedData.size() == seqLenList.size(), "Parameter error: the sequence number in the exepected data and sequence list does not match.");
for (size_t i = 0; i < expectedData.size(); i++)
{
if (expectedData[i].size() != seqLenList[i])
{
ReportFailure("Parameter erroe: the number of data for sequence %" PRIu64 " in the expected data does not match. Expected: %" PRIu64 ", actual: %" PRIu64 ".",
i, seqLenList[i], expectedData[i].size());
}
}
// Check shape
NDShape shape = testValue->Shape();
size_t valueRank = shape.Rank();
if (valueRank < 2 || valueRank > 3 || shape[0] != dimension)
{
ReportFailure("The shape of the value does not match\n");
}
size_t numOfSequences = valueRank == 2 ? 1 : shape[2];
if (numOfSequences != expectedData.size())
{
ReportFailure("The sequence number in the Value does not match. Expected: %" PRIu64 ", actual: %" PRIu64 ".", expectedData.size(), numOfSequences);
}
CheckMask(testValue, seqLenList, seqStartFlags);
// Get data from Value
vector<ElementType> outputData(shape.TotalSize());
NDArrayViewPtr arrayOutput = MakeSharedObject<NDArrayView>(shape, outputData, false);
arrayOutput->CopyFrom(*testValue->Data());
size_t maxSeqLen = *max_element(seqLenList.begin(), seqLenList.end());
size_t oIndex = 0;
for (size_t seq = 0; seq < seqLenList.size(); seq++)
{
size_t seqLen = seqLenList[seq];
for (size_t sample = 0; sample < seqLen; sample++)
{
for (size_t c = 0; c < dimension; c++, oIndex++)
{
if (outputData[oIndex] != 0)
{
if (outputData[oIndex] != 1)
{
ReportFailure("OneHot vector contains value other than 0 and 1 at seqNo=%" PRIu64 " sampleNo=%" PRIu64 " position=%" PRIu64 "\n", seq, sample, c);
}
if (c != expectedData[seq][sample])
{
ReportFailure("OneHot Index does match at seqNo=%" PRIu64 ", sampleNo=%" PRIu64 ", expected: %" PRIu64 ", actual: %" PRIu64 "\n", seq, sample, expectedData[seq][sample], c);
}
}
}
}
// Skip mask data
oIndex += (maxSeqLen - seqLen) * dimension;
}
}
示例14: copy
ValuePtr Dict::copy(bool deep) const {
ValuePtr c = new Dict;
for (unsigned i = 0; i < size(); i++)
c->insert(keyAt(i), deep ? get(i)->copy(true) : get(i));
return c;
}
示例15: sPureInteger
bool
sPureInteger(ValuePtr args)
{
while(args->isNull() == false) {
if(!(args->car()->isNumber() && args->car()->isExact())) return false;
args = args->cdr();
}
return true;
}