本文整理汇总了C++中input类的典型用法代码示例。如果您正苦于以下问题:C++ input类的具体用法?C++ input怎么用?C++ input使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了input类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: postprocess
/*!
* Initializes the rhs_CNLS class
*/
void rhs_CNLS::postprocess(input& dat){
rhs::postprocess(dat);
NUM_TIME_STEPS = dimension/2;
if(NUM_TIME_STEPS*2 != dimension){
err("dimension not even, which is required for rhs_CNLS",
"rhs_CNLS::postprocess", "rhs/rhs_CNLS.cpp", FATAL_ERROR);
}
dat.retrieve(LENGTH_T, "t_int", this);
if(LENGTH_T <= 0){
std::string errmess = "t_int is invalid, must be >= 0";
err(errmess, "rhs_CNLS::postprocess", "rhs/rhs_CNLS.cpp",
dat["t_int"], FATAL_ERROR);
}
dt = LENGTH_T/NUM_TIME_STEPS;
dat.retrieve(g0, "g0", this);
dat.retrieve(e0, "e0", this);
memp.create(NUM_TIME_STEPS, &u1, &u2, &comp_in, &comp_in_r, &comp_out, &comp_out_r, &sq1, &sq2, &k, &ksq);
//create k values
double mulval=(2.0*PI/LENGTH_T)*(NUM_TIME_STEPS/2.0);
for(size_t i=0; i<NUM_TIME_STEPS/2; i++){
k[i] = mulval * (2.0*i/(1.0*NUM_TIME_STEPS));
ksq[i] = k[i]*k[i];
}
for(size_t i=NUM_TIME_STEPS/2; i<NUM_TIME_STEPS; i++){
k[i] = mulval * 2.0*((int)i-(int)NUM_TIME_STEPS)/(NUM_TIME_STEPS*1.0);
ksq[i] = k[i]*k[i];
}
}
示例2: _parse_codepoint
template<typename String, typename Iter> inline bool _parse_codepoint(String& out, input<Iter>& in) {
int uni_ch;
if ((uni_ch = _parse_quadhex(in)) == -1) {
return false;
}
if (0xd800 <= uni_ch && uni_ch <= 0xdfff) {
if (0xdc00 <= uni_ch) {
// a second 16-bit of a surrogate pair appeared
return false;
}
// first 16-bit of surrogate pair, get the next one
if (in.getc() != '\\' || in.getc() != 'u') {
in.ungetc();
return false;
}
int second = _parse_quadhex(in);
if (! (0xdc00 <= second && second <= 0xdfff)) {
return false;
}
uni_ch = ((uni_ch - 0xd800) << 10) | ((second - 0xdc00) & 0x3ff);
uni_ch += 0x10000;
}
if (uni_ch < 0x80) {
out.push_back(uni_ch);
} else {
if (uni_ch < 0x800) {
out.push_back(0xc0 | (uni_ch >> 6));
} else {
if (uni_ch < 0x10000) {
示例3: postprocess
/*!
* Performs the postprocessing for toroidal,
* which is setting the number of iterations that are to be performed
* @param dat Map containing the input values
* \sa controller::postprocess, item_dim::postprocess
*/
void toroidal::postprocess(input& dat){
controller::postprocess(dat);
num_int=0;
int _iterations;
dat.retrieve(_iterations, "iterations", this);
dat.retrieve(initial_inc, "initial_inc", this);
dat.retrieve(mul_fac, "mul_fac", this);
iterations = _iterations;
if(mul_fac==0){
err("Multiply factor, mul_fac, must not be equal to zero",
"toroidal::postprocess", "controller/toroidal.cpp",
FATAL_ERROR);
}
if(initial_inc==0){
err("The initial increment, initial_inc, must not be equal to zero",
"toroidal::postprocess", "controller/toroidal.cpp",
FATAL_ERROR);
}
//temporary hack to help with c_elegans
holder->index = index*iterations;
//find the controllers place in the number of iterations
}
示例4: postprocess
/*!
* This function process data that has been generated from an input file
* All of the names returned in the dependencies file exist and have been processed
* @param dat The data structure containing the variable names
*/
void example_rhs::postprocess(input& dat){
//warning so nobody ever actually constructs one of these
//please don't have warnings that always throw in your code ever
err("Example_rhs created, mysteriously fails on some architectures seemingly from AVX instructions. Also does nothing useful", "rhs::create", "rhs/rhs.cpp", WARNING);
rhs::postprocess(dat);//always postprocess the parent class first
//Any class that inherits from rhs, or item_dim, has access to a variable
//called dimension, which represents the dimension of the problem at hand
//dimension is initialized in the item_dep, which is why the parent postprocessing
//must be called first
//There are two types of errors, warning and fatal errors.
//Warnings print something to the screen to warn the user,
//but do not stop the program. A fatal error causes an immediate exit
//These are caused by the function err. Details can be found in the documentation
//
//Lets throw a fatal error if the dimension is less than 10
if(dimension > 10){
err("dimension > 10, which is required for example_rhs", "example_rhs::postprocess",
"rhs/example_rhs.cpp", FATAL_ERROR);
}
//Lets also throw an error if the dimension is equal to 5
if(dimension==5){
err("dimension=5, which gets a warning from example_rhs", "example_rhs::postprocess",
"rhs/example_rhs.cpp", WARNING);
}
//The map contains item*, which point to an item of arbitrary type.
//I plan to implement type checking of the dependencies.
//But sometime later
//
//To retrieve a value, you can call the retrieve function of the variable at hand
//you just pass the name of parameter that is being retrieved to the map, which returns
//an item*. Then this pointer is called to retrieve the value, and is passed the address
//of val1
dat.retrieve(val1, "val1", this);
dat.retrieve(val2, "val2", this);
dat.retrieve(random_info, "random_info", this);
//now, we are going to allocate some memory to something
//This may be useful for storing temporary calculations during the RHS.
//Inheriting from item_dim provides access to a memory pool, memp.
//just pass memp.create the dimension of the problem and the
//addresses of the pointers and the alignment, allocation, and deallocation is
//taken care of!
//
//memp.create(dimension, &ptr1, &ptr2, &ptr3, etc)
//for custom alignment(standard is 32 byte)
//memp.create(alignment, dimension, &ptr1, &prt2, etc)
//
memp.create(32, dimension, &value_holder);
for(size_t i = 0; i < dimension; i++){
value_holder[i] = Id*(double)i*val1 + (dimension-i)*val2;
}
}
示例5: read_input
inline void read_input(input &inp, Problems &p)
{
unsigned short u, v;
p.reset();
inp.read_short(u);
for(unsigned short i = 0; i < u; ++i)
{
inp.read_short(v);
p.set(v);
}
}
示例6: inget
int copy_file_thru_input::inget()
{
if (!in)
return EOF;
else
return in->get();
}
示例7: evaluate
output fc_rnn::execute(input const& in)
{
// Set activation of input neurons
auto const num_input = in.size();
for(size_t n = 0; n < num_input; ++n)
{
vInput[n] = in[n];
}
// Summation for hidden neurons
Eigen::VectorXd vHiddenSums =
wmInput * vInput +
wmHidden * vHidden;
// Transfer function
vHidden =
evaluate(af_hidden, vHiddenSums.array());
// TODO: Maybe should just store as a single vector?
Eigen::VectorXd joined(input_layer_count() + hidden_count());
joined << vInput, vHidden;
Eigen::VectorXd vOutputSums =
wmOutput * joined;
Eigen::VectorXd vOutput =
evaluate(af_output, vOutputSums.array());
// Return the output values
output out{ output_count() };
std::copy(vOutput.data(), vOutput.data() + output_count(), out.begin());
return out;
}
示例8: NuclPotEn
/**
* Calculate the nuclear-nuclear potential energy of a problem
* @param problem the problem to be solved
*/
double MxElem::NuclPotEn(input & problem){
double energy = 0;
int Ncores = problem.gNcores();
for (int i=0; i<Ncores; i++){
R Ri(*(problem.gvector(i)));
int Zi = problem.gcore(i);
for (int j=i+1; j<Ncores; j++){
energy += Zi * problem.gcore(j) / sqrt(Ri.DistanceSquared(*(problem.gvector(j))));
}
}
return energy;
}
示例9: update
void example_integrator_tmpl<T>::postprocess(input& in){
//perform postprocessing of integrator class
//note how we skip example_integrator in this chain since example integrator is
//only a proxy that performs type erasure
integrator::postprocess(in);
item* some_class;
in.retrieve(some_class, "test_class", this);
//this allows us to have a consistent representation in the input file.
//If the variable in question is not part of the hardcore numerical analysis code,
//it may be better to just use a double and not deal with this in the postprocessing
double _rval1 = 0;
in.retrieve(_rval1, "rval1", this);
rval1=_rval1;
//note how we pass a default parameter since rval2 isn't necesarily going to exist
in.retrieve(rval2, "rval2", this, 0);
in.retrieve(unsigned_var, "unsigned_var", this);
in.retrieve(something, "something", this);
update();
}
示例10: _parse_quadhex
template<typename Iter> inline int _parse_quadhex(input<Iter> &in) {
int uni_ch = 0, hex;
for (int i = 0; i < 4; i++) {
if ((hex = in.getc()) == -1) {
return -1;
}
if ('0' <= hex && hex <= '9') {
hex -= '0';
} else if ('A' <= hex && hex <= 'F') {
hex -= 'A' - 0xa;
} else if ('a' <= hex && hex <= 'f') {
hex -= 'a' - 0xa;
} else {
in.ungetc();
return -1;
}
uni_ch = uni_ch * 16 + hex;
}
return uni_ch;
}
示例11: postprocess
void n_pulse_score::postprocess(input& invals){
objective::postprocess(invals);
int _n_pulse = 0;
invals.retrieve(_n_pulse, "num_pulses", this);
n_pulse = _n_pulse;
if(dimension%n_pulse){
err("n_pulse_score requires a dimension divisible by the number of pulses",
"bi_pulse_score::postprocess", "objective/bi_pulse_score.cpp", FATAL_ERROR);
}
nts = dimension/n_pulse;
memp.create(nts, &help, &kurtosis_help);
}
示例12: CalcTotalNumberOfOrbitals
/**
* Function to find the total number of orbitals corresponding to a problem
* @param readin the problem to be solved
* @return the number of different orbitals
*/
int MxElem::CalcTotalNumberOfOrbitals(input & readin){
int counter = 0;
int Ncores = readin.gNcores();
for (int cnt=0; cnt<Ncores; cnt++){
Gauss * atom = readin.gGaussInfo(cnt);
int Ntypes = atom->gNtypes();
for (int cnt2=0; cnt2<Ntypes; cnt2++){
char type = atom->gtype(cnt2);
int L = GetLofType(type);
counter += ((L+1)*(L+2))/2;
}
}
return counter;
}
示例13: while
int input_stack::peek_char()
{
while (current_input != 0) {
int c = current_input->peek();
if (c != EOF)
return c;
if (current_input->next == 0)
return EOF;
input *tem = current_input;
current_input = current_input->next;
delete tem;
}
return EOF;
}
示例14: init
void rand_planck::init( input & args )
{
int n_x( 0 );
args.find_key( "planck_res", n_x, 100 );
x_vec.clear( );
const double dx = 1. / ( n_x - 1 );
const int max_x = 20; // "Magic" -> precision lim
for( int i = 0; i < max_x * n_x; ++ i )
x_vec.push_back( max_x - i * dx );
t_vec.push_back( 0 ); // Just let it go.
this->integrate( );
return;
}
示例15: copy
void copy(output& dest, input& src)
{
uint8_t buffer[BUFFER_SIZE];
stream::len total_written = 0;
stream::len r;
do {
r = src.try_read(buffer, sizeof(buffer));
if (r == 0) break;
stream::len w = dest.try_write(buffer, r);
total_written += w;
if (w < r) {
// Did not write the full buffer
throw incomplete_write(total_written);
}
} while (r == sizeof(buffer));
return;
}