Beispiel #1
0
void StatusLineC::ToggleSecond(WC_TW)
	{
	// No second line when in full-screen mode
	if (State == SL_FULLSCREEN)
		{
		return;
		}

	// If nothing is visible... make it so.
	if (!Visible)
		{
#ifdef WINCIT
		Toggle(TW);
#else
		Toggle();
#endif
		}
	else
		{
		int row = tw()logiRow, col = tw()logiCol;

		if (State == SL_ONELINE)
			{
			// Make it two...

			State = SL_TWOLINES;

			scrollpos = conRows - Height();

			if (row > scrollpos)
				{
				tw()scroll(row, row - scrollpos, cfg.attr);
				row = scrollpos;
				}
			}
		else
			{
			// Make it one...

			State = SL_ONELINE;

			scrollpos = conRows - Height();

			tw()clearline(scrollpos, cfg.attr);
			}

		tw()position(row, col);
		updateStatus = TRUE;

#ifdef WINCIT
		Update(TW);
#else
		Update();
#endif
		}
	}
Foam::tmp<Foam::scalarField> Foam::energyRegionCoupledFvPatchScalarField::
weights() const
{
    const fvPatch& patch = regionCoupledPatch_.patch();

    const scalarField deltas
    (
        patch.nf() & patch.delta()
    );

    const scalarField alphaDelta(kappa()/deltas);

    const fvPatch& nbrPatch = regionCoupledPatch_.neighbFvPatch();

    const energyRegionCoupledFvPatchScalarField& nbrField =
    refCast
    <
        const energyRegionCoupledFvPatchScalarField
    >
    (
        nbrPatch.lookupPatchField<volScalarField, scalar>("T")
    );

    // Needed in the first calculation of weights
    nbrField.setMethod();

    const scalarField nbrAlpha
    (
        regionCoupledPatch_.regionCoupledPatch().interpolate
        (
            nbrField.kappa()
        )
    );

    const scalarField nbrDeltas
    (
        regionCoupledPatch_.regionCoupledPatch().interpolate
        (
            nbrPatch.nf() & nbrPatch.delta()
        )
    );

    const scalarField nbrAlphaDelta(nbrAlpha/nbrDeltas);

    tmp<scalarField> tw(new scalarField(deltas.size()));
    scalarField& w = tw();

    forAll(alphaDelta, faceI)
    {
        scalar di = alphaDelta[faceI];
        scalar dni = nbrAlphaDelta[faceI];

        w[faceI] = di/(di + dni);
    }
void KisTransformProcessingVisitor::transformClones(KisLayer *layer, KisUndoAdapter *undoAdapter)
{
    QList<KisCloneLayerWSP> clones = layer->registeredClones();

    foreach(KisCloneLayerSP clone, clones) {
        // we have just casted an object from a weak pointer,
        // so check validity first
        if(!clone) continue;

        KisTransformWorker tw(clone->projection(), m_sx, m_sy, m_shearx, m_sheary,
                              m_shearOrigin.x(), m_shearOrigin.y(),
                              m_angle, m_tx, m_ty, 0,
                              m_filter);

        QTransform trans  = tw.transform();
        QTransform offsetTrans = QTransform::fromTranslate(clone->x(), clone->y());

        QTransform newTrans = trans.inverted() * offsetTrans * trans;

        QPoint oldPos(clone->x(), clone->y());
        QPoint newPos(newTrans.dx(), newTrans.dy());
        KUndo2Command *command = new KisNodeMoveCommand2(clone, oldPos, newPos, undoAdapter);
        undoAdapter->addCommand(command);
    }
}
int main( int argc, char **argv )
{
  QApplication a( argc, argv );

  TW tw( &a );

  tw.show();

//   tw.testPixMapLines(1000);
//   tw.testPixMapLines(100);
//   tw.testPixMapLines(10);

//   tw.testPixMapFill( 1000 );

//   tw.testDrawImage();
//   tw.testDrawPixmap();

  tw.testPlotBench();
  tw.testPlotBench(true);
  tw.testPlotBench();
  tw.testPlotBench(true);

  return( 0 );
  return a.exec();
}
    const TransactionWeight* operator() (const DataStruct& ds)
    {
        // request latest prices
        Matrix price = ds.price(ltaverage_window);

//        std::cout << "(" << price.rows() << "x" << price.cols() << ")" << std::endl;

        t1 = t2;
        pos_t1 = pos_t2;
        ltaverage_t1 = ltaverage_t2;
        staverage_t1 = ltaverage_t2;

        // compute averages
        t2 = ds.time;
        ltaverage_t2 = price.colwise().mean();
        staverage_t2 = price.bottomRows(staverage_window).colwise().mean();

        // new signal
        pos_t2 = (ltaverage_t2.array() > staverage_t2.array()).cast<double>();

        if (set){
            signal = signal + (pos_t2 - pos_t1).transpose();
            weight() = signal / signal.sum();
//            weight_type() = TotalPercentage;
        }

        set = true;
        return &tw();
    }
Beispiel #6
0
int main( int argc , char** argv ){
	if(argc!=2){
		std::cerr << "usage: ./main [video name] || [picture name] || [camera]\n";
		exit(-4);
	}
	const int bufferLength = 30;
	cv::Mat** buffer = new cv::Mat*[bufferLength];
	for(int i=0;i<bufferLength;i++){
		buffer[i] = new cv::Mat(720,680,CV_8UC3,0.0);
	}
	
	Queue<cv::Mat*> q1;
	Queue<SegmentedTableType> q2;
	Queue<cv::Mat*> q3;
	
	
	Reader<cv::Mat*> reader(q1,buffer,argv[1],bufferLength);
	Table<cv::Mat*,SegmentedTableType> tableSegmenter(q1,q2);
	BallSegmenter<SegmentedTableType,cv::Mat*> ballSegmenter(q2,q3);
	Writer<cv::Mat*> writer(q3);
	
	std::thread tr(reader);
	std::thread tableSegmenterThread(tableSegmenter);
	std::thread ballSegmenterThread(ballSegmenter);
	std::thread tw(writer);

	tr.join();
	tableSegmenterThread.join();
	ballSegmenterThread.join();
	tw.join();
	
	return 0;
}
void KisTransformWorkerTest::testIdentity()
{
    TestUtil::TestProgressBar bar;
    KoProgressUpdater pu(&bar);
    KoUpdaterPtr updater = pu.startSubtask();

    const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
    QImage image(QString(FILES_DATA_DIR) + QDir::separator() + "mirror_source.png");
    KisPaintDeviceSP dev = new KisPaintDevice(cs);
    dev->convertFromQImage(image, "");
    KisFilterStrategy * filter = new KisBoxFilterStrategy();

    KisTransaction t("test", dev);
    KisTransformWorker tw(dev, 1.0, 1.0,
                          0.0, 0.0,
                          0.0, 0.0,
                          0.0,
                          0, 0, updater, filter, true);
    tw.run();
    t.end();
    
    QRect rc = dev->exactBounds();

    QVERIFY(rc.width() ==image.width());
    QVERIFY(rc.height() == image.height());

    QImage result = dev->convertToQImage(0, rc.x(), rc.y(), rc.width(), rc.height());
    QPoint errpoint;
    if (!TestUtil::compareQImages(errpoint, image, result)) {
        image.save("test_identity_source.png");
        result.save("test_identity_result.png");
        QFAIL(QString("Failed to apply identity transformation to image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toAscii());
    }
}
int main()
{
    PyImport_AppendInittab("testprop", [](){
        auto module = new TestProp();
        return module->module().ptr();
    });
    init_python_api({&CyPy_Server::init,
                     &CyPy_Rules::init,
                     &CyPy_Atlas::init,
                     &CyPy_Physics::init,
                     &CyPy_Common::init});


    Ref<Entity> wrld(new Entity("0", 0));
    TestWorld tw(wrld);

    run_python_string("from server import *");
    run_python_string("import testprop");
    run_python_string("t=Thing('1')");
    run_python_string("t.props.line == None");
    run_python_string("t.props.statistics == None");
    run_python_string("t.props.terrain == None");
    run_python_string("testprop.add_properties(t)");
    run_python_string("t.props.line");
    run_python_string("t.props.statistics");
    run_python_string("t.props.terrain");


    shutdown_python_api();
    return 0;
}
Beispiel #9
0
void fade_colors(void)
{
	if(lamp->have_winner) {
		static uint32_t ctr = 0;
		lamp->red = tw(23, ctr);
		lamp->green = tw(29, ctr);
		lamp->blue = tw(37, ctr);
		lamp->white = 0;
		ctr++;
	} else {
		int const p = 970;
		int const p_div = 1000;
		lamp->red = lamp->red * p / p_div;
		lamp->green = lamp->green * p / p_div;
		lamp->blue = lamp->blue * p / p_div;
		lamp->white = lamp->white * p / p_div;
	}
}
static void threadFunc(int threadNum)
{
    TimeWaster tw(threadNum);

    for (int i = 0; i < 10000000; i++)
    {
        mint_fetch_add_${TEST_INT_BITSIZE}_relaxed(&g_sharedInt, 1);
        tw.wasteRandomCycles();
    }
}
void KisTransformProcessingVisitor::transformPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *adapter, const ProgressHelper &helper)
{
    KisTransaction transaction(i18n("Transform Node"), device);

    KisTransformWorker tw(device, m_sx, m_sy, m_shearx, m_sheary,
                          m_shearOrigin.x(), m_shearOrigin.y(),
                          m_angle, m_tx, m_ty, helper.updater(),
                          m_filter);
    tw.run();
    transaction.commit(adapter);
}
Beispiel #12
0
void emit_definitions( const wrSourceFile& srcFile )
{
	OSFileName		fileName = GetDestFileName( srcFile.name, WR_SOURCE_FILE_EXT );
	FileWriter		outputStream( fileName.ToChars() );
	mxTextWriter	tw( &outputStream );

	tw	<< MXC("/* This ALWAYS GENERATED file contains the implementation for the interfaces */\n")
		<< MXC("/* File created by HLSL wrapper generator version ") << WR_VERSION_STRING << MXC(" ") << GetCurrentDateTimeString() << MXC(" */\n")
		;
	tw	<< MXC("namespace ") << WR_NAMESPACE << MXC("\n{\n");

	// Initialization order:
	// 1) Render targets
	// 2) State objects
	// 3) Shaders
	// 4) Input layouts
	// 5) Everything else

/*
	TList< const wrRenderTarget* >	sortedRTs;
	for( UINT iRenderTarget = 0;
		iRenderTarget < srcFile.renderTargets.Num();
		iRenderTarget++ )
	{
		sortedRTs.Add( &srcFile.renderTargets[ iRenderTarget ] );
	}

	// Sort render targets by size.
	InsertionSort< const wrRenderTarget*, wrRenderTarget >( sortedRTs.ToPtr(), 0, sortedRTs.Num()-1 );
*/
	Emit_initialize_render_targets( srcFile.renderTargets, tw );
	emit_line_separator_comment( tw );
	Emit_initialize_sampler_states( srcFile.samplerStates, tw );
	emit_line_separator_comment( tw );
	emit_initialize_depth_stencil_states( srcFile.depthStencilStates, tw );


	tw	<< MXC("void SetupGPUResources( const SHADER_LIB_CREATE& creationParams )\n{\n")
		;
	tw	<< MXC("\n}//SetupGPUResources\n")
		<< MXC("SetupRenderTargets( creationParams );\n")
		<< MXC("SetupSamplerStates( creationParams );\n")
		<< MXC("SetupDepthStencilStates( creationParams );\n")
		<< MXC("SetupRasterizerStates( creationParams );\n")
		<< MXC("SetupBlendStates( creationParams );\n")
		;
	tw	<< MXC("\n}//SetupGPUResources\n")
		;

	tw	<< MXC("\n}//namespace ") << WR_NAMESPACE << MXC("\n");
}
void KisTransformWorkerTest::testXScaleDown()
{
    TestUtil::TestProgressBar bar;
    KoProgressUpdater pu(&bar);
    KoUpdaterPtr updater = pu.startSubtask();

    const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
    QImage image(QString(FILES_DATA_DIR) + QDir::separator() + "mirror_source.png");
    KisPaintDeviceSP dev = new KisPaintDevice(cs);
    dev->convertFromQImage(image, "");

    KisFilterStrategy * filter = new KisBoxFilterStrategy();

    KisTransaction t("test", dev);
    KisTransformWorker tw(dev, 0.123, 1.0,
                          0.0, 0.0,
                          0.0, 0.0,
                          0.0,
                          0, 0, updater, filter, true);
    tw.run();
    t.end();
    
    QRect rc = dev->exactBounds();

    QVERIFY(rc.width() == qRound(image.width() * 0.123));
    QVERIFY(rc.height() == image.height() - 1); // the height is reduced by 1 because in the source image
                                                // at the bottom line most pixels (except 1 or 2) are
                                                // entirely transparent.
                                                // when scaling down the image by ~ 1/10, the few non-tranparent
                                                // pixels disappear when "mixed" with the transparent ones
                                                // around

//    KisTransaction t2("test", dev);
//    KisRandomAccessorSP ac = dev->createRandomAccessorNG(rc.x(), rc.y());
//    for(int x = rc.x(); x < rc.width(); ++x) {
//        for(int y = rc.y(); y < rc.height(); ++y) {
//            ac->moveTo(x, y);
//            cs->setOpacity(ac->rawData(), 0.5, 1);
//        }
//    }
//    t2.end();

    QImage result = dev->convertToQImage(0, rc.x(), rc.y(), rc.width(), rc.height());
    QPoint errpoint;
    image.load(QString(FILES_DATA_DIR) + QDir::separator() + "scaledownx_result.png");
    if (!TestUtil::compareQImages(errpoint, image, result)) {
        image.save("scaledownx_source.png");
        result.save("scaledownx_result.png");
        QFAIL(QString("Failed to scale down the image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toAscii());
    }
}
void KisTransformWorkerTest::testCreation()
{
    TestUtil::TestProgressBar bar;
    KoProgressUpdater pu(&bar);
    KoUpdaterPtr updater = pu.startSubtask();
    const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
    KisFilterStrategy * filter = new KisBoxFilterStrategy();
    KisPaintDeviceSP dev = new KisPaintDevice(cs);
    KisTransformWorker tw(dev, 1.0, 1.0,
                          1.0, 1.0,
                          0.0, 0.0,
                          1.5,
                          0, 0, updater, filter, true);
}
void KisTransformProcessingVisitor::visit(KisExternalLayer *layer, KisUndoAdapter *undoAdapter)
{
    KisTransformWorker tw(layer->projection(), m_sx, m_sy, m_shearx, m_sheary,
                          m_shearOrigin.x(), m_shearOrigin.y(),
                          m_angle, m_tx, m_ty, 0,
                          m_filter);

    KUndo2Command* command = layer->transform(tw.transform() * m_shapesCorrection);
    if(command) {
        undoAdapter->addCommand(command);
    }

    transformClones(layer, undoAdapter);
}
Beispiel #16
0
void StatusLineC::Toggle(WC_TW)
	{
	int row = tw()logiRow, col = tw()logiCol;

	if (Visible)
		{
		Visible = FALSE;

		for (int i = scrollpos + 1; i <= conRows; i++)
			{
			tw()clearline(i, cfg.attr);
			}

		scrollpos = conRows;
		}
	else
		{
		Visible = TRUE;

		scrollpos = conRows - Height();

		if (row > scrollpos)
			{
			tw()scroll(row, row - scrollpos, cfg.attr);
			row = scrollpos;
			}
		}

	tw()position(row, col);
	updateStatus = TRUE;

#ifdef WINCIT
	Update(TW);
#else
	Update();
#endif
	}
void KisTransformWorkerTest::testYShear()
{
    TestUtil::TestProgressBar bar;
    KoProgressUpdater pu(&bar);
    KoUpdaterPtr updater = pu.startSubtask();

    const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
    QImage image(QString(FILES_DATA_DIR) + QDir::separator() + "mirror_source.png");
    KisPaintDeviceSP dev = new KisPaintDevice(cs);
    dev->convertFromQImage(image, "");

    KisFilterStrategy * filter = new KisBoxFilterStrategy();

    KisTransaction t("test", dev);
    KisTransformWorker tw(dev, 1.0, 1.0,
                          0.0, 1.0,
                          300., 200.,
                          0.0,
                          0, 0, updater, filter, true);
    tw.run();
    t.end();

    QRect rc = dev->exactBounds();

    QVERIFY(rc.width() == image.width());
    QVERIFY(rc.height() == 959);

//    KisTransaction t2("test", dev);
//    KisRandomAccessorSP ac = dev->createRandomAccessorNG(rc.x(), rc.y());
//    for(int x = rc.x(); x < rc.width(); ++x) {
//        for(int y = rc.y(); y < rc.height(); ++y) {
//            ac->moveTo(x, y);
//            cs->setOpacity(ac->rawData(), 0.5, 1);
//        }
//    }
//    t2.end();

    QImage result = dev->convertToQImage(0, rc.x(), rc.y(), rc.width(), rc.height());
    QPoint errpoint;
    image.load(QString(FILES_DATA_DIR) + QDir::separator() + "sheary_result.png");
    if (!TestUtil::compareQImages(errpoint, image, result)) {
        image.save("sheary_source.png");
        result.save("sheary_result.png");
        QFAIL(QString("Failed to shear the image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toAscii());
    }

}
Beispiel #18
0
void
TaskWaypointTest::Run()
{
  GeoPoint gp(Angle::Degrees(fixed(20)), Angle::Degrees(fixed(50)));
  Waypoint wp(gp);
  wp.name = _T("Test");
  wp.altitude = fixed(42);

  DummyTaskWaypoint tw(TaskPoint::AST, wp);

  const Waypoint &wp2 = tw.GetWaypoint();
  ok1(wp2.name == _T("Test"));
  ok1(equals(tw.GetBaseElevation(), 42));
  ok1(equals(tw.GetBaseElevation(), wp2.altitude));
  ok1(equals(wp2.location, gp));
  ok1(equals(tw.GetLocation(), gp));
}
Beispiel #19
0
int main()
{
    init_python_api("cb44c6cc-64fa-46c4-83d1-f43c6a2bb56c");

    Entity wrld("0", 0);
    TestWorld tw(wrld);


    run_python_string("from server import World");
    run_python_string("w=World()");
    run_python_string("w.get_time()");
    run_python_string("w.get_object('0')");
    run_python_string("w.get_object('1')");
    expect_python_error("w.get_object(1)", PyExc_TypeError);
    run_python_string("w == World()");

    shutdown_python_api();
    return 0;
}
void KisTransformProcessingVisitor::transformSelection(KisSelectionSP selection, KisUndoAdapter *adapter, const ProgressHelper &helper)
{
    if(selection->hasPixelSelection()) {
        transformPaintDevice(selection->pixelSelection(), adapter, helper);
    }

    if (selection->hasShapeSelection()) {
        KisTransformWorker tw(selection->projection(), m_sx, m_sy, m_shearx, m_sheary,
                              m_shearOrigin.x(), m_shearOrigin.y(),
                              m_angle, m_tx, m_ty, 0,
                              m_filter);

        KUndo2Command* command =
            selection->shapeSelection()->transform(tw.transform() * m_shapesCorrection);
        if (command) {
            adapter->addCommand(command);
        }
    }

    selection->updateProjection();
}
Beispiel #21
0
void emit_declarations( const wrSourceFile& srcFile )
{
	OSFileName		fileName = GetDestFileName( srcFile.name, WR_HEADER_FILE_EXT );
	FileWriter		outputStream( fileName.ToChars() );
	mxTextWriter	tw( &outputStream );

	tw	<< MXC("/* This ALWAYS GENERATED file contains the definitions for the interfaces */\n")
		<< MXC("/* File created by HLSL wrapper generator version ") << WR_VERSION_STRING << MXC(" ") << GetCurrentDateTimeString() << MXC(" */\n")
		;
	tw	<< MXC("namespace ") << WR_NAMESPACE << MXC("\n{\n");

	tw	<< MXC("// Render targets\n");
	emit_render_target_declarations( srcFile.renderTargets, tw );

	tw	<< MXC("// Sampler states\n");
	emit_sampler_state_declarations( srcFile.samplerStates, tw );

	tw	<< MXC("// Depth-stencil states\n");
	emit_depth_stencil_states_declarations( srcFile.depthStencilStates, tw );

	tw << MXC("\n}//namespace ") << WR_NAMESPACE << MXC("\n");
}
int main()
{
    init_python_api("b513b7b1-b0d8-4495-b3f0-54c2ef3f27f6");

    setup_test_functions();

    Entity wrld("0", 0);
    TestWorld tw(wrld);

    run_python_string("from server import *");
    run_python_string("import testprop");
    run_python_string("t=Thing('1')");
    expect_python_error("t.line", PyExc_AttributeError);
    expect_python_error("t.statistics", PyExc_AttributeError);
    expect_python_error("t.terrain", PyExc_AttributeError);
    run_python_string("testprop.add_properties(t)");
    run_python_string("t.line");
    run_python_string("t.statistics");
    run_python_string("t.terrain");


    shutdown_python_api();
    return 0;
}
Beispiel #23
0
Bool OutputControl::CheckInput(Bool Pause)
#endif
	{
	if (User.Continuous)
		{
		Pause = FALSE;
		}

	if (User.ControlD)
		{
		tw()KBReady();			// for screenblanker
		SetOutFlag(OUTSKIP);	// Auto-Stop everything
		return (TRUE);
		}

	// Cannot abort IMPERVIOUS
	if (User.GetOutFlag() == IMPERVIOUS)
		{
		tw()KBReady();			// for screenblanker
		return (FALSE);
		}

	// Carrier loss and not on Console
	if (!tw()HaveConnectionToUser())
		{
		SetOutFlag(OUTSKIP);
		return (TRUE);
		}

	Bool toReturn = FALSE;

	// Check for keypress
	if (tw()BBSCharReady() || Pause)
		{
		int c;

		if (!Pause)
			{
			c = toupper(tw()iCharNE());
			}

		if (Pause || c == 'P' || c == 19)   // P or ^S (XOFF) - Pause
			{
			if (Pause)
				{
				char Buffer[80];
				tw()CurrentUser->GetMorePrompt(Buffer, sizeof(Buffer));

				if (!tw()outSpeech(TRUE, tw()loggedIn ? Buffer : cfg.moreprompt))
					{
					tw()putWord((uchar *) (tw()loggedIn ? Buffer : cfg.moreprompt));
					}
				}

			do
				{
				// wait to resume
				c = toupper(tw()iCharNE());
				} while (!tw()CurrentUser->IsPUnPauses() && (c == 'P' || c == 19));

			if (Pause)
				{
				char Buffer[80];
				int i, backspace = strlen(tw()loggedIn ?
						tw()CurrentUser->GetMorePrompt(Buffer, sizeof(Buffer)) : cfg.moreprompt);

				for (i = 0; i < backspace; i++)
					{
					tw()doBS();
					}
				}
			}

		if (User.GetOutFlag() == NOSTOP)
			{
			return (FALSE);
			}

		const Bool WasFormatting = Formatting;
		Formatting = TRUE;

		switch (c)
			{
			case CTRL_D:
				{
				User.ControlD = TRUE;
				SetOutFlag(OUTSKIP);

				toReturn = TRUE;
				break;
				}

			case '9':
				{
				if (tw()hitSix)
					{
					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (!tw()outSpeech(TRUE, getmsg(69)))
						{
						tw()putWord((uchar *) getmsg(69));
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					tw()doCR();
					}

				break;
				}

			case 'J':                               // jump paragraph
				{
				tw()doCR();

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(327));

				tw()termCap(TERM_BOLD);
				if (!tw()outSpeech(TRUE, getmsg(547)))
					{
					tw()putWord((uchar *) getmsg(547));
					}

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(326));

				tw()doCR();

				SetOutFlag(OUTPARAGRAPH);

				break;
				}

			case 'K':                               // kill
				{
				if (User.CanK)
					{
					tw()MRO.DotoMessage = PULL_IT;

					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (!tw()outSpeech(TRUE, getmsg(546)))
						{
						tw()putWord((uchar *) getmsg(546));
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					SetOutFlag(OUTNEXT);

					toReturn = TRUE;
					}

				break;
				}

			case 'M':                               // mark
				{
				if (User.CanM)
					{
					tw()MRO.DotoMessage = MARK_IT;

					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (!tw()outSpeech(TRUE, getmsg(543)))
						{
						tw()putWord((uchar *) getmsg(543));
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					SetOutFlag(OUTNEXT);

					toReturn = TRUE;
					}

				break;
				}

			case '*':                               // censor
				{
				if (User.CanStar)
					{
					tw()MRO.DotoMessage = CENSOR_IT;

					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (!tw()outSpeech(TRUE, getmsg(538)))
						{
						tw()putWord((uchar *) getmsg(538));
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					SetOutFlag(OUTNEXT);

					toReturn = TRUE;
					}

				break;
				}

			case 'N':                               // next
				{
				tw()doCR();

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(327));

				tw()termCap(TERM_BOLD);
				if (!tw()outSpeech(TRUE, getmsg(537)))
					{
					tw()putWord((uchar *) getmsg(537));
					}

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(326));

				tw()doCR();
				SetOutFlag(OUTNEXT);

				toReturn = TRUE;
				break;
				}

			case 'S':                               // stop
				{
				tw()numLines = 0;	// Don't pause for stop!

				tw()doCR();

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(327));

				tw()termCap(TERM_BOLD);
				if (!tw()outSpeech(TRUE, getmsg(528)))
					{
					tw()putWord((uchar *) getmsg(528));
					}

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(326));

				tw()doCR();
				SetOutFlag(OUTSKIP);

				toReturn = TRUE;
				break;
				}

			case 'C':                               // continuous
				{
				tw()doCR();

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(327));

				tw()termCap(TERM_BOLD);
				if (!User.Continuous)
					{
					if (!tw()outSpeech(TRUE, getmsg(527)))
						{
						tw()putWord((uchar *) getmsg(527));
						}
					}
				else
					{
					if (!tw()outSpeech(TRUE, getmsg(526)))
						{
						tw()putWord((uchar *) getmsg(526));
						}
					}

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(326));

				User.Continuous = !User.Continuous;

				tw()doCR();

				break;
				}

			case 'R':
				{
				if (User.CanR)
					{
					tw()MRO.DotoMessage = REVERSE_READ;
					SetOutFlag(OUTNEXT);
					}

				break;
				}

			case 'V':
				{
				tw()MRO.Verbose = !tw()MRO.Verbose;

				tw()doCR();

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(327));

				tw()termCap(TERM_BOLD);
				if (tw()MRO.Verbose)
					{
					if (!tw()outSpeech(TRUE, getmsg(524)))
						{
						tw()putWord((uchar *) getmsg(524));
						}
					}
				else
					{
					if (!tw()outSpeech(TRUE, getmsg(519)))
						{
						tw()putWord((uchar *) getmsg(519));
						}
					}

				tw()termCap(TERM_NORMAL);
				tw()putWord((const uchar *) getmsg(326));

				tw()doCR();

				break;
				}

			case '!':
				{
				if (User.CanBang)
					{
					tw()MRO.Headerscan = !tw()MRO.Headerscan;

					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (tw()MRO.Headerscan)
						{
						if (!tw()outSpeech(TRUE, getmsg(517)))
							{
							tw()putWord((uchar *) getmsg(517));
							}
						}
					else
						{
						if (!tw()outSpeech(TRUE, getmsg(511)))
							{
							tw()putWord((uchar *) getmsg(511));
							}
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					tw()doCR();
					}

				break;
				}

			case '@':
				{
				if (User.CanAt)
					{
					tw()MRO.DotoMessage = REPLY;

					tw()doCR();

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(327));

					tw()termCap(TERM_BOLD);
					if (!tw()outSpeech(TRUE, getmsg(470)))
						{
						tw()putWord((uchar *) getmsg(470));
						}

					tw()termCap(TERM_NORMAL);
					tw()putWord((const uchar *) getmsg(326));

					tw()doCR();
					}

				break;
				}
			}

		Formatting = WasFormatting;

		if (c == '6')
			{
			tw()hitSix = TRUE;
			}
		else
			{
			tw()hitSix = FALSE;
			}
		}

	return (toReturn);
	}
Beispiel #24
0
	/*static*/ bool ReflectionInfo::WriteDefinitions()
	{
		uint32_t numProblems = 0;

		const ReflectionInfo * ri = s_FirstReflectionInfo;
		for ( ; ri != nullptr; ri = ri->m_Next )
		{
			// ignore abstract classes
			if ( ri->IsAbstract() )
			{
				continue;
			}

			// Serialize a default instance to a MemoryStream 
			MemoryStream ms;
			{
				// Create and serialize default instance
				if ( ri->IsObject() )
				{
					RefObject * object = ri->CreateObject();
					{
						TextWriter tw( ms );
						tw.Write( object );
					}
					FDELETE( object );
				}
				else
				{
					ASSERT( ri->IsStruct() )
					Struct * str = ri->CreateStruct();
					{
						TextWriter tw( ms );
						tw.Write( str, ri );
					}
					FDELETE( str );
				}
			}

			AStackString<> fileName; 
			fileName.Format( "..\\Data\\Reflection\\.Definitions\\%s.definition", ri->GetTypeName() );

			// avoid writing file if not changed

			// Try to open existing file
			FileStream f;
			if ( f.Open( fileName.Get(), FileStream::READ_ONLY ) )
			{
				// read content
				const uint64_t fileSize = f.GetFileSize();
				if ( fileSize == ms.GetSize() )
				{
					AutoPtr< char > mem( (char *)Alloc( (size_t)fileSize ) );
					if ( f.Read( mem.Get(), (size_t)fileSize ) == fileSize )
					{
						if ( memcmp( mem.Get(), ms.GetData(), (size_t)fileSize ) == 0 )
						{
							continue; // definition has not changed
						}
					}
				}
				f.Close();
			}

			// Definition changed - try to save it

			int result = 0;
			AutoPtr< char > memOut;
			AutoPtr< char > memErr;
			uint32_t memOutSize;
			uint32_t memErrSize;

			// existing definition?
			if ( FileIO::FileExists( fileName.Get() ) )
			{
				// existing - need to open for edit?
				if ( FileIO::GetReadOnly( fileName ) )
				{
					AStackString<> args( "edit " );
					args += fileName;
					Process p;
					if ( p.Spawn( "p4", args.Get(), nullptr, nullptr ) )
					{
						p.ReadAllData( memOut, &memOutSize, memErr, &memErrSize );
						result = p.WaitForExit();
					}
				}
			}
			else
			{
				// new - open for add
				AStackString<> args( "add " );
				args += fileName;
				Process p;
				if ( p.Spawn( "p4", args.Get(), nullptr, nullptr ) )
				{
					p.ReadAllData( memOut, &memOutSize, memErr, &memErrSize );
					result = p.WaitForExit();
				}
			}

			if ( result == 0 )
			{ 
				if ( f.Open( fileName.Get(), FileStream::WRITE_ONLY ) )
				{
					if ( f.Write( ms.GetData(), ms.GetSize() ) == ms.GetSize() )
					{
						continue; // all ok!
					}
				}
			}

			// PROBLEM!
			OUTPUT( "Error writing definition '%s'\n", fileName.Get() );
			if ( result != 0 )
			{
				OUTPUT( "Perforce error: %s\n", memErr.Get() );
			}
			++numProblems;
		}
		if ( numProblems > 0 )
		{
			FATALERROR( "Problem writing %u definition(s).\n", numProblems );
		}
		return ( numProblems == 0 );
	}
Beispiel #25
0
static void s_TestGMT(int idx)
{
    // Write time in timezone format
    {{   
        CTime::SetFormat("M/D/Y h:m:s Z");
        CTime t1(2001, 3, 12, 11, 22, 33, 999, CTime::eGmt);
        assert(t1.AsString() == "03/12/2001 11:22:33 GMT");
        CTime t2(2001, 3, 12, 11, 22, 33, 999, CTime::eLocal);
        assert(t2.AsString() == "03/12/2001 11:22:33 ");
    }}

    // Process timezone string
    {{   
        CTime t;
        t.SetFormat("M/D/Y h:m:s Z");
        t="03/12/2001 11:22:33 GMT";
        assert(t.AsString() == "03/12/2001 11:22:33 GMT");
        t="03/12/2001 11:22:33 ";
        assert(t.AsString() == "03/12/2001 11:22:33 ");
    }}

    // Day of week
    {{   
        CTime t(2001, 4, 1);
        t.SetFormat("M/D/Y h:m:s w");
        int i;
        for (i=0; t<=CTime(2001, 4, 10); t.AddDay(),i++) {
            assert(t.DayOfWeek() == (i%7));
        }
    }}

    // Test GetTimeT
    {{  
        time_t timer = time(0);
        CTime tgmt(CTime::eCurrent, CTime::eGmt, CTime::eTZPrecisionDefault);
        CTime tloc(CTime::eCurrent, CTime::eLocal, CTime::eTZPrecisionDefault);
        CTime t(timer);
        // Set the same time to all time objects
        tgmt.SetTimeT(timer);
        tloc.SetTimeT(timer);

        assert(timer == t.GetTimeT());
        assert(timer == tgmt.GetTimeT());
        // On the day of changing to summer/winter time, the local time
        // converted to GMT may differ from the value returned by time(0),
        // because in the common case API don't know if DST is in effect for
        // specified local time or not (see mktime()).
        time_t l_ = tloc.GetTimeT();
        if (timer != l_ ) {
            if ( abs((int)(timer - l_)) > 3600 )
                assert(timer == l_);
        }
    }}

    // Test TimeZoneOffset (1) -- EST timezone only
    {{   
        CTime tw(2001, 1, 1, 12); 
        CTime ts(2001, 6, 1, 12);
        assert(tw.TimeZoneOffset() / 3600 == -5);
        assert(ts.TimeZoneOffset()/3600 == -4);
    }}

    // Test TimeZoneOffset (2) -- EST timezone only
    {{   
        CTime tw(2001, 6, 1, 12); 
        CTime ts(2002, 1, 1, 12);
        assert(tw.TimeZoneOffset() / 3600 == -4);
        assert(ts.TimeZoneOffset() / 3600 == -5);
    }}

    // Test AdjustTime
    {{   
        CTime::SetFormat("M/D/Y h:m:s");
        CTime t("03/11/2007 01:01:00");
        CTime tn;
        t.SetTimeZonePrecision(CTime::eTZPrecisionDefault);

        // GMT
        t.SetTimeZone(CTime::eGmt);
        tn = t;
        tn.AddDay(5);  
        assert(tn.AsString() == "03/16/2007 01:01:00");
        tn = t;
        tn.AddDay(40); 
        assert(tn.AsString() == "04/20/2007 01:01:00");

        // Local eNone
        t.SetTimeZone(CTime::eLocal);
        t.SetTimeZonePrecision(CTime::eNone);
        tn = t;
        tn.AddDay(5);
        assert(tn.AsString() == "03/16/2007 01:01:00");
        tn = t;
        tn.AddDay(40);
        assert(tn.AsString() == "04/20/2007 01:01:00");

        //Local eMonth
        t.SetTimeZonePrecision(CTime::eMonth);
        tn = t;
        tn.AddDay(5);
        assert(tn.AsString() == "03/16/2007 01:01:00");
        tn = t; 
        tn.AddMonth(-1);
        assert(tn.AsString() == "02/11/2007 01:01:00");
        tn = t; 
        tn.AddMonth(+1);
        assert(tn.AsString() == "04/11/2007 02:01:00");

        // Local eDay
        t.SetTimeZonePrecision(CTime::eDay);
        tn = t;
        tn.AddDay(-1); 
        assert(tn.AsString() == "03/10/2007 01:01:00");
        tn.AddDay();   
        assert(tn.AsString() == "03/11/2007 01:01:00");
        tn = t;
        tn.AddDay(); 
        assert(tn.AsString() == "03/12/2007 02:01:00");

        // Local eHour
        t.SetTimeZonePrecision(CTime::eHour);
        tn = t; 
        tn.AddHour(-3);
        CTime te = t; 
        te.AddHour(3);
        assert(tn.AsString() == "03/10/2007 22:01:00");
        assert(te.AsString() == "03/11/2007 05:01:00");
        CTime th = tn; 
        th.AddHour(49);
        assert(th.AsString() == "03/13/2007 00:01:00");

        tn = "11/04/2007 00:01:00"; 
        tn.SetTimeZonePrecision(CTime::eHour);
        te = tn; 
        tn.AddHour(-3); 
        te.AddHour(9);
        assert(tn.AsString() == "11/03/2007 21:01:00");
        assert(te.AsString() == "11/04/2007 08:01:00");
        th = tn; 
        th.AddHour(49);
        assert(th.AsString() == "11/05/2007 21:01:00");

        tn = "11/04/2007 09:01:00"; 
        tn.SetTimeZonePrecision(CTime::eHour);
        te = tn; 
        tn.AddHour(-10); 
        te.AddHour(+10);
        assert(tn.AsString() == "11/04/2007 00:01:00");
        assert(te.AsString() == "11/04/2007 19:01:00");
    }}
}
Beispiel #26
0
int main()
{
    // We have to use the TestWorld class, as it implements the functions
    // missing from BaseWorld interface.

    {
        // Test constructor
        Entity wrld("1", 1);
        TestWorld tw(wrld);
    }

    {
        // Test destructor
        Entity wrld("1", 1);
        BaseWorld * tw = new TestWorld(wrld);

        delete tw;
    }

    {
        // Test constructor sets singleton pointer
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        assert(&BaseWorld::instance() == &tw);
    }

    {
        // Test constructor installs reference to world entity
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        assert(&tw.m_gameWorld == &wrld);
    }

    {
        // Test retrieving non existant entity by string ID is ok
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        assert(tw.getEntity("2") == 0);
    }

    {
        // Test retrieving existant entity by string ID is ok
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        Entity * tc = new Entity("2", 2);

        tw.addEntity(tc);

        assert(tw.getEntity("2") == tc);
    }

    {
        // Test retrieving existant entity by integer ID is ok
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        Entity * tc = new Entity("2", 2);

        tw.addEntity(tc);

        assert(tw.getEntity(2) == tc);
    }

    {
        // Test retrieving non existant entity by integer ID is ok
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        assert(tw.getEntity(2) == 0);
    }

    {
        // Test retrieving reference to all entities is okay and empty
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        assert(tw.getEntities().size() == 1);
    }

    {
        // Test getting the time
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        tw.getTime();
    }

    {
        // Test getting the uptime
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        tw.upTime();
    }

    {
        // Test connecting to the dispatch signal
        Entity wrld("1", 1);
        TestWorld tw(wrld);

        tw.Dispatching.connect(sigc::ptr_fun(&test_function));
    }

    return 0;
}
inline void MacroAssembler::trap_range_check_ge(Register a, Register b) {
  tw (traptoEqual | traptoGreaterThanUnsigned, a/*reg a*/, b/*reg b*/);
}
// SIGTRAP-based range checks for arrays.
inline void MacroAssembler::trap_range_check_l(Register a, Register b) {
  tw (traptoLessThanUnsigned,                  a/*reg a*/, b/*reg b*/);
}
Beispiel #29
0
static int crypt(struct blkcipher_desc *d,
		 struct blkcipher_walk *w, struct priv *ctx,
		 void (*tw)(struct crypto_tfm *, u8 *, const u8 *),
		 void (*fn)(struct crypto_tfm *, u8 *, const u8 *))
{
	int err;
	unsigned int avail;
	const int bs = XTS_BLOCK_SIZE;
	struct sinfo s = {
		.tfm = crypto_cipher_tfm(ctx->child),
		.fn = fn
	};
	u8 *wsrc;
	u8 *wdst;

	err = blkcipher_walk_virt(d, w);
	if (!w->nbytes)
		return err;

	s.t = (be128 *)w->iv;
	avail = w->nbytes;

	wsrc = w->src.virt.addr;
	wdst = w->dst.virt.addr;

	
	tw(crypto_cipher_tfm(ctx->tweak), w->iv, w->iv);

	goto first;

	for (;;) {
		do {
			gf128mul_x_ble(s.t, s.t);

first:
			xts_round(&s, wdst, wsrc);

			wsrc += bs;
			wdst += bs;
		} while ((avail -= bs) >= bs);

		err = blkcipher_walk_done(d, w, avail);
		if (!w->nbytes)
			break;

		avail = w->nbytes;

		wsrc = w->src.virt.addr;
		wdst = w->dst.virt.addr;
	}

	return err;
}

static int encrypt(struct blkcipher_desc *desc, struct scatterlist *dst,
		   struct scatterlist *src, unsigned int nbytes)
{
	struct priv *ctx = crypto_blkcipher_ctx(desc->tfm);
	struct blkcipher_walk w;

	blkcipher_walk_init(&w, dst, src, nbytes);
	return crypt(desc, &w, ctx, crypto_cipher_alg(ctx->tweak)->cia_encrypt,
		     crypto_cipher_alg(ctx->child)->cia_encrypt);
}

static int decrypt(struct blkcipher_desc *desc, struct scatterlist *dst,
		   struct scatterlist *src, unsigned int nbytes)
{
	struct priv *ctx = crypto_blkcipher_ctx(desc->tfm);
	struct blkcipher_walk w;

	blkcipher_walk_init(&w, dst, src, nbytes);
	return crypt(desc, &w, ctx, crypto_cipher_alg(ctx->tweak)->cia_encrypt,
		     crypto_cipher_alg(ctx->child)->cia_decrypt);
}

int xts_crypt(struct blkcipher_desc *desc, struct scatterlist *sdst,
	      struct scatterlist *ssrc, unsigned int nbytes,
	      struct xts_crypt_req *req)
{
	const unsigned int bsize = XTS_BLOCK_SIZE;
	const unsigned int max_blks = req->tbuflen / bsize;
	struct blkcipher_walk walk={};
	unsigned int nblocks;
	be128 *src, *dst, *t;
	be128 *t_buf = req->tbuf;
	int err, i;

	BUG_ON(max_blks < 1);

	blkcipher_walk_init(&walk, sdst, ssrc, nbytes);

	err = blkcipher_walk_virt(desc, &walk);
	nbytes = walk.nbytes;
	if (!nbytes)
		return err;

	nblocks = min(nbytes / bsize, max_blks);
	src = (be128 *)walk.src.virt.addr;
	dst = (be128 *)walk.dst.virt.addr;

	
	req->tweak_fn(req->tweak_ctx, (u8 *)&t_buf[0], walk.iv);

	i = 0;
	goto first;

	for (;;) {
		do {
			for (i = 0; i < nblocks; i++) {
				gf128mul_x_ble(&t_buf[i], t);
first:
				t = &t_buf[i];

				
				be128_xor(dst + i, t, src + i);
			}

			
			req->crypt_fn(req->crypt_ctx, (u8 *)dst,
				      nblocks * bsize);

			
			for (i = 0; i < nblocks; i++)
				be128_xor(dst + i, dst + i, &t_buf[i]);

			src += nblocks;
			dst += nblocks;
			nbytes -= nblocks * bsize;
			nblocks = min(nbytes / bsize, max_blks);
		} while (nblocks > 0);

		*(be128 *)walk.iv = *t;

		err = blkcipher_walk_done(desc, &walk, nbytes);
		nbytes = walk.nbytes;
		if (!nbytes)
			break;

		nblocks = min(nbytes / bsize, max_blks);
		src = (be128 *)walk.src.virt.addr;
		dst = (be128 *)walk.dst.virt.addr;
	}

	return err;
}
EXPORT_SYMBOL_GPL(xts_crypt);

static int init_tfm(struct crypto_tfm *tfm)
{
	struct crypto_cipher *cipher;
	struct crypto_instance *inst = (void *)tfm->__crt_alg;
	struct crypto_spawn *spawn = crypto_instance_ctx(inst);
	struct priv *ctx = crypto_tfm_ctx(tfm);
	u32 *flags = &tfm->crt_flags;

	cipher = crypto_spawn_cipher(spawn);
	if (IS_ERR(cipher))
		return PTR_ERR(cipher);

	if (crypto_cipher_blocksize(cipher) != XTS_BLOCK_SIZE) {
		*flags |= CRYPTO_TFM_RES_BAD_BLOCK_LEN;
		crypto_free_cipher(cipher);
		return -EINVAL;
	}

	ctx->child = cipher;

	cipher = crypto_spawn_cipher(spawn);
	if (IS_ERR(cipher)) {
		crypto_free_cipher(ctx->child);
		return PTR_ERR(cipher);
	}

	
	if (crypto_cipher_blocksize(cipher) != XTS_BLOCK_SIZE) {
		crypto_free_cipher(cipher);
		crypto_free_cipher(ctx->child);
		*flags |= CRYPTO_TFM_RES_BAD_BLOCK_LEN;
		return -EINVAL;
	}

	ctx->tweak = cipher;

	return 0;
}

static void exit_tfm(struct crypto_tfm *tfm)
{
	struct priv *ctx = crypto_tfm_ctx(tfm);
	crypto_free_cipher(ctx->child);
	crypto_free_cipher(ctx->tweak);
}

static struct crypto_instance *alloc(struct rtattr **tb)
{
	struct crypto_instance *inst;
	struct crypto_alg *alg;
	int err;

	err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_BLKCIPHER);
	if (err)
		return ERR_PTR(err);

	alg = crypto_get_attr_alg(tb, CRYPTO_ALG_TYPE_CIPHER,
				  CRYPTO_ALG_TYPE_MASK);
	if (IS_ERR(alg))
		return ERR_CAST(alg);

	inst = crypto_alloc_instance("xts", alg);
	if (IS_ERR(inst))
		goto out_put_alg;

	inst->alg.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER;
	inst->alg.cra_priority = alg->cra_priority;
	inst->alg.cra_blocksize = alg->cra_blocksize;

	if (alg->cra_alignmask < 7)
		inst->alg.cra_alignmask = 7;
	else
		inst->alg.cra_alignmask = alg->cra_alignmask;

	inst->alg.cra_type = &crypto_blkcipher_type;

	inst->alg.cra_blkcipher.ivsize = alg->cra_blocksize;
	inst->alg.cra_blkcipher.min_keysize =
		2 * alg->cra_cipher.cia_min_keysize;
	inst->alg.cra_blkcipher.max_keysize =
		2 * alg->cra_cipher.cia_max_keysize;

	inst->alg.cra_ctxsize = sizeof(struct priv);

	inst->alg.cra_init = init_tfm;
	inst->alg.cra_exit = exit_tfm;

	inst->alg.cra_blkcipher.setkey = setkey;
	inst->alg.cra_blkcipher.encrypt = encrypt;
	inst->alg.cra_blkcipher.decrypt = decrypt;

out_put_alg:
	crypto_mod_put(alg);
	return inst;
}

