Mapping Extended (Paragraph Delimited Mapping Extended (MappingEx)) es un formato de mapeo Java utilizado para FeatureCreep, pero esta abierto para que cualquiera lo use por cualquier motivo.
MappingEx es un formato de mapeo delimitado con ¶. el orden es
Tipo¶Nombre Original¶Nombre nuevo¶Nombre metodo¶Position¶Description
el valor predeterminado oficial es
tipo¶original¶nuevo¶def¶pos¶desc
Estos se indican en la primera linea, que los analizadores deben ignorar y que en realidad puede ser cualquier cosa.
Tipo: Este es el tipo. Esto depende del tipo de objeto. Estos se cubriran con mas detalle.
Original: El nombre original del objeto. Estos se cubriran con mas detalle. Deberia ser nil para la mayoria de los parametros. Incluya nombre de clase y descriptor y tipo de retorno para Metodos y nombre de clase y tipo de retorno para Campos.
Nombre Nuevo: Estos son los nuevos nombres. Este es solo el nombre, sin descriptor ni nombre de clase, solo un nombre nuevo (excepto las clases que aun necesitan definir su nombre completo).
Nombre del metodo: solo para parametros, para otros debe ser nil. Este es el NombreClasse.nombreMetodo(descriptor)tipo del metodo cuyo parametro desea cambiar.
Position: Solo para Params, para otros debería ser nil. La posición en el constructor en la que se encuentra el parámetro que desea reasignar. Comienza en 1 (para Java, sin embargo, puede depender del idioma) como el código de bytes de Java, ya que 0 es this. También funciona para vars locales en el futuro.
Description: Un description acara del Classe/Method/campo/Param
Hay algunos tipos que se incluyen y se utilizan para diferentes cosas. Estos son los tipos.
Clase Usada para clases
Var usado para campos
Def usado para métodos
Param Usado para parámetros y variables locales (cuando implementamos variables locales)
El orden que los analizadores deberían preferir debería ser. Parámetro, Var, Def, Clase. Sin embargo, se pueden cambiar Def y Var.
Nombres originales. El formato debe depender del tipo.
Class: Para clases debe ser nombrepaquete.NombreClase$SubClase. Si no hay subclases, se puede omitir la subclase; lo mismo ocurre con el paquete.
Def: Para los métodos, debe ser la ruta completa al método, incluido el descriptor, el tipo de retorno y el nombre de clase original completo. Un ejemplo sería featurecreep.ejemplo.ClaseEjemplo$SubClase.METH_PRUEBA(ILjava/lang/String;Ljava/lang/String;)V para un vacío que tiene un int y 2 cadenas. Puede leer más sobre firmas y descriptores de códigos de bytes para obtener más información. El nombre del paquete debe incluirse en el nombre de la clase.
Var: Para las variables el formato es paqueta.a.LaClase.Nombre_de_Campo:Lreturn.Descriptor;. El nombre del paquete debe incluirse en el nombre de la clase. El punto y coma solo es necesario en el descriptor en no primitivos.
Param: En la mayoría de los casos debería ser nil. Sin embargo, aún puedes intentar poner el nombre si lo sabes, pero es poco probable que funcione. El orden es el método preferido de búsqueda.
Sin embargo, a diferencia del original, los nuevos nombres despues de la reasignacion, con la excepcion de las Clases, solo se incluye el nombre final, no los descriptores, el tipo de retorno o la Clase de la que proviene un Campo/Metodo o el nombre del Metodo de la que proviene un parametro. Solo el nuevo nombre que desee, el descriptor, el tipo de retorno, la clase y el metodo del parametro permaneceran iguales.
Para Clases aun necesita definir el nombre completo de la clase en el mismo formato que el original. Tenga cuidado de tener en cuenta las restricciones de acceso (como el modificador de acceso protegido o en blanco), ya que interrumpir el acceso puede provocar que el codigo reasignado tenga errores o falle.
Solo para parametros. Todos los demas deberian responder nil. Este es el nombre original (no asignado) de la clase y metodo para el cual este es un parametro. Debe tener el mismo formato que el nombre original de Def (ver arriba).
##Position
Sólo para parámetros. Todos los demas deberian responder nil. La posicion del parametro/var local que comienza en 1. 0 (this) no es un numero admitido en Java pero se puede usar en otros idiomas que comienzan en 1. Para parametros debe ser la posicion en el constructor, para var locales Puede seguir contando (sin embargo, las variables locales aún no estan implementadas). Puede utilizar Jdac para obtener el puesto si no lo sabe.
##Descripción Una breve descripcion basica de JavaDoc. Debe utilizar solo caracteres legales en el codigo Java (o cualquier idioma que este desobstruyendo). Si un metodo no tiene una descripcion pero un parametro si la tiene, se proporcionara una descripcion en blanco para el metodo mientras el parametro obtiene un javadoc.
##Ejemplo A continuación se muestra un ejemplo de un archivo:
tipo¶original¶nuevo¶def¶pos¶desc
Class¶featurecreep.example.ExampleClass$SubClass¶abc¶nil¶nil¶An example of a class
Var¶featurecreep.example.ExampleClass$SubClass.TEST_FIELD:Z¶OBF_FIELD¶nil¶nil¶An example of a Field
Def¶featurecreep.example.ExampleClass$SubClass.TEST_METH(ILjava/lang/String;Ljava/lang/String;)V¶methodNameOnly¶nil¶nil¶Un ejemplo de un metodo
Param¶nil¶name¶featurecreep.example.ExampleClass$SubClass.TEST_METH(ILjava/lang/String;Ljava/lang/String;)V¶1¶Un ejemplo de un parametro
Se puede abrir en un editor de texto básico o en un abridor CSV configurando el separador en ¶ La extensión de archivo predeterminada es .pdme