1 | |
---|
2 | ////////////////////////////////////////////////////////////////////////////// |
---|
3 | // Tipos de objetos con descripción: |
---|
4 | |
---|
5 | NameBlock modulo = [[ |
---|
6 | Real variable1 = 1; |
---|
7 | Real _.variable2 = 1; |
---|
8 | Real _variable3 = 1; |
---|
9 | Real funcion1(Real void) { ? }; |
---|
10 | Real _.funcion2(Real void) { ? }; |
---|
11 | Real _funcion3(Real void) { ? }; |
---|
12 | Class @clase { |
---|
13 | Text _.autodoc.member.atributo1 = ""; |
---|
14 | Real atributo1; |
---|
15 | Real _.atributo2; |
---|
16 | Real _atributo3; |
---|
17 | Text _.autodoc.member.metodo1 = ""; |
---|
18 | Real metodo1(Real void) { ? }; |
---|
19 | Real _.metodo2(Real void) { ? }; |
---|
20 | Real _metodo3(Real void) { ? }; |
---|
21 | Text _.autodoc.member.atributoClase1 = ""; |
---|
22 | Static Real atributoClase1 = 0; |
---|
23 | Static Real _.atributoClase2 = 0; |
---|
24 | Static Real _atributoClase3 = 0; |
---|
25 | Static Real metodoClase1(Real void) { ? }; |
---|
26 | Static Real _.metodoClase2(Real void) { ? }; |
---|
27 | Text _.autodoc.member._metodoClase3 = ""; |
---|
28 | Static Real _metodoClase3(Real void) { ? } |
---|
29 | }; |
---|
30 | Struct @estructura { |
---|
31 | Real elemento |
---|
32 | }; |
---|
33 | @clase instancia = [[ |
---|
34 | Real atributo1 = 2; |
---|
35 | Real _.atributo2 = 3; |
---|
36 | Real _atributo3 = 1 |
---|
37 | ]]; |
---|
38 | Set conjunto = @estructura(1) |
---|
39 | ]]; |
---|
40 | |
---|
41 | ////////////////////////////////////////////////////////////////////////////// |
---|
42 | |
---|
43 | Anything PutDescription("Variable 1", modulo::variable1); |
---|
44 | Anything PutDescription("Variable 2", modulo::_.variable2); |
---|
45 | //! Anything PutDescription("Variable 3", modulo::_variable3); |
---|
46 | Anything PutDescription("Función 1", modulo::funcion1); |
---|
47 | Anything PutDescription("Función 2", modulo::_.funcion2); |
---|
48 | //! Anything PutDescription("Función 3", modulo::_funcion3); |
---|
49 | |
---|
50 | Anything PutDescription("La clase", "modulo::@clase"); |
---|
51 | Anything PutDescription("Atributo 1", "modulo::@clase", "atributo1"); |
---|
52 | Anything PutDescription("Atributo 2", "modulo::@clase", "_.atributo2"); |
---|
53 | Anything PutDescription("Atributo 3", "modulo::@clase", "_atributo3"); |
---|
54 | Anything PutDescription("Método 1", "modulo::@clase", "metodo1"); |
---|
55 | Anything PutDescription("Método 2", "modulo::@clase", "_.metodo2"); |
---|
56 | Anything PutDescription("Método 3", "modulo::@clase", "_metodo3"); |
---|
57 | Anything PutDescription("Atributo de clase 1", "modulo::@clase", "atributoClase1"); |
---|
58 | Anything PutDescription("Atributo de clase 2", "modulo::@clase", "_.atributoClase2"); |
---|
59 | Anything PutDescription("Atributo de clase 3", "modulo::@clase", "_atributoClase3"); |
---|
60 | Anything PutDescription("Método de clase 1", "modulo::@clase", "metodoClase1"); |
---|
61 | Anything PutDescription("Método de clase 2", "modulo::@clase", "_.metodoClase2"); |
---|
62 | Anything PutDescription("Método de clase 3", "modulo::@clase", "_metodoClase3"); |
---|
63 | |
---|
64 | Anything PutDescription("La estructura", "modulo::@estructura"); |
---|
65 | //! Anything PutDescription("Elemento", "modulo::@estructura", "elemento"); |
---|
66 | |
---|
67 | Anything PutDescription("La instancia", modulo::instancia); |
---|
68 | Anything PutDescription("El conjunto", modulo::conjunto); |
---|
69 | |
---|
70 | ////////////////////////////////////////////////////////////////////////////// |
---|
71 | |
---|
72 | Set Members(modulo); |
---|
73 | Set ClassMembers("modulo::@clase"); //! Sólo encuentra descripciones autodoc |
---|
74 | Set Members(modulo::instancia); //! No encuentra descripciones |
---|
75 | |
---|
76 | Text Description(modulo::variable1); |
---|
77 | Text Description(modulo::_.variable2); |
---|
78 | //! Text Description(modulo::_variable3); |
---|
79 | Text Description(modulo::funcion1); |
---|
80 | Text Description(modulo::_.funcion2); |
---|
81 | //! Text Description(modulo::_funcion3); |
---|
82 | |
---|
83 | Text Description("modulo::@clase"); //! => Atributo 3 |
---|
84 | Set [[ //! NADA |
---|
85 | Text Description("modulo::@clase::atributo1"); |
---|
86 | Text Description("modulo::@clase::_.atributo2"); |
---|
87 | Text Description("modulo::@clase::_atributo3"); |
---|
88 | Text Description("modulo::@clase::metodo1"); |
---|
89 | Text Description("modulo::@clase::_.metodo2"); |
---|
90 | Text Description("modulo::@clase::_metodo3"); |
---|
91 | Text Description("modulo::@clase::atributoClase1"); |
---|
92 | Text Description("modulo::@clase::_.atributoClase2"); |
---|
93 | Text Description("modulo::@clase::_atributoClase3"); |
---|
94 | Text Description("modulo::@clase::metodoClase1"); |
---|
95 | Text Description("modulo::@clase::_.metodoClase2"); |
---|
96 | Text Description("modulo::@clase::_metodoClase3") |
---|
97 | ]]; |
---|
98 | |
---|
99 | Text Description("modulo::@estructura"); |
---|
100 | //! Text Description("modulo::@estructura", "elemento"); |
---|
101 | |
---|
102 | Text Description(modulo::instancia); |
---|
103 | Text Description(modulo::conjunto); |
---|
104 | |
---|
105 | ////////////////////////////////////////////////////////////////////////////// |
---|
106 | // Problemas y dificultades |
---|
107 | // |
---|
108 | // * La función PutDescription NO tiene un funcionamiento homogéneo. |
---|
109 | // Tiene dos funcionamientos: |
---|
110 | // * Sobre objetos (como PutName) pasados como argumento |
---|
111 | // * Sobre objetos pasando su nombre completo como argumento mediante un |
---|
112 | // texto entrecomillado. No vale usar una variable texto, pues como |
---|
113 | // parece lógico, en ese caso sería ella la receptora de la descripción. |
---|
114 | // El primero funciona para objetos 'comunes' de TOL |
---|
115 | // El segundo está destinado para clases y estructuras. Está extendido |
---|
116 | // para miembros de una clase pasando su nombre como tercer argumento. |
---|
117 | // Esto presenta algunas limitaciones: |
---|
118 | // * No se puede usar el funcionamiento via nombres para objetos 'comunes'. |
---|
119 | // * No se puede usar cómodamente en un ciclo ya que no se pueden pasar |
---|
120 | // los nombres como argumento texto y hay que apañar un Eval. |
---|
121 | // * No se puede modificar la descripción de un miembro privado de un |
---|
122 | // nameblock (aunque sí de una clase). |
---|
123 | // * La función no devuelve nada. |
---|
124 | // * La función no advierte que poner una descripción al atributo |
---|
125 | // de una clase que no tiene _.autodoc.member no sirve de nada. |
---|
126 | // Bueno, sí, para cambiar la descripción de la clase por error. |
---|
127 | // |
---|
128 | // * La función Description aún anda peor, pues presenta el doble |
---|
129 | // funcionamiento, pero sin la extensión para miembros de clases. |
---|
130 | // De modo que debe buscarse otro mecanismo para acceder a esa información. |
---|
131 | // |
---|
132 | // * La función Members permite acceder a la información de elementos de un |
---|
133 | // nameblock, incluido sus descripciones. |
---|
134 | // Accede sin dificultad a las descripciones de los miemebros de un |
---|
135 | // nameblock 'común' pero no a las de una instancia. |
---|
136 | // Concretamente, al utilizar la función sobre una instancia se obtiene |
---|
137 | // información de sus atributos y sin descripciones. |
---|
138 | // |
---|
139 | // * La función ClassMembers permite accecer a la información de miembros |
---|
140 | // de una clase incluyendo sus descripciones, pero sólo muestra |
---|
141 | // descripciones de los miembros con _.autodoc.member (sea atributos o |
---|
142 | // métodos). |
---|
143 | |
---|
144 | // Sugerencias: |
---|
145 | // |
---|
146 | // * En PutDescription aceptaría el funcionamiento vía texto, también para |
---|
147 | // objetos cualesquiera, de modo que funcionara: |
---|
148 | // Anything PutDescription("Variable 1", "modulo::variable1"); |
---|
149 | // Anything PutDescription("Variable 3", "modulo::_variable3"); |
---|
150 | // consiguiendo así poner descripciones también a elementos privados. |
---|
151 | // |
---|
152 | // * En Description añadiría la extensión del tercer argumento para |
---|
153 | // miembros de una clase, equiparándola a PutDescription. |
---|
154 | // |
---|
155 | // * Buscaría alguna manera de forzar la declaración interna de los |
---|
156 | // _.autodoc.member de los atributos en una clase, y así evitar que el |
---|
157 | // PutDescription no tenga efecto. |
---|
158 | // Si no, en cualquier caso, solucionaría el bug que asigna la descripción |
---|
159 | // a la clase y quizá incorporaría una advertencia. |
---|
160 | // |
---|
161 | // * Intentaría que Members respondiera sobre una instancia devolviendo |
---|
162 | // también la información que como instancia hereda de la clase: las |
---|
163 | // descripciones de los atributos e información completa de métodos. |
---|
164 | // |
---|
165 | // * Solucionaría la limitación de ClassMembers a la hora de localizar las |
---|
166 | // descripciones de los miembros que no tienen _.autodoc.member sean |
---|
167 | // atributos o métodos |
---|
168 | // |
---|
169 | ////////////////////////////////////////////////////////////////////////////// |
---|
170 | |
---|