本文整理汇总了C++中ctx函数的典型用法代码示例。如果您正苦于以下问题:C++ ctx函数的具体用法?C++ ctx怎么用?C++ ctx使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ctx函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ctx
vec3 TreeNode::getGlobalPosition(const vec3& rootPoint) {
Context ctx(rootPoint);
getContextForNode(ctx);
return ctx.getCurrentOrigin();
}
开发者ID:stephentu,项目名称:cs184-ikrobot,代码行数:5,代码来源:tree.cpp
示例2: apply
// returns true on success, false on failure
bool apply(const BSONObj& op) {
Client::Context ctx( _cappedNs );
// in an annoying twist of api, returns true on failure
return !applyOperation_inlock(op, true);
}
开发者ID:mikestowe,项目名称:mongo,代码行数:6,代码来源:replsettests.cpp
示例3: ctx
bool Helpers::getLast(const char *ns, BSONObj& result) {
Client::Context ctx(ns);
auto_ptr<Runner> runner(InternalPlanner::collectionScan(ns, InternalPlanner::BACKWARD));
Runner::RunnerState state = runner->getNext(&result, NULL);
return Runner::RUNNER_ADVANCED == state;
}
开发者ID:DanilSerd,项目名称:mongo,代码行数:6,代码来源:dbhelpers.cpp
示例4: BSON
/*
* Runs the command object cmdobj on the db with name dbname and puts result in result.
* @param dbname, name of db
* @param cmdobj, object that contains entire command
* @param options
* @param errmsg, reference to error message
* @param result, reference to builder for result
* @param fromRepl
* @return true if successful, false otherwise
*/
bool FTSCommand::_run(OperationContext* txn,
const string& dbname,
BSONObj& cmdObj,
int cmdOptions,
const string& ns,
const string& searchString,
string language, // "" for not-set
int limit,
BSONObj& filter,
BSONObj& projection,
string& errmsg,
BSONObjBuilder& result ) {
Timer comm;
// Rewrite the cmd as a normal query.
BSONObjBuilder queryBob;
queryBob.appendElements(filter);
BSONObjBuilder textBob;
textBob.append("$search", searchString);
if (!language.empty()) {
textBob.append("$language", language);
}
queryBob.append("$text", textBob.obj());
// This is the query we exec.
BSONObj queryObj = queryBob.obj();
// We sort by the score.
BSONObj sortSpec = BSON("$s" << BSON("$meta" << LiteParsedQuery::metaTextScore));
// We also project the score into the document and strip it out later during the reformatting
// of the results.
BSONObjBuilder projBob;
projBob.appendElements(projection);
projBob.appendElements(sortSpec);
BSONObj projObj = projBob.obj();
Client::ReadContext ctx(txn, ns);
CanonicalQuery* cq;
Status canonicalizeStatus =
CanonicalQuery::canonicalize(ns,
queryObj,
sortSpec,
projObj,
0,
limit,
BSONObj(),
&cq,
WhereCallbackReal(txn, StringData(dbname)));
if (!canonicalizeStatus.isOK()) {
errmsg = canonicalizeStatus.reason();
return false;
}
Runner* rawRunner;
Status getRunnerStatus = getRunner(txn, ctx.ctx().db()->getCollection(txn, ns), cq, &rawRunner);
if (!getRunnerStatus.isOK()) {
errmsg = getRunnerStatus.reason();
return false;
}
auto_ptr<Runner> runner(rawRunner);
BSONArrayBuilder resultBuilder(result.subarrayStart("results"));
// Quoth: "leave a mb for other things"
int resultSize = 1024 * 1024;
int numReturned = 0;
BSONObj obj;
while (Runner::RUNNER_ADVANCED == runner->getNext(&obj, NULL)) {
if ((resultSize + obj.objsize()) >= BSONObjMaxUserSize) {
break;
}
// We return an array of results. Add another element.
BSONObjBuilder oneResultBuilder(resultBuilder.subobjStart());
oneResultBuilder.append("score", obj["$s"].number());
// Strip out the score from the returned obj.
BSONObjIterator resIt(obj);
BSONObjBuilder resBob;
while (resIt.more()) {
BSONElement elt = resIt.next();
if (!mongoutils::str::equals("$s", elt.fieldName())) {
resBob.append(elt);
}
//.........这里部分代码省略.........
开发者ID:deepeshtimes,项目名称:mongo,代码行数:101,代码来源:fts_command_mongod.cpp
示例5: appendReplicationInfo
void appendReplicationInfo(OperationContext* txn, BSONObjBuilder& result, int level) {
ReplicationCoordinator* replCoord = getGlobalReplicationCoordinator();
if (replCoord->getSettings().usingReplSets()) {
IsMasterResponse isMasterResponse;
replCoord->fillIsMasterForReplSet(&isMasterResponse);
result.appendElements(isMasterResponse.toBSON());
return;
}
// TODO(dannenberg) replAllDead is bad and should be removed when master slave is removed
if (replAllDead) {
result.append("ismaster", 0);
string s = string("dead: ") + replAllDead;
result.append("info", s);
}
else {
result.appendBool("ismaster",
getGlobalReplicationCoordinator()->isMasterForReportingPurposes());
}
if (level) {
BSONObjBuilder sources( result.subarrayStart( "sources" ) );
int n = 0;
list<BSONObj> src;
{
const char* localSources = "local.sources";
Client::ReadContext ctx(txn, localSources);
auto_ptr<PlanExecutor> exec(
InternalPlanner::collectionScan(txn,
localSources,
ctx.ctx().db()->getCollection(txn,
localSources)));
BSONObj obj;
PlanExecutor::ExecState state;
while (PlanExecutor::ADVANCED == (state = exec->getNext(&obj, NULL))) {
src.push_back(obj);
}
}
for( list<BSONObj>::const_iterator i = src.begin(); i != src.end(); i++ ) {
BSONObj s = *i;
BSONObjBuilder bb;
bb.append( s["host"] );
string sourcename = s["source"].valuestr();
if ( sourcename != "main" )
bb.append( s["source"] );
{
BSONElement e = s["syncedTo"];
BSONObjBuilder t( bb.subobjStart( "syncedTo" ) );
t.appendDate( "time" , e.timestampTime() );
t.append( "inc" , e.timestampInc() );
t.done();
}
if ( level > 1 ) {
wassert(!txn->lockState()->isLocked());
// note: there is no so-style timeout on this connection; perhaps we should have one.
ScopedDbConnection conn(s["host"].valuestr());
DBClientConnection *cliConn = dynamic_cast< DBClientConnection* >( &conn.conn() );
if ( cliConn && replAuthenticate(cliConn) ) {
BSONObj first = conn->findOne( (string)"local.oplog.$" + sourcename,
Query().sort( BSON( "$natural" << 1 ) ) );
BSONObj last = conn->findOne( (string)"local.oplog.$" + sourcename,
Query().sort( BSON( "$natural" << -1 ) ) );
bb.appendDate( "masterFirst" , first["ts"].timestampTime() );
bb.appendDate( "masterLast" , last["ts"].timestampTime() );
double lag = (double) (last["ts"].timestampTime() - s["syncedTo"].timestampTime());
bb.append( "lagSeconds" , lag / 1000 );
}
conn.done();
}
sources.append( BSONObjBuilder::numStr( n++ ) , bb.obj() );
}
sources.done();
}
}
开发者ID:DieterLutz,项目名称:mongo,代码行数:80,代码来源:repl_info.cpp
示例6: run
/**
* Runs a query using the following steps:
* --Parsing.
* --Acquire locks.
* --Plan query, obtaining an executor that can run it.
* --Generate the first batch.
* --Save state for getMore, transferring ownership of the executor to a ClientCursor.
* --Generate response to send to the client.
*/
bool run(OperationContext* txn,
const std::string& dbname,
BSONObj& cmdObj,
int options,
std::string& errmsg,
BSONObjBuilder& result) override {
const NamespaceString nss(parseNs(dbname, cmdObj));
if (!nss.isValid() || nss.isCommand() || nss.isSpecialCommand()) {
return appendCommandStatus(result,
{ErrorCodes::InvalidNamespace,
str::stream() << "Invalid collection name: " << nss.ns()});
}
// Although it is a command, a find command gets counted as a query.
globalOpCounters.gotQuery();
if (txn->getClient()->isInDirectClient()) {
return appendCommandStatus(
result,
Status(ErrorCodes::IllegalOperation, "Cannot run find command from eval()"));
}
// Parse the command BSON to a LiteParsedQuery.
const bool isExplain = false;
auto lpqStatus = LiteParsedQuery::makeFromFindCommand(nss, cmdObj, isExplain);
if (!lpqStatus.isOK()) {
return appendCommandStatus(result, lpqStatus.getStatus());
}
auto& lpq = lpqStatus.getValue();
// Validate term before acquiring locks, if provided.
if (auto term = lpq->getReplicationTerm()) {
auto replCoord = repl::ReplicationCoordinator::get(txn);
Status status = replCoord->updateTerm(txn, *term);
// Note: updateTerm returns ok if term stayed the same.
if (!status.isOK()) {
return appendCommandStatus(result, status);
}
}
// Fill out curop information.
//
// We pass negative values for 'ntoreturn' and 'ntoskip' to indicate that these values
// should be omitted from the log line. Limit and skip information is already present in the
// find command parameters, so these fields are redundant.
const int ntoreturn = -1;
const int ntoskip = -1;
beginQueryOp(txn, nss, cmdObj, ntoreturn, ntoskip);
// Finish the parsing step by using the LiteParsedQuery to create a CanonicalQuery.
ExtensionsCallbackReal extensionsCallback(txn, &nss);
auto statusWithCQ = CanonicalQuery::canonicalize(lpq.release(), extensionsCallback);
if (!statusWithCQ.isOK()) {
return appendCommandStatus(result, statusWithCQ.getStatus());
}
std::unique_ptr<CanonicalQuery> cq = std::move(statusWithCQ.getValue());
// Acquire locks.
AutoGetCollectionForRead ctx(txn, nss);
Collection* collection = ctx.getCollection();
const int dbProfilingLevel =
ctx.getDb() ? ctx.getDb()->getProfilingLevel() : serverGlobalParams.defaultProfile;
// Get the execution plan for the query.
auto statusWithPlanExecutor =
getExecutorFind(txn, collection, nss, std::move(cq), PlanExecutor::YIELD_AUTO);
if (!statusWithPlanExecutor.isOK()) {
return appendCommandStatus(result, statusWithPlanExecutor.getStatus());
}
std::unique_ptr<PlanExecutor> exec = std::move(statusWithPlanExecutor.getValue());
if (!collection) {
// No collection. Just fill out curop indicating that there were zero results and
// there is no ClientCursor id, and then return.
const long long numResults = 0;
const CursorId cursorId = 0;
endQueryOp(txn, collection, *exec, dbProfilingLevel, numResults, cursorId);
appendCursorResponseObject(cursorId, nss.ns(), BSONArray(), &result);
return true;
}
const LiteParsedQuery& pq = exec->getCanonicalQuery()->getParsed();
// Stream query results, adding them to a BSONArray as we go.
CursorResponseBuilder firstBatch(/*isInitialResponse*/ true, &result);
BSONObj obj;
PlanExecutor::ExecState state = PlanExecutor::ADVANCED;
long long numResults = 0;
//.........这里部分代码省略.........
开发者ID:AnkyrinRepeat,项目名称:mongo,代码行数:101,代码来源:find_cmd.cpp
示例7: ACE_ERROR_RETURN
int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
{
if (node->defined_in () == 0)
{
// The node is a nested sequence, and has had no scope defined.
node->set_defined_in (DeclAsScope (this->ctx_->scope ()->decl ()));
}
// First create a name for ourselves.
if (node->create_name (this->ctx_->tdef ()) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("be_visitor_sequence_ch::")
ACE_TEXT ("visit_sequence - ")
ACE_TEXT ("failed creating name\n")),
-1);
}
// We don't check cli_hdr_gen() here. If we are generated more
// than once as an anonymous sequence, the name guard will cause
// the C++ preprocessor to catch it. If we are generated more than
// once as a typedef (caused by a comma separated list of
// typedefs), our name will be changed by the call above and the
// name guard will not catch it, but that's ok - we want to
// be generated for each typedef.
if (node->imported ())
{
return 0;
}
TAO_OutStream *os = this->ctx_->stream ();
// Retrieve the base type since we may need to do some code
// generation for the base type.
be_type *bt = be_type::narrow_from_decl (node->base_type ());
if (bt == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("be_visitor_sequence_ch::")
ACE_TEXT ("visit_sequence - ")
ACE_TEXT ("Bad element type\n")),
-1);
}
bt->seen_in_sequence (true);
AST_Decl::NodeType nt = bt->node_type ();
// If our base type is an anonymous sequence, we must create a name
// and generate a class declaration for it as well.
if (nt == AST_Decl::NT_sequence)
{
// Temporarily make the context's tdef node 0 so the nested call
// to create_name will not get confused and give our anonymous
// sequence element type the same name as we have.
be_typedef *tmp = this->ctx_->tdef ();
this->ctx_->tdef (0);
if (bt->accept (this) != 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("be_visitor_sequence_ch::")
ACE_TEXT ("visit_sequence - ")
ACE_TEXT ("codegen for anonymous ")
ACE_TEXT ("base type failed\n")),
-1);
}
// Restore the tdef value.
this->ctx_->tdef (tmp);
}
*os << be_nl_2;
*os << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
if (idl_global->dcps_sequence_type_defined (node->full_name ()))
{
// generate the sequence declaration as if it was native. This
// to satisfy DDS
// strip the "Seq" ending to get the sample's name
const char * node_name = node->full_name ();
const size_t max_name_length = 2000;
if (ACE_OS::strlen (node_name) >= max_name_length)
{
return -1;
}
char sample_name[max_name_length];
ACE_OS::strncpy (sample_name,
node_name,
ACE_OS::strlen (node_name) - 3);
sample_name[ACE_OS::strlen (node_name) - 3] = '\0';
*os << be_nl_2
<< "typedef ::TAO::DCPS::ZeroCopyDataSeq< "
<< sample_name
<< ", DCPS_ZERO_COPY_SEQ_DEFAULT_SIZE> "
<< node->local_name ()
//.........这里部分代码省略.........
开发者ID:CCJY,项目名称:ATCD,代码行数:101,代码来源:sequence_ch.cpp
示例8: NativeBN_BN_div
static jboolean NativeBN_BN_div(JNIEnv* env, jclass, BIGNUM* dv, BIGNUM* rem, BIGNUM* m, BIGNUM* d) {
if (!fourValidHandles(env, (rem ? rem : dv), (dv ? dv : rem), m, d)) return JNI_FALSE;
Unique_BN_CTX ctx(BN_CTX_new());
return BN_div(dv, rem, m, d, ctx.get());
}
开发者ID:CarbonArmv6,项目名称:android_libcore,代码行数:5,代码来源:java_math_NativeBN.cpp
示例9: NativeBN_BN_nnmod
static jboolean NativeBN_BN_nnmod(JNIEnv* env, jclass, BIGNUM* r, BIGNUM* a, BIGNUM* m) {
if (!threeValidHandles(env, r, a, m)) return JNI_FALSE;
Unique_BN_CTX ctx(BN_CTX_new());
return BN_nnmod(r, a, m, ctx.get());
}
开发者ID:CarbonArmv6,项目名称:android_libcore,代码行数:5,代码来源:java_math_NativeBN.cpp
示例10: newRunQuery
/**
* This is called by db/ops/query.cpp. This is the entry point for answering a query.
*/
string newRunQuery(Message& m, QueryMessage& q, CurOp& curop, Message &result) {
// This is a read lock.
Client::ReadContext ctx(q.ns, dbpath);
// Parse, canonicalize, plan, transcribe, and get a runner.
Runner* rawRunner;
Status status = getRunner(q, &rawRunner);
if (!status.isOK()) {
uasserted(17007, "Couldn't process query " + q.query.toString()
+ " why: " + status.reason());
}
verify(NULL != rawRunner);
auto_ptr<Runner> runner(rawRunner);
// We freak out later if this changes before we're done with the query.
const ChunkVersion shardingVersionAtStart = shardingState.getVersion(q.ns);
// We use this a lot below.
const ParsedQuery& pq = runner->getQuery().getParsed();
// TODO: Document why we do this.
replVerifyReadsOk(&pq);
// If this exists, the collection is sharded.
// If it doesn't exist, we can assume we're not sharded.
// If we're sharded, we might encounter data that is not consistent with our sharding state.
// We must ignore this data.
CollectionMetadataPtr collMetadata;
if (!shardingState.needCollectionMetadata(pq.ns())) {
collMetadata = CollectionMetadataPtr();
}
else {
collMetadata = shardingState.getCollectionMetadata(pq.ns());
}
// Run the query.
BufBuilder bb(32768);
bb.skip(sizeof(QueryResult));
// How many results have we obtained from the runner?
int numResults = 0;
// If we're replaying the oplog, we save the last time that we read.
OpTime slaveReadTill;
// Do we save the Runner in a ClientCursor for getMore calls later?
bool saveClientCursor = false;
BSONObj obj;
// TODO: Differentiate EOF from error.
while (runner->getNext(&obj)) {
// If we're sharded make sure that we don't return any data that hasn't been migrated
// off of our shared yet.
if (collMetadata) {
// This information can change if we yield and as such we must make sure to re-fetch
// it if we yield.
KeyPattern kp(collMetadata->getKeyPattern());
// This performs excessive BSONObj creation but that's OK for now.
if (!collMetadata->keyBelongsToMe(kp.extractSingleKey(obj))) { continue; }
}
// Add result to output buffer.
bb.appendBuf((void*)obj.objdata(), obj.objsize());
// Count the result.
++numResults;
// Possibly note slave's position in the oplog.
if (pq.hasOption(QueryOption_OplogReplay)) {
BSONElement e = obj["ts"];
if (Date == e.type() || Timestamp == e.type()) {
slaveReadTill = e._opTime();
}
}
// TODO: only one type of 2d search doesn't support this. We need a way to pull it out
// of CanonicalQuery. :(
const bool supportsGetMore = true;
const bool isExplain = pq.isExplain();
if (isExplain && pq.enoughForExplain(numResults)) {
break;
}
else if (!supportsGetMore && (pq.enough(numResults)
|| bb.len() >= MaxBytesToReturnToClientAtOnce)) {
break;
}
else if (pq.enoughForFirstBatch(numResults, bb.len())) {
// If only one result requested assume it's a findOne() and don't save the cursor.
if (pq.wantMore() && 1 != pq.getNumToReturn()) {
saveClientCursor = true;
}
break;
}
}
// TODO: Stage creation can set tailable depending on what's in the parsed query. We have
// the full parsed query available during planning...set it there.
//.........这里部分代码省略.........
开发者ID:acruikshank,项目名称:mongo,代码行数:101,代码来源:new_find.cpp
示例11: main
int main(int argc, char *argv[]) {
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " <problem.dat>" << std::endl;
return 1;
}
amgcl::profiler<> prof(argv[0]);
// Read matrix and rhs from a binary file.
std::vector<int> row;
std::vector<int> col;
std::vector<real> val;
std::vector<real> rhs;
int n = read_problem(argv[1], row, col, val, rhs);
// Initialize VexCL context.
vex::Context ctx( vex::Filter::Env && vex::Filter::DoublePrecision );
if (!ctx.size()) {
std::cerr << "No GPUs" << std::endl;
return 1;
}
std::cout << ctx << std::endl;
// Wrap the matrix into amgcl::sparse::map:
amgcl::sparse::matrix_map<real, int> A(
n, n, row.data(), col.data(), val.data()
);
// Build the preconditioner.
typedef amgcl::solver<
real, int,
amgcl::interp::smoothed_aggregation<amgcl::aggr::plain>,
amgcl::level::vexcl
> AMG;
typename AMG::params prm;
// Provide vex::Context for level construction:
prm.level.ctx = &ctx;
// Use K-Cycle on each level to improve convergence:
prm.level.kcycle = 1;
prof.tic("setup");
AMG amg(A, prm);
prof.toc("setup");
std::cout << amg << std::endl;
// Copy matrix and rhs to GPU(s).
vex::SpMat<real, int, int> Agpu(
ctx.queue(), n, n, row.data(), col.data(), val.data()
);
vex::vector<real> f(ctx.queue(), rhs);
// Solve the problem with CG method. Use AMG as a preconditioner:
vex::vector<real> x(ctx.queue(), n);
x = 0;
prof.tic("solve (cg)");
auto cnv = amgcl::solve(Agpu, f, amg, x, amgcl::cg_tag());
prof.toc("solve (cg)");
std::cout << "Iterations: " << std::get<0>(cnv) << std::endl
<< "Error: " << std::get<1>(cnv) << std::endl
<< std::endl;
std::cout << prof;
}
开发者ID:jieah,项目名称:amgcl,代码行数:70,代码来源:vexcl.cpp
示例12: newGetMore
/**
* Also called by db/ops/query.cpp. This is the new getMore entry point.
*/
QueryResult* newGetMore(const char* ns, int ntoreturn, long long cursorid, CurOp& curop,
int pass, bool& exhaust, bool* isCursorAuthorized) {
exhaust = false;
int bufSize = 512 + sizeof(QueryResult) + MaxBytesToReturnToClientAtOnce;
BufBuilder bb(bufSize);
bb.skip(sizeof(QueryResult));
// This is a read lock. TODO: There is a cursor flag for not needing this. Do we care?
Client::ReadContext ctx(ns);
// TODO: Document.
replVerifyReadsOk();
ClientCursorPin ccPin(cursorid);
ClientCursor* cc = ccPin.c();
// These are set in the QueryResult msg we return.
int resultFlags = ResultFlag_AwaitCapable;
int numResults = 0;
int startingResult = 0;
if (NULL == cc) {
cursorid = 0;
resultFlags = ResultFlag_CursorNotFound;
}
else {
// Quote: check for spoofing of the ns such that it does not match the one originally
// there for the cursor
uassert(17011, "auth error", str::equals(ns, cc->ns().c_str()));
*isCursorAuthorized = true;
// TODO: fail point?
// If the operation that spawned this cursor had a time limit set, apply leftover
// time to this getmore.
curop.setMaxTimeMicros(cc->getLeftoverMaxTimeMicros());
// TODO:
// curop.debug().query = BSONForQuery
// curop.setQuery(curop.debug().query);
// TODO: What is pass?
if (0 == pass) { cc->updateSlaveLocation(curop); }
CollectionMetadataPtr collMetadata = cc->getCollMetadata();
// If we're replaying the oplog, we save the last time that we read.
OpTime slaveReadTill;
startingResult = cc->pos();
Runner* runner = cc->getRunner();
const ParsedQuery& pq = runner->getQuery().getParsed();
// Get results out of the runner.
// TODO: There may be special handling required for tailable cursors?
runner->restoreState();
BSONObj obj;
// TODO: Differentiate EOF from error.
while (runner->getNext(&obj)) {
// If we're sharded make sure that we don't return any data that hasn't been
// migrated off of our shard yet.
if (collMetadata) {
KeyPattern kp(collMetadata->getKeyPattern());
if (!collMetadata->keyBelongsToMe(kp.extractSingleKey(obj))) { continue; }
}
// Add result to output buffer.
bb.appendBuf((void*)obj.objdata(), obj.objsize());
// Count the result.
++numResults;
// Possibly note slave's position in the oplog.
if (pq.hasOption(QueryOption_OplogReplay)) {
BSONElement e = obj["ts"];
if (Date == e.type() || Timestamp == e.type()) {
slaveReadTill = e._opTime();
}
}
if ((numResults && numResults >= ntoreturn)
|| bb.len() > MaxBytesToReturnToClientAtOnce) {
break;
}
}
cc->incPos(numResults);
runner->saveState();
// Possibly note slave's position in the oplog.
if (pq.hasOption(QueryOption_OplogReplay) && !slaveReadTill.isNull()) {
cc->slaveReadTill(slaveReadTill);
}
exhaust = pq.hasOption(QueryOption_Exhaust);
//.........这里部分代码省略.........
开发者ID:acruikshank,项目名称:mongo,代码行数:101,代码来源:new_find.cpp
示例13: ACE_ERROR_RETURN
int
be_visitor_operation_ih::visit_operation (be_operation *node)
{
// Impl classes shouldn't have implied AMI operations.
if (node->is_sendc_ami ())
{
return 0;
}
TAO_OutStream *os = this->ctx_->stream ();
this->ctx_->node (node);
*os << be_nl_2;
if (be_global->gen_impl_debug_info ())
{
*os << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__ << be_nl_2;
}
// every operation is declared virtual in the client code
*os << "virtual" << be_nl;
// STEP I: generate the return type
be_type *bt = be_type::narrow_from_decl (node->return_type ());
if (!bt)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_operation_ih::"
"visit_operation - "
"Bad return type\n"),
-1);
}
// grab the right visitor to generate the return type
be_visitor_context ctx (*this->ctx_);
be_visitor_operation_rettype oro_visitor (&ctx);
if (bt->accept (&oro_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_operation_ih::"
"visit_operation - "
"codegen for return type failed\n"),
-1);
}
// STEP 2: generate the operation name
*os << " " << node->local_name ();
// STEP 3: generate the argument list with the appropriate mapping. For these
// we grab a visitor that generates the parameter listing
ctx = *this->ctx_;
ctx.state (TAO_CodeGen::TAO_OPERATION_ARGLIST_IH);
be_visitor_operation_arglist oa_visitor (&ctx);
if (node->accept (&oa_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_operation_ih::"
"visit_operation - "
"codegen for argument list failed\n"),
-1);
}
return 0;
}
开发者ID:CCJY,项目名称:ATCD,代码行数:68,代码来源:operation_ih.cpp
示例14: main
int main(int argc, char *argv[]) {
OptimizationSettings settings;
Context ctx(settings);
consoleHelper::parseConsoleOptions(ctx, argc, argv);
ProblemData<int, double> instance;
double omega = 1;
std::vector<int> rowCounts;
switch (ctx.settings.lossFunction) {
case 0:
case 1:
InputOuputHelper::loadCSCData(ctx, instance);
std::cout << "Data loaded with size: " << instance.m << " x "
<< instance.n << std::endl;
rowCounts.resize(instance.m, 0);
for (unsigned long i = 0; i < instance.A_csc_row_idx.size(); i++) {
rowCounts[instance.A_csc_row_idx[i]]++;
if (rowCounts[instance.A_csc_row_idx[i]] > omega) {
omega = rowCounts[instance.A_csc_row_idx[i]];
}
}
break;
case 2:
loadDistributedSparseSVMRowData(ctx.matrixAFile, -1, -1, instance,
false);
if (ctx.isTestErrorFileAvailable) {
ProblemData<int, double> testInstance;
loadDistributedSparseSVMRowData(ctx.matrixATestFile, -1, -1,
testInstance, false);
instance.A_test_csr_col_idx = testInstance.A_csr_col_idx;
instance.A_test_csr_row_ptr = testInstance.A_csr_row_ptr;
instance.A_test_csr_values = testInstance.A_csr_values;
instance.test_b = testInstance.b;
}
instance.lambda = ctx.lambda;
rowCounts.resize(instance.m, 0);
for (unsigned long i = 0; i < instance.A_csr_col_idx.size(); i++) {
rowCounts[instance.A_csr_col_idx[i]]++;
if (rowCounts[instance.A_csr_col_idx[i]] > omega) {
omega = rowCounts[instance.A_csr_col_idx[i]];
}
}
instance.omegaAvg = 0;
instance.omegaMin = rowCounts[0];
for (unsigned long i = 0; i < rowCounts.size(); i++) {
instance.omegaAvg += rowCounts[i] / (0.0 + instance.n);
if (rowCounts[i] < instance.omegaMin) {
instance.omegaMin = rowCounts[i];
}
}
std::cout << "Omega: " << omega << std::endl;
std::cout << "Omega-avg: " << instance.omegaAvg << std::endl;
std::cout << "Omega-min: " << instance.omegaMin << std::endl;
break;
case 3:
case 4:
loadDistributedSparseSVMRowData(ctx.matrixAFile, -1, -1, instance,
false);
instance.lambda = ctx.lambda;
if (ctx.isTestErrorFileAvailable) {
ProblemData<int, double> testInstance;
loadDistributedSparseSVMRowData(ctx.matrixATestFile, -1, -1,
testInstance, false);
instance.A_test_csr_col_idx = testInstance.A_csr_col_idx;
instance.A_test_csr_row_ptr = testInstance.A_csr_row_ptr;
instance.A_test_csr_values = testInstance.A_csr_values;
instance.test_b = testInstance.b;
}
getCSR_from_CSC(
instance.A_csr_values, //Input
instance.A_csr_col_idx, instance.A_csr_row_ptr,
instance.A_csc_values, //Output
instance.A_csc_row_idx, instance.A_csc_col_ptr, instance.m,
instance.n);
int tmp=instance.n;
instance.n=instance.m;
instance.m=tmp;
for (int i=0;i<instance.m;i++){
if (instance.A_csr_row_ptr[i+1]-instance.A_csr_row_ptr[i]>omega){
omega=instance.A_csr_row_ptr[i+1]-instance.A_csr_row_ptr[i];
}
}
std::cout<<"Omega is "<<omega<<std::endl;
break;
}
instance.sigma = 1
+ (omega - 1) * (ctx.settings.totalThreads - 1)
/ (instance.n - 1.0);
MulticoreEngineExecutor<int, double> executor(instance, &(ctx.settings));
Solver<int, double> solver(executor);
solver.runSolver();
}
开发者ID:optml,项目名称:ac-dc,代码行数:98,代码来源:MultiCoreSolver.cpp
示例15: ACE_ERROR_RETURN
int
be_visitor_union_branch_public_ch::visit_array (be_array *node)
{
be_decl *ub = this->ctx_->node ();
be_decl *bu = this->ctx_->scope ()->decl ();
be_type *bt = 0;
// Check if we are visiting this via a visit to a typedef node.
if (this->ctx_->alias ())
{
bt = this->ctx_->alias ();
}
else
{
bt = node;
}
if (!ub || !bu)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_union_branch_public_ch::"
"visit_array - "
"bad context information\n"),
-1);
}
TAO_OutStream *os = this->ctx_->stream ();
// Not a typedef and bt is defined inside the union.
if (bt->node_type () != AST_Decl::NT_typedef
&& bt->is_child (bu))
{
// This is the case of an anonymous array inside a union.
be_visitor_context ctx (*this->ctx_);
ctx.node (node);
ctx.state (TAO_CodeGen::TAO_ARRAY_CH);
be_visitor_array_ch visitor (&ctx);
if (node->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_union_branch_public_ch::"
"visit_array - "
"codegen failed\n"
),
-1);
}
ctx.state (TAO_CodeGen::TAO_ROOT_CH);
*os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
// Now use this array as a "type" for the subsequent declarator
// the set method.
*os << be_nl_2
<< "void " << ub->local_name () << " ("
<< "_" << bt->local_name () << ");" << be_nl;
// The get method.
*os << "_" << bt->local_name () << "_slice * " << ub->local_name ()
<< " (void) const; // get method";
}
else
{
*os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
// Now use this array as a "type" for the subsequent declarator
// the set method.
*os << be_nl_2
<< "void " << ub->local_name () << " ("
<< bt->nested_type_name (bu) << ");"
<< be_nl;
// The get method.
*os << bt->nested_type_name (bu, "_slice *") << " " << ub->local_name ()
<< " (void) const;";
}
return 0;
}
开发者ID:chenbk85,项目名称:ACE,代码行数:81,代码来源:public_ch.cpp
示例16: NativeBN_BN_mod_exp
static jboolean NativeBN_BN_mod_exp(JNIEnv* env, jclass, BIGNUM* r, BIGNUM* a, BIGNUM* p, BIGNUM* m) {
if (!fourValidHandles(env, r, a, p, m)) return JNI_FALSE;
Unique_BN_CTX ctx(BN_CTX_new());
return BN_mod_exp(r, a, p, m, ctx.get());
}
开发者ID:CarbonArmv6,项目名称:android_libcore,代码行数:5,代码来源:java_math_NativeBN.cpp
示例17: NativeBN_BN_mod_inverse
static jboolean NativeBN_BN_mod_inverse(JNIEnv* env, jclass, BIGNUM* ret, BIGNUM* a, BIGNUM* n) {
if (!threeValidHandles(env, ret, a, n)) return JNI_FALSE;
Unique_BN_CTX ctx(BN_CTX_new());
return (BN_mod_inverse(ret, a, n, ctx.get()) != NULL);
}
开发者ID:CarbonArmv6,项目名称:android_libcore,代码行数:5,代码来源:java_math_NativeBN.cpp
示例18: omxInvokeNLOPT
void omxInvokeNLOPT(double *est, GradientOptimizerContext &goc)
{
goc.optName = "SLSQP";
goc.setupSimpleBounds();
goc.useGradient = true;
FitContext *fc = goc.fc;
int oldWanted = fc->wanted;
fc->wanted = 0;
omxState *globalState = fc->state;
nlopt_opt opt = nlopt_create(NLOPT_LD_SLSQP, fc->numParam);
goc.extraData = opt;
//local_opt = nlopt_create(NLOPT_LD_SLSQP, n); // Subsidiary algorithm
//nlopt_set_local_optimizer(opt, local_opt);
nlopt_set_lower_bounds(opt, goc.solLB.data());
nlopt_set_upper_bounds(opt, goc.solUB.data());
int eq, ieq;
globalState->countNonlinearConstraints(eq, ieq);
if (fc->CI) {
nlopt_set_xtol_rel(opt, 5e-3);
std::vector<double> tol(fc->numParam, std::numeric_limits<double>::epsilon());
nlopt_set_xtol_abs(opt, tol.data());
} else {
// The *2 is there to roughly equate accuracy with NPSOL.
nlopt_set_ftol_rel(opt, goc.ControlTolerance * 2);
nlopt_set_ftol_abs(opt, std::numeric_limits<double>::epsilon());
}
nlopt_set_min_objective(opt, SLSQP::nloptObjectiveFunction, &goc);
double feasibilityTolerance = Global->feasibilityTolerance;
SLSQP::context ctx(goc);
if (eq + ieq) {
ctx.origeq = eq;
if (ieq > 0){
goc.inequality.resize(ieq);
std::vector<double> tol(ieq, feasibilityTolerance);
nlopt_add_inequality_mconstraint(opt, ieq, SLSQP::nloptInequalityFunction, &goc, tol.data());
}
if (eq > 0){
goc.equality.resize(eq);
std::vector<double> tol(eq, feasibilityTolerance);
nlopt_add_equality_mconstraint(opt, eq, SLSQP::nloptEqualityFunction, &ctx, tol.data());
}
}
int priorIterations = fc->iterations;
int code = nlopt_optimize(opt, est, &fc->fit);
if (ctx.eqredundent) {
nlopt_remove_equality_constraints(opt);
eq -= ctx.eqredundent;
std::vector<double> tol(eq, feasibilityTolerance)
|
请发表评论