Exemplo n.º 1
0
Field* Class::lookup_field_recursive(const String* name, const String* desc)
{
    // Step 1: lookup in self
    Field* field = lookup_field(name, desc);
    if(field) return field;

    // Step 2: lookup in direct superinterfaces recursively
    for(uint16 in = 0; in < m_num_superinterfaces; in++) {
        field = get_superinterface(in)->lookup_field_recursive(name, desc);
        if(field) return field;
    }

    // Step 3: lookup in super classes recursively
    if(has_super_class()) {
        field = get_super_class()->lookup_field_recursive(name, desc);
    }

    return field;
} // Class::lookup_field_recursive
Exemplo n.º 2
0
static bool init_ids(JNIEnv* env) {
	// Load NativeObject classes
	init_class(env, "mapnik/NativeObject", CLASS_NATIVEOBJECT);
	init_class(env, "mapnik/MapDefinition", CLASS_MAP);
	init_class(env, "mapnik/Datasource", CLASS_DATASOURCE);
	init_class(env, "mapnik/DatasourceCache", CLASS_DATASOURCE_CACHE);
	init_class(env, "mapnik/Layer", CLASS_LAYER);
	init_class(env, "mapnik/FeatureTypeStyle", CLASS_FEATURE_TYPE_STYLE);
	init_class(env, "mapnik/Projection", CLASS_PROJECTION);
	init_class(env, "mapnik/Query", CLASS_QUERY);
	init_class(env, "mapnik/FeatureSet", CLASS_FEATURESET);
	init_class(env, "mapnik/Geometry", CLASS_GEOMETRY);
	init_class(env, "mapnik/Image", CLASS_IMAGE);
	init_class(env, "mapnik/Grid", CLASS_GRID);

	// Ptr
	CTOR_NATIVEOBJECT=lookup_method(env, CLASS_NATIVEOBJECT, "<init>", "()V");
	FIELD_PTR=lookup_field(env, CLASS_NATIVEOBJECT, "ptr", "J");

	// FeatureSet
	FIELD_FEATURESET_FEATURE_PTR=lookup_field(env, CLASS_FEATURESET, "feature_ptr", "J");

	// String
	init_class(env, "java/lang/String", CLASS_STRING);

	// Integer
	init_class(env, "java/lang/Integer", CLASS_INTEGER);
	METHOD_INTEGER_VALUEOF=lookup_static_method(env, CLASS_INTEGER, "valueOf", "(I)Ljava/lang/Integer;");

	init_class(env, "java/lang/Boolean", CLASS_BOOLEAN);
	METHOD_BOOLEAN_VALUEOF=lookup_static_method(env, CLASS_BOOLEAN, "valueOf", "(Z)Ljava/lang/Boolean;");

	init_class(env, "java/lang/Long", CLASS_LONG);
	METHOD_LONG_VALUEOF=lookup_static_method(env, CLASS_LONG, "valueOf", "(J)Ljava/lang/Long;");

	// Double
	init_class(env, "java/lang/Double", CLASS_DOUBLE);
	METHOD_DOUBLE_VALUEOF=lookup_static_method(env, CLASS_DOUBLE, "valueOf", "(D)Ljava/lang/Double;");

	// Parameters
	init_class(env, "mapnik/Parameters", CLASS_PARAMETERS);
	CTOR_PARAMETERS=lookup_method(env, CLASS_PARAMETERS, "<init>", "()V");
	METHOD_PARAMETERS_SET_STRING=lookup_method(env, CLASS_PARAMETERS, "setString", "(Ljava/lang/String;Ljava/lang/String;)V");
	METHOD_PARAMETERS_SET_BOOLEAN=lookup_method(env, CLASS_PARAMETERS, "setBool", "(Ljava/lang/String;Z)V");
	METHOD_PARAMETERS_SET_INT=lookup_method(env, CLASS_PARAMETERS, "setInt", "(Ljava/lang/String;I)V");
	METHOD_PARAMETERS_SET_LONG=lookup_method(env, CLASS_PARAMETERS, "setLong", "(Ljava/lang/String;J)V");
	METHOD_PARAMETERS_SET_DOUBLE=lookup_method(env, CLASS_PARAMETERS, "setDouble", "(Ljava/lang/String;D)V");
	METHOD_PARAMETERS_COPY_TO_NATIVE=lookup_method(env, CLASS_PARAMETERS, "copyToNative", "(J)V");

	// HashSet
	init_class(env, "java/util/HashSet", CLASS_HASHSET);
	CTOR_HASHSET=lookup_method(env, CLASS_HASHSET, "<init>", "()V");
	METHOD_HASHSET_ADD=lookup_method(env, CLASS_HASHSET, "add", "(Ljava/lang/Object;)Z");

	// Box2d
	init_class(env, "mapnik/Box2d", CLASS_BOX2D);
	FIELD_BOX2D_MINX=lookup_field(env, CLASS_BOX2D, "minx", "D");
	FIELD_BOX2D_MINY=lookup_field(env, CLASS_BOX2D, "miny", "D");
	FIELD_BOX2D_MAXX=lookup_field(env, CLASS_BOX2D, "maxx", "D");
	FIELD_BOX2D_MAXY=lookup_field(env, CLASS_BOX2D, "maxy", "D");

	// Color
	init_class(env, "mapnik/Color", CLASS_COLOR);
	FIELD_COLOR_RED=lookup_field(env, CLASS_COLOR, "red", "I");
	FIELD_COLOR_GREEN=lookup_field(env, CLASS_COLOR, "green", "I");
	FIELD_COLOR_BLUE=lookup_field(env, CLASS_COLOR, "blue", "I");
	FIELD_COLOR_ALPHA=lookup_field(env, CLASS_COLOR, "alpha", "I");

	// Coord
	init_class(env, "mapnik/Coord", CLASS_COORD);
	FIELD_COORD_X=lookup_field(env, CLASS_COORD, "x", "D");
	FIELD_COORD_Y=lookup_field(env, CLASS_COORD, "y", "D");

	// LayerDescriptor
	init_class(env, "mapnik/LayerDescriptor", CLASS_LAYERDESCRIPTOR);
	CTOR_LAYERDESCRIPTOR=lookup_method(env, CLASS_LAYERDESCRIPTOR, "<init>", "()V");
	FIELD_LAYERDESCRIPTOR_NAME=lookup_field(env, CLASS_LAYERDESCRIPTOR, "name", "Ljava/lang/String;");
	FIELD_LAYERDESCRIPTOR_ENCODING=lookup_field(env, CLASS_LAYERDESCRIPTOR, "encoding", "Ljava/lang/String;");
	METHOD_LAYERDESCRIPTOR_ADDDESCRIPTOR=lookup_method(env, CLASS_LAYERDESCRIPTOR, "addDescriptor", "(Lmapnik/AttributeDescriptor;)V");

	// AttributeDescriptor
	init_class(env, "mapnik/AttributeDescriptor", CLASS_ATTRIBUTEDESCRIPTOR);
	CTOR_ATTRIBUTEDESCRIPTOR=lookup_method(env, CLASS_ATTRIBUTEDESCRIPTOR, "<init>", "()V");
	FIELD_ATTRIBUTEDESCRIPTOR_NAME=lookup_field(env, CLASS_ATTRIBUTEDESCRIPTOR, "name", "Ljava/lang/String;");
	FIELD_ATTRIBUTEDESCRIPTOR_TYPE=lookup_field(env, CLASS_ATTRIBUTEDESCRIPTOR, "type", "I");
	FIELD_ATTRIBUTEDESCRIPTOR_PRIMARYKEY=lookup_field(env, CLASS_ATTRIBUTEDESCRIPTOR, "primaryKey", "Z");
	FIELD_ATTRIBUTEDESCRIPTOR_SIZE=lookup_field(env, CLASS_ATTRIBUTEDESCRIPTOR, "size", "I");
	FIELD_ATTRIBUTEDESCRIPTOR_PRECISION=lookup_field(env, CLASS_ATTRIBUTEDESCRIPTOR, "precision", "I");

	return true;
}