Generación de código
ZinjaI puede realizar automáticamente algunas pequeñas tareas generando código faltante a partir del código existente en un archivo o proyecto. Por el momento, las funcionalidades disponibles son:
- Implementar métodos/funciones faltantes...: Este comando genera automáticamente definiciones vacías para todas las funciones (globales y miembros de clases) que hayan sido declaradas en el archivo fuente actual y/o en el archivo de cabecera homónimo, y aún no estén definidas. Por ejemplo, si en "ejemplo.h" declaró el prototipo "void foo();", al abrir "ejemplo.cpp" y utilizar este comando, ZinjaI agregará al final del mismo la declaración "void foo() { }" agregando una línea en blanco entre las llaves y colocando el cursor de texto allí para que comience a escribir su implementación. Antes de generar las definiciones, ZinjaI muestra una lista con todas las funciones indetificadas para las cuales no encontró definiciones (ni en este ni en otros archivos), permitiendole seleccionar cual o cuáles efectivamente desea generar.
- Generar definición de función a partir de llamada: Coloque el cursor sobre una línea de código que efectúa una llamada a una función que aún no ha sido definida ni declarada (sobre el identificador de la misma), y utilice este comando para que ZinjaI genere la definición de dicha función automáticamente justo antes de la función actual. Por ejemplo, si crea un programa en blanco y escribe en el main "foo();" y luego utiliza este comando, ZinjaI agregará antes del main la definición "void foo() { }", colocará el cursor de texto entre las llaves de la misma (agregando allí además un linea en blanco) para que comience a escribir su contenido. Puede acceder a este comando también mediante el menú contextual, con click derecho sobre el identificador de la función. Si la función tiene argumentos, ZinjaI intentará deducir el tipo de los argumentos actuales y incluir la declaración correspondientes a los mismos en el prototipo. De igual forma, si el resultado de la llamada se asigna a una variable o se utiliza como valor de retorno para la función que la contiene, se intentará deducir el tipo de la variable o función para utilizarlo también en la definición. Si alguno de estos tipos no puede ser deducido correctamente ZinjaI utilizará "???" para indicarlo, y el usuario deberá luego corregirlo manualmente.
Nota 1: recuerde que la declaración de una función requiere solo su prototipo, mientras para una definición se requiere la implementación completa. Usualmente, las declaraciones van en los archivos de cabecera (.h) y las definiciones en los .cpp.
Nota 2: Recuerde que ZinjaI hace un parseo del código fuente mucho más rápido y menos exaustivo que el que hace el compilador, por lo cual en algunos casos especiales las definiciones genedas podrían ser incompletas o contener errores.