static void free(struct crypto_instance *inst)
{
	crypto_drop_spawn(crypto_instance_ctx(inst));
	kfree(inst);
}
Beispiel #30
0
void StatusLineC::ToggleHelp(WC_TW)
	{
	if (!Visible)
		{
#ifdef WINCIT
		Toggle(TW);
#else
		Toggle();
#endif
		}
	else
		{
		int row = tw()logiRow, col = tw()logiCol;

		// small window?
		if (!HelpTimeout)
			{
			if (LockMessages(MSG_HELP))
				{
				// Make big window...

				time(&HelpTimeout);

				scrollpos = conRows - Height();

				if (row > scrollpos)
					{
					tw()scroll(row, row - scrollpos, cfg.attr);
					row = scrollpos;
					}
				}
			}
		else
			{
			// Make small window...

			HelpTimeout = 0;

			if (State == SL_TWOLINES)
				{
				tw()clearline(conRows - 5, cfg.attr);
				}

			tw()clearline(conRows - 4, cfg.attr);
			tw()clearline(conRows - 3, cfg.attr);
			tw()clearline(conRows - 2, cfg.attr);
			tw()clearline(conRows - 1, cfg.attr);

			scrollpos = conRows - Height();

			UnlockMessages(MSG_HELP);
			}

		tw()position(row, col);
		updateStatus = TRUE;

#ifdef WINCIT
		Update(TW);
#else
		Update();
#endif
		}
	}