Exemplo n.º 1
0
static Value mathAbs(Context *ctx, const List<Value>& args)
{
    if (args.getCount() != 1)
    {
        ctx->throwException(createException(ExcType::ValueError, "abs takes only one argument."));
    }

    switch (args[0].type)
    {
    case ValueType::Float:
    {
        return createFloat(std::abs(args[0].f));
    }
    case ValueType::Int:
    {
        return createInt(std::llabs(args[0].i));
    }
    default:
    {
        ctx->throwException(createException(ExcType::TypeError, "Value is not convertable to float."));
    }
    }

    SDL_assert_release(false);
    return createInt(0);
}
Exemplo n.º 2
0
XMLElem ComplexXMLParser10x::convertMatchInformationToXML(
    const MatchInformation* matchInfo, 
    XMLElem parent) const
{
    XMLElem matchInfoXML = newElement("MatchInfo", parent);

    createInt("NumMatchTypes", 
              matchInfo->types.size(),
              matchInfoXML);

    for (size_t i = 0; i < matchInfo->types.size(); ++i)
    {
        const MatchType* mt = matchInfo->types[i].get();
        XMLElem mtXML = newElement("MatchType", matchInfoXML);
        setAttribute(mtXML, "index", str::toString(i + 1));

        createString("TypeID", mt->typeID, mtXML);
        createInt("CurrentIndex", mt->currentIndex, mtXML);
        createInt("NumMatchCollections", mt->matchCollects.size(), mtXML);

        for (size_t j = 0; j < mt->matchCollects.size(); ++j)
        {
            XMLElem mcXML = newElement("MatchCollection", mtXML);
            setAttribute(mcXML, "index", str::toString(j + 1));

            createString("CoreName", mt->matchCollects[j].coreName, mcXML);
            createInt("MatchIndex", mt->matchCollects[j].matchIndex, mcXML);
            common().addParameters("Parameter", 
                mt->matchCollects[j].parameters, mcXML);
        }
    }

    return matchInfoXML;
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: sunneo/libs
int main ( int argc, char *argv[] )
{
   List* list = list_create ( sizeof ( int ),EqualInt );
   int t;
   ListNode* n;
   int i;
   for ( i=0; i<10; ++i )
      list_push_back ( list,createInt ( &t,rand() ) );
   /*list_foreach(list,printInt);*/
   ListIter iter = list_get_iter ( list );
   while ( list_iter_hasNext ( iter ) )
   {
      printInt ( list_iter_next ( iter ) );
   }
   printf ( "\n" );
   list_pop_back ( list );
   list_foreach ( list,incInt );
   list_foreach ( list,printInt );
   printf ( "\n" );
   n = list_find_first_node ( list,createInt ( &t,846930887 ) );
   list_erase_node ( list,n );
   list_foreach ( list,printInt );
   list_delete ( list );
   return 0;
}
Exemplo n.º 4
0
XMLElem ComplexXMLParser10x::convertRadarCollectionToXML(
    const RadarCollection *radar,
    XMLElem parent) const
{
    XMLElem radarXML = newElement("RadarCollection", parent);

    createTxFrequency(radar, radarXML);

    if (!Init::isUndefined<int>(radar->refFrequencyIndex))
    {
        createInt("RefFreqIndex", radar->refFrequencyIndex, radarXML);
    }

    // SICD v1.0 removes PolarizationHVAnglePoly

    createWaveform(radar, radarXML);

    //! required in 1.0
    createString("TxPolarization", six::toString(radar->txPolarization),
                 radarXML);

    createTxSequence(radar, radarXML);
    createRcvChannels(radar, radarXML);
    createArea(radar, radarXML);

    common().addParameters("Parameter", radar->parameters, radarXML);
    return radarXML;
}
Exemplo n.º 5
0
XMLElem ComplexXMLParser10x::createRcvChannels(const RadarCollection* radar,
                                               XMLElem parent) const
{
    const size_t numChannels = radar->rcvChannels.size();
    XMLElem rcvChanXML = newElement("RcvChannels", parent);
    setAttribute(rcvChanXML, "size", str::toString(numChannels));
    for (size_t ii = 0; ii < numChannels; ++ii)
    {
        const ChannelParameters* const cp = radar->rcvChannels[ii].get();
        XMLElem cpXML = newElement("ChanParameters", rcvChanXML);
        setAttribute(cpXML, "index", str::toString(ii + 1));

        //! required in 1.0
        createString(
            "TxRcvPolarization",
            six::toString<DualPolarizationType>(cp->txRcvPolarization),
            cpXML);

        if (!Init::isUndefined<int>(cp->rcvAPCIndex))
        {
            createInt("RcvAPCIndex", cp->rcvAPCIndex, cpXML);
        }
    }

    return rcvChanXML;
}
Exemplo n.º 6
0
static Value classNew(Context *ctx, const List<Value>& args)
{
    if (args.getCount() < 1)
    {
        ctx->throwException(createException(ExcType::ValueError, "__new__/__call__ takes at least 1 argument."));
    }

    Value class_ = args[0];

    Value __base__ = createString("__base__");
    Value base = getMember(ctx, class_, __base__);
    destroy(ctx, __base__);

    Value __typeID__ = createString("__typeID__");
    Value typeID = getMember(ctx, class_, __typeID__);
    destroy(ctx, __typeID__);

    if (base.type != ValueType::Object)
    {
        ctx->throwException(createException(ExcType::TypeError, "Class base must be an object."));
    }

    if (typeID.type != ValueType::Int)
    {
        ctx->throwException(createException(ExcType::TypeError, "Class type ID must be an integer."));
    }

    Value resultHead = createObject();
    HashMap<Str, Value>& resultMembers = ((ObjectData *)resultHead.p)->members;
    HashMap<Str, Value>& baseMembers = ((ObjectData *)base.p)->members;

    for (auto kv : baseMembers)
    {
        resultMembers.set(kv.first, createCopy(kv.second));
    }

    resultMembers.set("__classTypeID__", createInt(typeID.i));
    resultMembers.set("__class__", createCopy(args[0]));

    auto pos = resultMembers.find("__init__");
    if (pos != resultMembers.end())
    {
        destroy(ctx, callMethod(ctx, resultHead, "__init__", List<Value>(args.getCount()-1, args.getData()+1)));
    } else
    {
        if (args.getCount() != 1)
        {
            ctx->throwException(createException(ExcType::ValueError, "__new__/__call__ takes 1 argument."));
        }
    }

    destroy(ctx, typeID);
    destroy(ctx, base);

    return resultHead;
}
Exemplo n.º 7
0
void 
PropertyManager::addAttribute(wxPropertyGridManager *pg, std::unique_ptr<Attribute> &a) {

	switch (a->getType()) {

	case Enums::ENUM: createEnum(pg, a); break;
	case Enums::BOOL: createBool(pg, a); break;
	case Enums::BVEC4: createBVec4(pg, a); break;
	case Enums::INT: createInt(pg, a); break;
	case Enums::IVEC3: createIVec3(pg, a); break;
	case Enums::UINT: createUInt(pg, a); break;
	case Enums::UIVEC2: createUIVec2(pg, a); break;
	case Enums::UIVEC3: createUIVec3(pg, a); break;
	case Enums::FLOAT: createFloat(pg, a); break;
	case Enums::VEC2: createVec2(pg, a); break;
	case Enums::VEC3: createVec3(pg, a); break;
	case Enums::VEC4: createVec4(pg, a); break;
	case Enums::MAT3: createMat3(pg, a); break;
	case Enums::MAT4: createMat4(pg, a); break;
	case Enums::STRING: createString(pg, a); break;
	default: assert(false && "Missing datatype in property manager");

	}
}
Exemplo n.º 8
0
static Value createClass(Context *ctx, const List<Value>& args)
{
    if (args.getCount() != 1)
    {
        ctx->throwException(createException(ExcType::ValueError, "__classify takes 1 argument."));
    }

    Value base = args[0];

    if (base.type != ValueType::Object)
    {
        ctx->throwException(createException(ExcType::ValueError, "base must be an object."));
    }

    Value result = createObject();

    HashMap<Str, Value>& resultMembers = ((ObjectData *)result.p)->members;

    resultMembers.set("__base__", createCopy(args[0]));
    resultMembers.set("__typeID__", createInt(ctx->getEngine()->createNewTypeID()));
    resultMembers.set("__call__", createNativeFunction(classNew));

    return result;
}
Exemplo n.º 9
0
void XMLizer::writeFilter( QDomDocument &document, QDomNode &parent, bool audio, QSharedPointer<Filter> f )
{
	QString s = audio ? "AudioFilter" : "VideoFilter";
	QDomElement n1 = document.createElement( s );
	parent.appendChild( n1 );

	createText( document, n1, "Name", f->getIdentifier() );
	createDouble( document, n1, "PosInTrack", f->getPosition() );
	if ( f->getPositionOffset() > 0 )
		createDouble( document, n1, "PosOffset", f->getPositionOffset() );
	createDouble( document, n1, "Length", f->getLength() );
	createInt( document, n1, "SnapMode", f->getSnap() );
	
	QList<Parameter*> params = f->getParameters();
	for ( int i = 0; i < params.count(); ++i ) {
		Parameter *p = params[i];
		QDomElement pel = document.createElement( "Parameter" );
		n1.appendChild( pel );
		pel.setAttribute( "name", p->id );
		switch ( p->type ) {
			case Parameter::PDOUBLE: {
				pel.setAttribute( "type", "double" );
				pel.setAttribute( "value", QString::number( p->value.toDouble(), 'e', 17 ) );
				break;
			}
			case Parameter::PINPUTDOUBLE: {
				pel.setAttribute( "type", "inputdouble" );
				pel.setAttribute( "value", QString::number( p->value.toDouble(), 'e', 17 ) );
				break;
			}
			case Parameter::PINT: {
				pel.setAttribute( "type", "int" );
				pel.setAttribute( "value", QString::number( p->value.toInt() ) );
				break;
			}
			case Parameter::PBOOL: {
				pel.setAttribute( "type", "bool" );
				pel.setAttribute( "value", QString::number( p->value.toInt() ) );
				break;
			}
			case Parameter::PRGBCOLOR: {
				pel.setAttribute( "type", "rgb" );
				pel.setAttribute( "value", p->value.value<QColor>().name() );
				break;
			}
			case Parameter::PRGBACOLOR: {
				QColor col = p->value.value<QColor>();
				pel.setAttribute( "type", "rgba" );
				pel.setAttribute( "value", col.name() + "." + QString::number( col.alpha() ) );
				break;
			}
			case Parameter::PCOLORWHEEL: {
				QColor col = p->value.value<QColor>();
				pel.setAttribute( "type", "colorwheel" );
				pel.setAttribute( "value", QString::number( col.blueF(), 'e', 17 ) );
				pel.setAttribute( "hue", QString::number( col.redF(), 'e', 17 ) );
				pel.setAttribute( "saturation", QString::number( col.greenF(), 'e', 17 ) );
				break;
			}
			case Parameter::PSTRING: {
				pel.setAttribute( "type", "string" );
				pel.setAttribute( "value", p->value.toString().replace( "\n", QString::fromUtf8("¶") ) );
				break;
			}
			case Parameter::PSHADEREDIT: {
				pel.setAttribute( "type", "shader" );
				pel.setAttribute( "value", Parameter::getShaderName( p->value.toString() ) );
				break;
			}
			case Parameter::PSTATUS: {
				pel.setAttribute( "type", "status" );
				pel.setAttribute( "value", "" );
				break;
			}
		}
		
		for ( int i = 0; i < p->graph.keys.count(); ++i ) {
			QDomElement ke = document.createElement( "Key" );
			pel.appendChild( ke );
			QString type;
			switch ( p->graph.keys[i].keyType ) {
				case AnimationKey::CONSTANT: type = "constant"; break;
				case AnimationKey::CURVE: type = "curve"; break;
				default: type = "linear";
			}
			ke.setAttribute( "type", type );
			ke.setAttribute( "position", QString::number( p->graph.keys[i].x, 'e', 17 ) );
			ke.setAttribute( "value", QString::number( p->getUnnormalizedKeyValue( i ), 'e', 17 ) );
		}
	}
}