Beispiel #1
0
AnimExpression::OpCode AnimExpression::coerseToValue(const AnimVariantMap& map, const OpCode& opCode) const {
    switch (opCode.type) {
    case OpCode::Identifier:
        {
            const AnimVariant& var = map.get(opCode.strVal);
            switch (var.getType()) {
            case AnimVariant::Type::Bool:
                return OpCode((bool)var.getBool());
                break;
            case AnimVariant::Type::Int:
                return OpCode(var.getInt());
                break;
            case AnimVariant::Type::Float:
                return OpCode(var.getFloat());
                break;
            default:
                // TODO: Vec3, Quat are unsupported
                assert(false);
                return OpCode(0);
                break;
            }
        }
        break;
    case OpCode::Bool:
    case OpCode::Int:
    case OpCode::Float:
        return opCode;
    default:
        qCCritical(animation) << "AnimExpression: ERROR expected a number, type = " << opCode.type;
        assert(false);
        return OpCode(0);
        break;
    }
}
Beispiel #2
0
//
// Borrar Líneas de Nombre de Fantasía, Encabezado y Cola
//
// Nota: en este modelo solo se tienen en cuenta los flags de borrado
//       de Encabezado y Cola (ya que no reconoce Líneas de Fantasía).
//
void
ImpresorFiscalP950_100::BorrarFantasiaEncabezadoCola (bool BorrarFantasia, bool BorrarEncabezado, bool BorrarCola) throw (Excepcion)
{
	// printf ("Comando BorrarFantasiaEncabezadoCola ejecutado en P950_100\n");
	
	if ( BorrarEncabezado )
		for ( unsigned Linea = First_Header_Line; Linea <= Last_Header_Line; Linea++ )
			EnviarComandoFiscal(OpCode(CMD_SET_HEADER_TRAILER) + FS +
								Numero (Linea) + FS + ERASE_LINE);

	if ( BorrarCola )
		for ( unsigned Linea = First_Trailer_Line; Linea <= Last_Trailer_Line; Linea++ )
			EnviarComandoFiscal(OpCode(CMD_SET_HEADER_TRAILER) + FS +
								Numero (Linea) + FS + ERASE_LINE);
}
bool CDumpMemory::DumpMemory(LPCSTR FileName, DumpFormat Format, DWORD StartPC, DWORD EndPC, DWORD /*DumpPC*/)
{
    switch (Format)
    {
    case DisassemblyWithPC:
    {
        CLog LogFile;
        if (!LogFile.Open(FileName))
        {
            g_Notify->DisplayError(stdstr_f("Failed to open\n%s", FileName).c_str());
            return false;
        }
        LogFile.SetFlush(false);
        LogFile.SetTruncateFile(false);
        g_Notify->BreakPoint(__FILE__, __LINE__);
#ifdef legacycode
        char Command[200];
        for (COpcode OpCode(StartPC);  OpCode.PC() < EndPC; OpCode.Next())
        {
            const char * szOpName = OpCode.OpcodeName();
            OpCode.OpcodeParam(Command);
            LogFile.LogF("%X: %-15s%s\r\n",OpCode.PC(),szOpName,Command);
        }
#endif
        m_StartAddress.SetValue(StartPC, true, true);
        m_EndAddress.SetValue(EndPC, true, true);
        return true;
    }
    break;
    }
    return false;
}
Beispiel #4
0
//
// Cortar Papel
//
void
ImpresorFiscalP950_100::CortarPapel () throw (Excepcion)
{
    // printf ("Comando CortarPapel ejecutado en P950_100\n");

	// Enviamos el comando fiscal y evaluamos los status
	EnviarComandoFiscal(OpCode(CMD_CUT_NON_FISCAL_RECEIPT));
}
Beispiel #5
0
//
// Descuento General
//
// Nota: en este modelo (por no contar con el comando asociado)
//		 este método se implementa como una venta.
//
void
ImpresorFiscalP950_100::DescuentoGeneral (const std::string &Texto, double Monto, bool EnNegativo) throw (Excepcion)
{
    // printf ("Comando DescuentoGeneral ejecutado en P950_100\n");

	unsigned PrintItemTextSize = PrintItemTextTicketSize;

	assert(PrintItemTextSize != 0);

	// Enviamos el comando fiscal y evaluamos los status
	EnviarComandoFiscal(OpCode(CMD_PRINT_LINE_ITEM) + FS +
								Cadena (Texto, PrintItemTextSize) + FS +
								Numero (1, 10) + FS +
								Numero (Monto, PriceDecimals) + FS +
								Cadena ("**.**", 5) + FS +
								(EnNegativo ? "m" : "M") + FS +
								Numero (0, 2) + FS +
								Caracter (ModoDisplay) + FS +
								Caracter (ModalidadPrecio));

	// Reinicializamos 'LastIVA' y 'LastII'
	LastIVA = -1;
	LastII	= -1;
}
Beispiel #6
0
void random_setup(
    size_t                                    num_var    ,
    const pod_vector<opcode_t>&               op_vec     ,
    const pod_vector<addr_t>&                 arg_vec    ,
    pod_vector<Addr>*                         op2arg_vec ,
    pod_vector<Addr>*                         op2var_vec ,
    pod_vector<Addr>*                         var2op_vec )
{
    if( op2arg_vec->size() != 0 )
    {   CPPAD_ASSERT_UNKNOWN( op2arg_vec->size() == op_vec.size() );
        CPPAD_ASSERT_UNKNOWN( op2var_vec->size() == op_vec.size() );
        CPPAD_ASSERT_UNKNOWN( var2op_vec->size() == num_var        );
        return;
    }
    CPPAD_ASSERT_UNKNOWN( op2var_vec->size() == 0         );
    CPPAD_ASSERT_UNKNOWN( op2var_vec->size() == 0         );
    CPPAD_ASSERT_UNKNOWN( var2op_vec->size() == 0         );
    CPPAD_ASSERT_UNKNOWN( OpCode( op_vec[0] ) == BeginOp );
    CPPAD_ASSERT_NARG_NRES(BeginOp, 1, 1);
    //
    size_t num_op     = op_vec.size();
    size_t  var_index = 0;
    size_t  arg_index = 0;
    //
    op2arg_vec->resize( num_op );
    op2var_vec->resize( num_op );
    var2op_vec->resize( num_var  );
# ifndef NDEBUG
    // value of var2op for auxillary variables is num_op (invalid)
    for(size_t i_var = 0; i_var < num_var; ++i_var)
        (*var2op_vec)[i_var] = Addr( num_op );
    // value of op2var is num_var (invalid) when NumRes(op) = 0
    for(size_t i_op = 0; i_op < num_op; ++i_op)
        (*op2var_vec)[i_op] = Addr( num_var );
# endif
    for(size_t i_op = 0; i_op < num_op; ++i_op)
    {   OpCode  op          = OpCode( op_vec[i_op] );
        //
        // index of first argument for this operator
        (*op2arg_vec)[i_op]   = Addr( arg_index );
        arg_index            += NumArg(op);
        //
        // index of first result for next operator
        var_index  += NumRes(op);
        if( NumRes(op) > 0 )
        {   // index of last (primary) result for this operator
            (*op2var_vec)[i_op] = Addr( var_index - 1 );
            //
            // mapping from primary variable to its operator
            (*var2op_vec)[var_index - 1] = Addr( i_op );
        }
        // CSumOp
        if( op == CSumOp )
        {   CPPAD_ASSERT_UNKNOWN( NumArg(CSumOp) == 0 );
            //
            // pointer to first argument for this operator
            const addr_t* op_arg = arg_vec.data() + arg_index;
            //
            // The actual number of arugments for this operator is
            // op_arg[4] + 1
            // Correct index of first argument for next operator
            arg_index += size_t(op_arg[4] + 1);
        }
        //
        // CSkip
        if( op == CSkipOp )
        {   CPPAD_ASSERT_UNKNOWN( NumArg(CSumOp) == 0 );
            //
            // pointer to first argument for this operator
            const addr_t* op_arg = arg_vec.data() + arg_index;
            //
            // The actual number of arugments for this operator is
            // 7 + op_arg[4] + op_arg[5].
            // Correct index of first argument for next operator.
            arg_index += size_t(7 + op_arg[4] + op_arg[5]);
        }
    }
}
Beispiel #7
0
GimpleNode* AstFilterState::gimplify(FlowGraph* thisGraph){
    GimpleStatement* gimpleStmt = new GimpleStatement(OpCode('*'),outFrame, inFrame, filterKernel );
    thisGraph->appandGimpleNode(gimpleStmt);
    return gimpleStmt;
}