00001 00013 #ifndef auto_workspace_h 00014 #define auto_workspace_h 00015 00016 #include <iostream> 00017 #include "matpackII.h" 00018 #include "m_general.h" 00019 #include "supergeneric.h" 00020 #include "ppath.h" 00021 #include "gas_abs_lookup.h" 00022 00023 #include "optproperties.h" 00024 00025 #include "gridded_fields.h" 00026 00027 #include "jacobian.h" 00028 00029 #include "agenda_class.h" 00030 00031 #include "mc_interp.h" 00032 00033 #include "mc_antenna.h" 00034 00035 class WorkspaceMemoryHandler { 00036 private: 00037 // List of function pointers to allocation routines 00038 void *(*allocfp[50])(); 00039 // List of function pointers to deallocation routines 00040 void (*deallocfp[50])(void *); 00041 00042 // List of function pointers to duplication routines 00043 void *(*duplicatefp[50])(void *); 00044 00045 // Allocation and deallocation routines for workspace groups 00046 static void *allocate_wsvg_Any() 00047 { return (void *)new Any; } 00048 00049 static void deallocate_wsvg_Any(void *vp) 00050 { delete (Any *)vp; } 00051 00052 static void *duplicate_wsvg_Any(void *vp) 00053 { return (new Any(*(Any *)vp)); } 00054 00055 static void *allocate_wsvg_Index() 00056 { return (void *)new Index; } 00057 00058 static void deallocate_wsvg_Index(void *vp) 00059 { delete (Index *)vp; } 00060 00061 static void *duplicate_wsvg_Index(void *vp) 00062 { return (new Index(*(Index *)vp)); } 00063 00064 static void *allocate_wsvg_Numeric() 00065 { return (void *)new Numeric; } 00066 00067 static void deallocate_wsvg_Numeric(void *vp) 00068 { delete (Numeric *)vp; } 00069 00070 static void *duplicate_wsvg_Numeric(void *vp) 00071 { return (new Numeric(*(Numeric *)vp)); } 00072 00073 static void *allocate_wsvg_String() 00074 { return (void *)new String; } 00075 00076 static void deallocate_wsvg_String(void *vp) 00077 { delete (String *)vp; } 00078 00079 static void *duplicate_wsvg_String(void *vp) 00080 { return (new String(*(String *)vp)); } 00081 00082 static void *allocate_wsvg_Vector() 00083 { return (void *)new Vector; } 00084 00085 static void deallocate_wsvg_Vector(void *vp) 00086 { delete (Vector *)vp; } 00087 00088 static void *duplicate_wsvg_Vector(void *vp) 00089 { return (new Vector(*(Vector *)vp)); } 00090 00091 static void *allocate_wsvg_Matrix() 00092 { return (void *)new Matrix; } 00093 00094 static void deallocate_wsvg_Matrix(void *vp) 00095 { delete (Matrix *)vp; } 00096 00097 static void *duplicate_wsvg_Matrix(void *vp) 00098 { return (new Matrix(*(Matrix *)vp)); } 00099 00100 static void *allocate_wsvg_Sparse() 00101 { return (void *)new Sparse; } 00102 00103 static void deallocate_wsvg_Sparse(void *vp) 00104 { delete (Sparse *)vp; } 00105 00106 static void *duplicate_wsvg_Sparse(void *vp) 00107 { return (new Sparse(*(Sparse *)vp)); } 00108 00109 static void *allocate_wsvg_Tensor3() 00110 { return (void *)new Tensor3; } 00111 00112 static void deallocate_wsvg_Tensor3(void *vp) 00113 { delete (Tensor3 *)vp; } 00114 00115 static void *duplicate_wsvg_Tensor3(void *vp) 00116 { return (new Tensor3(*(Tensor3 *)vp)); } 00117 00118 static void *allocate_wsvg_Tensor4() 00119 { return (void *)new Tensor4; } 00120 00121 static void deallocate_wsvg_Tensor4(void *vp) 00122 { delete (Tensor4 *)vp; } 00123 00124 static void *duplicate_wsvg_Tensor4(void *vp) 00125 { return (new Tensor4(*(Tensor4 *)vp)); } 00126 00127 static void *allocate_wsvg_Tensor5() 00128 { return (void *)new Tensor5; } 00129 00130 static void deallocate_wsvg_Tensor5(void *vp) 00131 { delete (Tensor5 *)vp; } 00132 00133 static void *duplicate_wsvg_Tensor5(void *vp) 00134 { return (new Tensor5(*(Tensor5 *)vp)); } 00135 00136 static void *allocate_wsvg_Tensor6() 00137 { return (void *)new Tensor6; } 00138 00139 static void deallocate_wsvg_Tensor6(void *vp) 00140 { delete (Tensor6 *)vp; } 00141 00142 static void *duplicate_wsvg_Tensor6(void *vp) 00143 { return (new Tensor6(*(Tensor6 *)vp)); } 00144 00145 static void *allocate_wsvg_Tensor7() 00146 { return (void *)new Tensor7; } 00147 00148 static void deallocate_wsvg_Tensor7(void *vp) 00149 { delete (Tensor7 *)vp; } 00150 00151 static void *duplicate_wsvg_Tensor7(void *vp) 00152 { return (new Tensor7(*(Tensor7 *)vp)); } 00153 00154 static void *allocate_wsvg_Timer() 00155 { return (void *)new Timer; } 00156 00157 static void deallocate_wsvg_Timer(void *vp) 00158 { delete (Timer *)vp; } 00159 00160 static void *duplicate_wsvg_Timer(void *vp) 00161 { return (new Timer(*(Timer *)vp)); } 00162 00163 static void *allocate_wsvg_ArrayOfIndex() 00164 { return (void *)new ArrayOfIndex; } 00165 00166 static void deallocate_wsvg_ArrayOfIndex(void *vp) 00167 { delete (ArrayOfIndex *)vp; } 00168 00169 static void *duplicate_wsvg_ArrayOfIndex(void *vp) 00170 { return (new ArrayOfIndex(*(ArrayOfIndex *)vp)); } 00171 00172 static void *allocate_wsvg_ArrayOfArrayOfIndex() 00173 { return (void *)new ArrayOfArrayOfIndex; } 00174 00175 static void deallocate_wsvg_ArrayOfArrayOfIndex(void *vp) 00176 { delete (ArrayOfArrayOfIndex *)vp; } 00177 00178 static void *duplicate_wsvg_ArrayOfArrayOfIndex(void *vp) 00179 { return (new ArrayOfArrayOfIndex(*(ArrayOfArrayOfIndex *)vp)); } 00180 00181 static void *allocate_wsvg_ArrayOfString() 00182 { return (void *)new ArrayOfString; } 00183 00184 static void deallocate_wsvg_ArrayOfString(void *vp) 00185 { delete (ArrayOfString *)vp; } 00186 00187 static void *duplicate_wsvg_ArrayOfString(void *vp) 00188 { return (new ArrayOfString(*(ArrayOfString *)vp)); } 00189 00190 static void *allocate_wsvg_ArrayOfVector() 00191 { return (void *)new ArrayOfVector; } 00192 00193 static void deallocate_wsvg_ArrayOfVector(void *vp) 00194 { delete (ArrayOfVector *)vp; } 00195 00196 static void *duplicate_wsvg_ArrayOfVector(void *vp) 00197 { return (new ArrayOfVector(*(ArrayOfVector *)vp)); } 00198 00199 static void *allocate_wsvg_ArrayOfMatrix() 00200 { return (void *)new ArrayOfMatrix; } 00201 00202 static void deallocate_wsvg_ArrayOfMatrix(void *vp) 00203 { delete (ArrayOfMatrix *)vp; } 00204 00205 static void *duplicate_wsvg_ArrayOfMatrix(void *vp) 00206 { return (new ArrayOfMatrix(*(ArrayOfMatrix *)vp)); } 00207 00208 static void *allocate_wsvg_ArrayOfArrayOfMatrix() 00209 { return (void *)new ArrayOfArrayOfMatrix; } 00210 00211 static void deallocate_wsvg_ArrayOfArrayOfMatrix(void *vp) 00212 { delete (ArrayOfArrayOfMatrix *)vp; } 00213 00214 static void *duplicate_wsvg_ArrayOfArrayOfMatrix(void *vp) 00215 { return (new ArrayOfArrayOfMatrix(*(ArrayOfArrayOfMatrix *)vp)); } 00216 00217 static void *allocate_wsvg_ArrayOfTensor3() 00218 { return (void *)new ArrayOfTensor3; } 00219 00220 static void deallocate_wsvg_ArrayOfTensor3(void *vp) 00221 { delete (ArrayOfTensor3 *)vp; } 00222 00223 static void *duplicate_wsvg_ArrayOfTensor3(void *vp) 00224 { return (new ArrayOfTensor3(*(ArrayOfTensor3 *)vp)); } 00225 00226 static void *allocate_wsvg_ArrayOfArrayOfTensor3() 00227 { return (void *)new ArrayOfArrayOfTensor3; } 00228 00229 static void deallocate_wsvg_ArrayOfArrayOfTensor3(void *vp) 00230 { delete (ArrayOfArrayOfTensor3 *)vp; } 00231 00232 static void *duplicate_wsvg_ArrayOfArrayOfTensor3(void *vp) 00233 { return (new ArrayOfArrayOfTensor3(*(ArrayOfArrayOfTensor3 *)vp)); } 00234 00235 static void *allocate_wsvg_ArrayOfTensor4() 00236 { return (void *)new ArrayOfTensor4; } 00237 00238 static void deallocate_wsvg_ArrayOfTensor4(void *vp) 00239 { delete (ArrayOfTensor4 *)vp; } 00240 00241 static void *duplicate_wsvg_ArrayOfTensor4(void *vp) 00242 { return (new ArrayOfTensor4(*(ArrayOfTensor4 *)vp)); } 00243 00244 static void *allocate_wsvg_ArrayOfTensor6() 00245 { return (void *)new ArrayOfTensor6; } 00246 00247 static void deallocate_wsvg_ArrayOfTensor6(void *vp) 00248 { delete (ArrayOfTensor6 *)vp; } 00249 00250 static void *duplicate_wsvg_ArrayOfTensor6(void *vp) 00251 { return (new ArrayOfTensor6(*(ArrayOfTensor6 *)vp)); } 00252 00253 static void *allocate_wsvg_ArrayOfTensor7() 00254 { return (void *)new ArrayOfTensor7; } 00255 00256 static void deallocate_wsvg_ArrayOfTensor7(void *vp) 00257 { delete (ArrayOfTensor7 *)vp; } 00258 00259 static void *duplicate_wsvg_ArrayOfTensor7(void *vp) 00260 { return (new ArrayOfTensor7(*(ArrayOfTensor7 *)vp)); } 00261 00262 static void *allocate_wsvg_ArrayOfArrayOfTensor6() 00263 { return (void *)new ArrayOfArrayOfTensor6; } 00264 00265 static void deallocate_wsvg_ArrayOfArrayOfTensor6(void *vp) 00266 { delete (ArrayOfArrayOfTensor6 *)vp; } 00267 00268 static void *duplicate_wsvg_ArrayOfArrayOfTensor6(void *vp) 00269 { return (new ArrayOfArrayOfTensor6(*(ArrayOfArrayOfTensor6 *)vp)); } 00270 00271 static void *allocate_wsvg_ArrayOfLineRecord() 00272 { return (void *)new ArrayOfLineRecord; } 00273 00274 static void deallocate_wsvg_ArrayOfLineRecord(void *vp) 00275 { delete (ArrayOfLineRecord *)vp; } 00276 00277 static void *duplicate_wsvg_ArrayOfLineRecord(void *vp) 00278 { return (new ArrayOfLineRecord(*(ArrayOfLineRecord *)vp)); } 00279 00280 static void *allocate_wsvg_ArrayOfArrayOfLineRecord() 00281 { return (void *)new ArrayOfArrayOfLineRecord; } 00282 00283 static void deallocate_wsvg_ArrayOfArrayOfLineRecord(void *vp) 00284 { delete (ArrayOfArrayOfLineRecord *)vp; } 00285 00286 static void *duplicate_wsvg_ArrayOfArrayOfLineRecord(void *vp) 00287 { return (new ArrayOfArrayOfLineRecord(*(ArrayOfArrayOfLineRecord *)vp)); } 00288 00289 static void *allocate_wsvg_ArrayOfLineshapeSpec() 00290 { return (void *)new ArrayOfLineshapeSpec; } 00291 00292 static void deallocate_wsvg_ArrayOfLineshapeSpec(void *vp) 00293 { delete (ArrayOfLineshapeSpec *)vp; } 00294 00295 static void *duplicate_wsvg_ArrayOfLineshapeSpec(void *vp) 00296 { return (new ArrayOfLineshapeSpec(*(ArrayOfLineshapeSpec *)vp)); } 00297 00298 static void *allocate_wsvg_ArrayOfArrayOfSpeciesTag() 00299 { return (void *)new ArrayOfArrayOfSpeciesTag; } 00300 00301 static void deallocate_wsvg_ArrayOfArrayOfSpeciesTag(void *vp) 00302 { delete (ArrayOfArrayOfSpeciesTag *)vp; } 00303 00304 static void *duplicate_wsvg_ArrayOfArrayOfSpeciesTag(void *vp) 00305 { return (new ArrayOfArrayOfSpeciesTag(*(ArrayOfArrayOfSpeciesTag *)vp)); } 00306 00307 static void *allocate_wsvg_Ppath() 00308 { return (void *)new Ppath; } 00309 00310 static void deallocate_wsvg_Ppath(void *vp) 00311 { delete (Ppath *)vp; } 00312 00313 static void *duplicate_wsvg_Ppath(void *vp) 00314 { return (new Ppath(*(Ppath *)vp)); } 00315 00316 static void *allocate_wsvg_ArrayOfPpath() 00317 { return (void *)new ArrayOfPpath; } 00318 00319 static void deallocate_wsvg_ArrayOfPpath(void *vp) 00320 { delete (ArrayOfPpath *)vp; } 00321 00322 static void *duplicate_wsvg_ArrayOfPpath(void *vp) 00323 { return (new ArrayOfPpath(*(ArrayOfPpath *)vp)); } 00324 00325 static void *allocate_wsvg_Agenda() 00326 { return (void *)new Agenda; } 00327 00328 static void deallocate_wsvg_Agenda(void *vp) 00329 { delete (Agenda *)vp; } 00330 00331 static void *duplicate_wsvg_Agenda(void *vp) 00332 { return (new Agenda(*(Agenda *)vp)); } 00333 00334 static void *allocate_wsvg_GridPos() 00335 { return (void *)new GridPos; } 00336 00337 static void deallocate_wsvg_GridPos(void *vp) 00338 { delete (GridPos *)vp; } 00339 00340 static void *duplicate_wsvg_GridPos(void *vp) 00341 { return (new GridPos(*(GridPos *)vp)); } 00342 00343 static void *allocate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos() 00344 { return (void *)new ArrayOfArrayOfArrayOfArrayOfGridPos; } 00345 00346 static void deallocate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos(void *vp) 00347 { delete (ArrayOfArrayOfArrayOfArrayOfGridPos *)vp; } 00348 00349 static void *duplicate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos(void *vp) 00350 { return (new ArrayOfArrayOfArrayOfArrayOfGridPos(*(ArrayOfArrayOfArrayOfArrayOfGridPos *)vp)); } 00351 00352 static void *allocate_wsvg_GasAbsLookup() 00353 { return (void *)new GasAbsLookup; } 00354 00355 static void deallocate_wsvg_GasAbsLookup(void *vp) 00356 { delete (GasAbsLookup *)vp; } 00357 00358 static void *duplicate_wsvg_GasAbsLookup(void *vp) 00359 { return (new GasAbsLookup(*(GasAbsLookup *)vp)); } 00360 00361 static void *allocate_wsvg_SingleScatteringData() 00362 { return (void *)new SingleScatteringData; } 00363 00364 static void deallocate_wsvg_SingleScatteringData(void *vp) 00365 { delete (SingleScatteringData *)vp; } 00366 00367 static void *duplicate_wsvg_SingleScatteringData(void *vp) 00368 { return (new SingleScatteringData(*(SingleScatteringData *)vp)); } 00369 00370 static void *allocate_wsvg_ArrayOfSingleScatteringData() 00371 { return (void *)new ArrayOfSingleScatteringData; } 00372 00373 static void deallocate_wsvg_ArrayOfSingleScatteringData(void *vp) 00374 { delete (ArrayOfSingleScatteringData *)vp; } 00375 00376 static void *duplicate_wsvg_ArrayOfSingleScatteringData(void *vp) 00377 { return (new ArrayOfSingleScatteringData(*(ArrayOfSingleScatteringData *)vp)); } 00378 00379 static void *allocate_wsvg_GField1() 00380 { return (void *)new GField1; } 00381 00382 static void deallocate_wsvg_GField1(void *vp) 00383 { delete (GField1 *)vp; } 00384 00385 static void *duplicate_wsvg_GField1(void *vp) 00386 { return (new GField1(*(GField1 *)vp)); } 00387 00388 static void *allocate_wsvg_GField2() 00389 { return (void *)new GField2; } 00390 00391 static void deallocate_wsvg_GField2(void *vp) 00392 { delete (GField2 *)vp; } 00393 00394 static void *duplicate_wsvg_GField2(void *vp) 00395 { return (new GField2(*(GField2 *)vp)); } 00396 00397 static void *allocate_wsvg_GField3() 00398 { return (void *)new GField3; } 00399 00400 static void deallocate_wsvg_GField3(void *vp) 00401 { delete (GField3 *)vp; } 00402 00403 static void *duplicate_wsvg_GField3(void *vp) 00404 { return (new GField3(*(GField3 *)vp)); } 00405 00406 static void *allocate_wsvg_GField4() 00407 { return (void *)new GField4; } 00408 00409 static void deallocate_wsvg_GField4(void *vp) 00410 { delete (GField4 *)vp; } 00411 00412 static void *duplicate_wsvg_GField4(void *vp) 00413 { return (new GField4(*(GField4 *)vp)); } 00414 00415 static void *allocate_wsvg_ArrayOfGField1() 00416 { return (void *)new ArrayOfGField1; } 00417 00418 static void deallocate_wsvg_ArrayOfGField1(void *vp) 00419 { delete (ArrayOfGField1 *)vp; } 00420 00421 static void *duplicate_wsvg_ArrayOfGField1(void *vp) 00422 { return (new ArrayOfGField1(*(ArrayOfGField1 *)vp)); } 00423 00424 static void *allocate_wsvg_ArrayOfGField2() 00425 { return (void *)new ArrayOfGField2; } 00426 00427 static void deallocate_wsvg_ArrayOfGField2(void *vp) 00428 { delete (ArrayOfGField2 *)vp; } 00429 00430 static void *duplicate_wsvg_ArrayOfGField2(void *vp) 00431 { return (new ArrayOfGField2(*(ArrayOfGField2 *)vp)); } 00432 00433 static void *allocate_wsvg_ArrayOfGField3() 00434 { return (void *)new ArrayOfGField3; } 00435 00436 static void deallocate_wsvg_ArrayOfGField3(void *vp) 00437 { delete (ArrayOfGField3 *)vp; } 00438 00439 static void *duplicate_wsvg_ArrayOfGField3(void *vp) 00440 { return (new ArrayOfGField3(*(ArrayOfGField3 *)vp)); } 00441 00442 static void *allocate_wsvg_ArrayOfGField4() 00443 { return (void *)new ArrayOfGField4; } 00444 00445 static void deallocate_wsvg_ArrayOfGField4(void *vp) 00446 { delete (ArrayOfGField4 *)vp; } 00447 00448 static void *duplicate_wsvg_ArrayOfGField4(void *vp) 00449 { return (new ArrayOfGField4(*(ArrayOfGField4 *)vp)); } 00450 00451 static void *allocate_wsvg_ArrayOfArrayOfGField1() 00452 { return (void *)new ArrayOfArrayOfGField1; } 00453 00454 static void deallocate_wsvg_ArrayOfArrayOfGField1(void *vp) 00455 { delete (ArrayOfArrayOfGField1 *)vp; } 00456 00457 static void *duplicate_wsvg_ArrayOfArrayOfGField1(void *vp) 00458 { return (new ArrayOfArrayOfGField1(*(ArrayOfArrayOfGField1 *)vp)); } 00459 00460 static void *allocate_wsvg_ArrayOfArrayOfGField3() 00461 { return (void *)new ArrayOfArrayOfGField3; } 00462 00463 static void deallocate_wsvg_ArrayOfArrayOfGField3(void *vp) 00464 { delete (ArrayOfArrayOfGField3 *)vp; } 00465 00466 static void *duplicate_wsvg_ArrayOfArrayOfGField3(void *vp) 00467 { return (new ArrayOfArrayOfGField3(*(ArrayOfArrayOfGField3 *)vp)); } 00468 00469 static void *allocate_wsvg_ArrayOfRetrievalQuantity() 00470 { return (void *)new ArrayOfRetrievalQuantity; } 00471 00472 static void deallocate_wsvg_ArrayOfRetrievalQuantity(void *vp) 00473 { delete (ArrayOfRetrievalQuantity *)vp; } 00474 00475 static void *duplicate_wsvg_ArrayOfRetrievalQuantity(void *vp) 00476 { return (new ArrayOfRetrievalQuantity(*(ArrayOfRetrievalQuantity *)vp)); } 00477 00478 static void *allocate_wsvg_MCAntenna() 00479 { return (void *)new MCAntenna; } 00480 00481 static void deallocate_wsvg_MCAntenna(void *vp) 00482 { delete (MCAntenna *)vp; } 00483 00484 static void *duplicate_wsvg_MCAntenna(void *vp) 00485 { return (new MCAntenna(*(MCAntenna *)vp)); } 00486 00487 static void *allocate_wsvg_SLIData2() 00488 { return (void *)new SLIData2; } 00489 00490 static void deallocate_wsvg_SLIData2(void *vp) 00491 { delete (SLIData2 *)vp; } 00492 00493 static void *duplicate_wsvg_SLIData2(void *vp) 00494 { return (new SLIData2(*(SLIData2 *)vp)); } 00495 00496 public: 00500 WorkspaceMemoryHandler () 00501 { 00502 allocfp[0] = allocate_wsvg_Any; 00503 deallocfp[0] = deallocate_wsvg_Any; 00504 duplicatefp[0] = duplicate_wsvg_Any; 00505 allocfp[1] = allocate_wsvg_Index; 00506 deallocfp[1] = deallocate_wsvg_Index; 00507 duplicatefp[1] = duplicate_wsvg_Index; 00508 allocfp[2] = allocate_wsvg_Numeric; 00509 deallocfp[2] = deallocate_wsvg_Numeric; 00510 duplicatefp[2] = duplicate_wsvg_Numeric; 00511 allocfp[3] = allocate_wsvg_String; 00512 deallocfp[3] = deallocate_wsvg_String; 00513 duplicatefp[3] = duplicate_wsvg_String; 00514 allocfp[4] = allocate_wsvg_Vector; 00515 deallocfp[4] = deallocate_wsvg_Vector; 00516 duplicatefp[4] = duplicate_wsvg_Vector; 00517 allocfp[5] = allocate_wsvg_Matrix; 00518 deallocfp[5] = deallocate_wsvg_Matrix; 00519 duplicatefp[5] = duplicate_wsvg_Matrix; 00520 allocfp[6] = allocate_wsvg_Sparse; 00521 deallocfp[6] = deallocate_wsvg_Sparse; 00522 duplicatefp[6] = duplicate_wsvg_Sparse; 00523 allocfp[7] = allocate_wsvg_Tensor3; 00524 deallocfp[7] = deallocate_wsvg_Tensor3; 00525 duplicatefp[7] = duplicate_wsvg_Tensor3; 00526 allocfp[8] = allocate_wsvg_Tensor4; 00527 deallocfp[8] = deallocate_wsvg_Tensor4; 00528 duplicatefp[8] = duplicate_wsvg_Tensor4; 00529 allocfp[9] = allocate_wsvg_Tensor5; 00530 deallocfp[9] = deallocate_wsvg_Tensor5; 00531 duplicatefp[9] = duplicate_wsvg_Tensor5; 00532 allocfp[10] = allocate_wsvg_Tensor6; 00533 deallocfp[10] = deallocate_wsvg_Tensor6; 00534 duplicatefp[10] = duplicate_wsvg_Tensor6; 00535 allocfp[11] = allocate_wsvg_Tensor7; 00536 deallocfp[11] = deallocate_wsvg_Tensor7; 00537 duplicatefp[11] = duplicate_wsvg_Tensor7; 00538 allocfp[12] = allocate_wsvg_Timer; 00539 deallocfp[12] = deallocate_wsvg_Timer; 00540 duplicatefp[12] = duplicate_wsvg_Timer; 00541 allocfp[13] = allocate_wsvg_ArrayOfIndex; 00542 deallocfp[13] = deallocate_wsvg_ArrayOfIndex; 00543 duplicatefp[13] = duplicate_wsvg_ArrayOfIndex; 00544 allocfp[14] = allocate_wsvg_ArrayOfArrayOfIndex; 00545 deallocfp[14] = deallocate_wsvg_ArrayOfArrayOfIndex; 00546 duplicatefp[14] = duplicate_wsvg_ArrayOfArrayOfIndex; 00547 allocfp[15] = allocate_wsvg_ArrayOfString; 00548 deallocfp[15] = deallocate_wsvg_ArrayOfString; 00549 duplicatefp[15] = duplicate_wsvg_ArrayOfString; 00550 allocfp[16] = allocate_wsvg_ArrayOfVector; 00551 deallocfp[16] = deallocate_wsvg_ArrayOfVector; 00552 duplicatefp[16] = duplicate_wsvg_ArrayOfVector; 00553 allocfp[17] = allocate_wsvg_ArrayOfMatrix; 00554 deallocfp[17] = deallocate_wsvg_ArrayOfMatrix; 00555 duplicatefp[17] = duplicate_wsvg_ArrayOfMatrix; 00556 allocfp[18] = allocate_wsvg_ArrayOfArrayOfMatrix; 00557 deallocfp[18] = deallocate_wsvg_ArrayOfArrayOfMatrix; 00558 duplicatefp[18] = duplicate_wsvg_ArrayOfArrayOfMatrix; 00559 allocfp[19] = allocate_wsvg_ArrayOfTensor3; 00560 deallocfp[19] = deallocate_wsvg_ArrayOfTensor3; 00561 duplicatefp[19] = duplicate_wsvg_ArrayOfTensor3; 00562 allocfp[20] = allocate_wsvg_ArrayOfArrayOfTensor3; 00563 deallocfp[20] = deallocate_wsvg_ArrayOfArrayOfTensor3; 00564 duplicatefp[20] = duplicate_wsvg_ArrayOfArrayOfTensor3; 00565 allocfp[21] = allocate_wsvg_ArrayOfTensor4; 00566 deallocfp[21] = deallocate_wsvg_ArrayOfTensor4; 00567 duplicatefp[21] = duplicate_wsvg_ArrayOfTensor4; 00568 allocfp[22] = allocate_wsvg_ArrayOfTensor6; 00569 deallocfp[22] = deallocate_wsvg_ArrayOfTensor6; 00570 duplicatefp[22] = duplicate_wsvg_ArrayOfTensor6; 00571 allocfp[23] = allocate_wsvg_ArrayOfTensor7; 00572 deallocfp[23] = deallocate_wsvg_ArrayOfTensor7; 00573 duplicatefp[23] = duplicate_wsvg_ArrayOfTensor7; 00574 allocfp[24] = allocate_wsvg_ArrayOfArrayOfTensor6; 00575 deallocfp[24] = deallocate_wsvg_ArrayOfArrayOfTensor6; 00576 duplicatefp[24] = duplicate_wsvg_ArrayOfArrayOfTensor6; 00577 allocfp[25] = allocate_wsvg_ArrayOfLineRecord; 00578 deallocfp[25] = deallocate_wsvg_ArrayOfLineRecord; 00579 duplicatefp[25] = duplicate_wsvg_ArrayOfLineRecord; 00580 allocfp[26] = allocate_wsvg_ArrayOfArrayOfLineRecord; 00581 deallocfp[26] = deallocate_wsvg_ArrayOfArrayOfLineRecord; 00582 duplicatefp[26] = duplicate_wsvg_ArrayOfArrayOfLineRecord; 00583 allocfp[27] = allocate_wsvg_ArrayOfLineshapeSpec; 00584 deallocfp[27] = deallocate_wsvg_ArrayOfLineshapeSpec; 00585 duplicatefp[27] = duplicate_wsvg_ArrayOfLineshapeSpec; 00586 allocfp[28] = allocate_wsvg_ArrayOfArrayOfSpeciesTag; 00587 deallocfp[28] = deallocate_wsvg_ArrayOfArrayOfSpeciesTag; 00588 duplicatefp[28] = duplicate_wsvg_ArrayOfArrayOfSpeciesTag; 00589 allocfp[29] = allocate_wsvg_Ppath; 00590 deallocfp[29] = deallocate_wsvg_Ppath; 00591 duplicatefp[29] = duplicate_wsvg_Ppath; 00592 allocfp[30] = allocate_wsvg_ArrayOfPpath; 00593 deallocfp[30] = deallocate_wsvg_ArrayOfPpath; 00594 duplicatefp[30] = duplicate_wsvg_ArrayOfPpath; 00595 allocfp[31] = allocate_wsvg_Agenda; 00596 deallocfp[31] = deallocate_wsvg_Agenda; 00597 duplicatefp[31] = duplicate_wsvg_Agenda; 00598 allocfp[32] = allocate_wsvg_GridPos; 00599 deallocfp[32] = deallocate_wsvg_GridPos; 00600 duplicatefp[32] = duplicate_wsvg_GridPos; 00601 allocfp[33] = allocate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos; 00602 deallocfp[33] = deallocate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos; 00603 duplicatefp[33] = duplicate_wsvg_ArrayOfArrayOfArrayOfArrayOfGridPos; 00604 allocfp[34] = allocate_wsvg_GasAbsLookup; 00605 deallocfp[34] = deallocate_wsvg_GasAbsLookup; 00606 duplicatefp[34] = duplicate_wsvg_GasAbsLookup; 00607 allocfp[35] = allocate_wsvg_SingleScatteringData; 00608 deallocfp[35] = deallocate_wsvg_SingleScatteringData; 00609 duplicatefp[35] = duplicate_wsvg_SingleScatteringData; 00610 allocfp[36] = allocate_wsvg_ArrayOfSingleScatteringData; 00611 deallocfp[36] = deallocate_wsvg_ArrayOfSingleScatteringData; 00612 duplicatefp[36] = duplicate_wsvg_ArrayOfSingleScatteringData; 00613 allocfp[37] = allocate_wsvg_GField1; 00614 deallocfp[37] = deallocate_wsvg_GField1; 00615 duplicatefp[37] = duplicate_wsvg_GField1; 00616 allocfp[38] = allocate_wsvg_GField2; 00617 deallocfp[38] = deallocate_wsvg_GField2; 00618 duplicatefp[38] = duplicate_wsvg_GField2; 00619 allocfp[39] = allocate_wsvg_GField3; 00620 deallocfp[39] = deallocate_wsvg_GField3; 00621 duplicatefp[39] = duplicate_wsvg_GField3; 00622 allocfp[40] = allocate_wsvg_GField4; 00623 deallocfp[40] = deallocate_wsvg_GField4; 00624 duplicatefp[40] = duplicate_wsvg_GField4; 00625 allocfp[41] = allocate_wsvg_ArrayOfGField1; 00626 deallocfp[41] = deallocate_wsvg_ArrayOfGField1; 00627 duplicatefp[41] = duplicate_wsvg_ArrayOfGField1; 00628 allocfp[42] = allocate_wsvg_ArrayOfGField2; 00629 deallocfp[42] = deallocate_wsvg_ArrayOfGField2; 00630 duplicatefp[42] = duplicate_wsvg_ArrayOfGField2; 00631 allocfp[43] = allocate_wsvg_ArrayOfGField3; 00632 deallocfp[43] = deallocate_wsvg_ArrayOfGField3; 00633 duplicatefp[43] = duplicate_wsvg_ArrayOfGField3; 00634 allocfp[44] = allocate_wsvg_ArrayOfGField4; 00635 deallocfp[44] = deallocate_wsvg_ArrayOfGField4; 00636 duplicatefp[44] = duplicate_wsvg_ArrayOfGField4; 00637 allocfp[45] = allocate_wsvg_ArrayOfArrayOfGField1; 00638 deallocfp[45] = deallocate_wsvg_ArrayOfArrayOfGField1; 00639 duplicatefp[45] = duplicate_wsvg_ArrayOfArrayOfGField1; 00640 allocfp[46] = allocate_wsvg_ArrayOfArrayOfGField3; 00641 deallocfp[46] = deallocate_wsvg_ArrayOfArrayOfGField3; 00642 duplicatefp[46] = duplicate_wsvg_ArrayOfArrayOfGField3; 00643 allocfp[47] = allocate_wsvg_ArrayOfRetrievalQuantity; 00644 deallocfp[47] = deallocate_wsvg_ArrayOfRetrievalQuantity; 00645 duplicatefp[47] = duplicate_wsvg_ArrayOfRetrievalQuantity; 00646 allocfp[48] = allocate_wsvg_MCAntenna; 00647 deallocfp[48] = deallocate_wsvg_MCAntenna; 00648 duplicatefp[48] = duplicate_wsvg_MCAntenna; 00649 allocfp[49] = allocate_wsvg_SLIData2; 00650 deallocfp[49] = deallocate_wsvg_SLIData2; 00651 duplicatefp[49] = duplicate_wsvg_SLIData2; 00652 } 00653 00657 void *allocate (Index wsvg) 00658 { 00659 return allocfp[wsvg](); 00660 } 00661 00665 void deallocate (Index wsvg, void *vp) 00666 { 00667 deallocfp[wsvg](vp); 00668 } 00669 00673 void *duplicate (Index wsvg, void *vp) 00674 { 00675 return duplicatefp[wsvg](vp); 00676 } 00677 00678 }; 00679 00680 #endif // auto_workspace_h