validate.c 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. /*
  2. * Copyright (c) 1983-2013 Trevor Wishart and Composers Desktop Project Ltd
  3. * http://www.trevorwishart.co.uk
  4. * http://www.composersdesktop.com
  5. *
  6. This file is part of the CDP System.
  7. The CDP System is free software; you can redistribute it
  8. and/or modify it under the terms of the GNU Lesser General Public
  9. License as published by the Free Software Foundation; either
  10. version 2.1 of the License, or (at your option) any later version.
  11. The CDP System is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU Lesser General Public License for more details.
  15. You should have received a copy of the GNU Lesser General Public
  16. License along with the CDP System; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18. 02111-1307 USA
  19. *
  20. */
  21. /* floatsam version */
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <math.h>
  25. /*RWD*/
  26. #include <memory.h>
  27. #include <structures.h>
  28. #include <globcon.h>
  29. #include <tkglobals.h>
  30. #include <processno.h>
  31. #include <filetype.h>
  32. void validate(int applicno,int *valid);
  33. /******************************* ALLOCATE_AND_INITIALISE_VALIDITY_FLAGS *******************************/
  34. int allocate_and_initialise_validity_flags(int **valid,int *validcnt)
  35. {
  36. int k = sizeof(int) * CHARBITSIZE;
  37. *validcnt = (MAX_PROCESS_NO + k - 1)/k;
  38. if((*valid = (int *)malloc((*validcnt) * sizeof(int)))==NULL) {
  39. sprintf(errstr,"ERROR: INSUFFICIENT MEMORY for validation flags\n");
  40. return(MEMORY_ERROR);
  41. }
  42. memset((char *)(*valid),0,(*validcnt) * sizeof(int));
  43. return(FINISHED);
  44. }
  45. /******************************* VALIDATE *******************************/
  46. void validate(int process,int *valid)
  47. {
  48. int k = sizeof(int) * CHARBITSIZE;
  49. int flagno = (process - 1) / k; /* TRUNCATE */ /* e.g. 36 -> flag 2 (counted from zero) */
  50. int bitno = (process - 1) % k; /* e.g. 36 -> bit 3 (counted from zero) */
  51. int mask = 1;
  52. if(bitno > 0)
  53. mask <<= bitno;
  54. valid[flagno] |= mask;
  55. }
  56. /******************************* VALID_APPLICATION *******************************/
  57. int valid_application(int process,int *valid)
  58. {
  59. int k = sizeof(int) * CHARBITSIZE;
  60. int flagno = (process - 1) / k; /* TRUNCATE */ /* e.g. 36 -> flag 2 (counted from zero) */
  61. int bitno = (process - 1) % k; /* e.g. 36 -> bit 3 (counted from zero) */
  62. int mask = 1;
  63. if(bitno > 0)
  64. mask <<= bitno;
  65. return(valid[flagno] & mask);
  66. }
  67. /******************************* ESTABLISH_APPLICATION_VALIDITIES *******************************/
  68. int establish_application_validities(int filetype,int channels,int *valid)
  69. {
  70. /* VALID REGARDLESS OF INFILE TYPE */
  71. validate(ENV_CREATE,valid);
  72. validate(MIXFORMAT,valid);
  73. validate(HOUSE_DISK,valid);
  74. validate(HOUSE_BUNDLE,valid);
  75. validate(INFO_PROPS,valid);
  76. validate(INFO_SFLEN,valid);
  77. validate(INFO_MAXSAMP,valid);
  78. validate(INFO_MAXSAMP2,valid);
  79. validate(INFO_DIFF,valid);
  80. validate(INFO_MUSUNITS,valid);
  81. validate(SYNTH_WAVE,valid);
  82. validate(MULTI_SYN,valid);
  83. validate(SYNTH_NOISE,valid);
  84. validate(SYNTH_SIL,valid);
  85. validate(HOUSE_DEL,valid);
  86. //TW NEW CASES
  87. validate(P_GEN,valid);
  88. validate(CLICK,valid);
  89. validate(ENVSYN,valid);
  90. validate(SIN_TAB,valid);
  91. validate(SYNTH_SPEC,valid);
  92. /* VALIDITY DEPENDS ON INFILE TYPE */
  93. switch(filetype) {
  94. case(ANALFILE):
  95. validate(HOUSE_COPY,valid);
  96. validate(ACCU,valid);
  97. validate(ALT,valid);
  98. validate(ARPE,valid);
  99. validate(AVRG,valid);
  100. validate(BARE,valid);
  101. validate(BLTR,valid);
  102. validate(BLUR,valid);
  103. validate(BRIDGE,valid);
  104. validate(CHANNEL,valid);
  105. validate(CHORD,valid);
  106. validate(CHORUS,valid);
  107. validate(CLEAN,valid);
  108. validate(CROSS,valid);
  109. validate(CUT,valid);
  110. validate(DIFF,valid);
  111. validate(DRUNK,valid);
  112. validate(EXAG,valid);
  113. validate(FILT,valid);
  114. validate(FOCUS,valid);
  115. validate(FOLD,valid);
  116. validate(FORM,valid);
  117. validate(FORMANTS,valid);
  118. validate(FORMSEE,valid);
  119. validate(FREEZE,valid);
  120. validate(FREEZE2,valid);
  121. validate(FREQUENCY,valid);
  122. validate(GAIN,valid);
  123. validate(GLIDE,valid);
  124. validate(GLIS,valid);
  125. validate(GRAB,valid);
  126. validate(GREQ,valid);
  127. validate(INVERT,valid);
  128. validate(LEAF,valid);
  129. validate(LEVEL,valid);
  130. validate(LIMIT,valid);
  131. validate(MAGNIFY,valid);
  132. validate(MAX,valid);
  133. validate(MEAN,valid);
  134. validate(MORPH,valid);
  135. validate(MULTRANS,valid);
  136. validate(NOISE,valid);
  137. validate(OCT,valid);
  138. validate(OCTVU,valid);
  139. validate(PEAK,valid);
  140. validate(PICK,valid);
  141. validate(PITCH,valid);
  142. validate(PLUCK,valid);
  143. validate(PRINT,valid);
  144. validate(REPORT,valid);
  145. validate(SCAT,valid);
  146. validate(SHIFT,valid);
  147. validate(SHIFTP,valid);
  148. validate(SHUFFLE,valid);
  149. validate(SPLIT,valid);
  150. validate(SPREAD,valid);
  151. validate(STEP,valid);
  152. validate(STRETCH,valid);
  153. validate(SUM,valid);
  154. validate(SUPR,valid);
  155. validate(S_TRACE,valid);
  156. /***
  157. validate(TRACK,valid);
  158. ***/
  159. validate(TRNSF,valid);
  160. validate(TRNSP,valid);
  161. validate(TSTRETCH,valid);
  162. validate(TUNE,valid);
  163. validate(VOCODE,valid);
  164. /***
  165. validate(WARP,valid);
  166. ***/
  167. validate(WAVER,valid);
  168. validate(WEAVE,valid);
  169. validate(WINDOWCNT,valid);
  170. validate(PVOC_SYNTH,valid);
  171. //TW NEW CASES
  172. validate(ANALENV,valid);
  173. validate(VFILT,valid);
  174. break;
  175. case(PITCHFILE):
  176. validate(HOUSE_COPY,valid);
  177. validate(MAKE,valid);
  178. validate(P_FIX,valid);
  179. validate(P_APPROX,valid);
  180. validate(P_INVERT,valid);
  181. validate(P_QUANTISE,valid);
  182. validate(P_RANDOMISE,valid);
  183. validate(P_SMOOTH,valid);
  184. //TW NEW CASES
  185. validate(P_SYNTH,valid);
  186. validate(P_VOWELS,valid);
  187. validate(P_INSERT,valid);
  188. validate(P_SINSERT,valid);
  189. validate(P_PTOSIL,valid);
  190. validate(P_NTOSIL,valid);
  191. validate(MAKE2,valid);
  192. validate(P_INTERP,valid);
  193. validate(P_VIBRATO,valid);
  194. validate(P_EXAG,valid);
  195. validate(P_TRANSPOSE,valid);
  196. validate(P_HEAR,valid);
  197. validate(P_CUT,valid);
  198. validate(P_INFO,valid);
  199. validate(P_SEE,valid);
  200. validate(P_WRITE,valid);
  201. validate(P_ZEROS,valid);
  202. validate(REPITCH,valid);
  203. validate(REPITCHB,valid);
  204. validate(P_BINTOBRK,valid);
  205. break;
  206. case(TRANSPOSFILE):
  207. validate(HOUSE_COPY,valid);
  208. validate(P_SEE,valid);
  209. validate(P_WRITE,valid);
  210. validate(REPITCH,valid);
  211. validate(REPITCHB,valid);
  212. break;
  213. case(FORMANTFILE):
  214. validate(HOUSE_COPY,valid);
  215. validate(FMNTSEE,valid);
  216. break;
  217. case(SNDFILE):
  218. //TW NEW CASES
  219. validate(TOPNTAIL_CLICKS,valid);
  220. validate(DEL_PERM2,valid);
  221. validate(HOUSE_BAKUP,valid);
  222. validate(HOUSE_GATE,valid);
  223. validate(EDIT_CUTMANY,valid);
  224. validate(STACK,valid);
  225. validate(SHUDDER,valid);
  226. validate(RANDCUTS,valid);
  227. validate(RANDCHUNKS,valid);
  228. validate(HOUSE_COPY,valid);
  229. validate(HOUSE_CHANS,valid);
  230. if(channels==MONO) {
  231. validate(DISTORT,valid);
  232. validate(DISTORT_ENV,valid);
  233. validate(DISTORT_AVG,valid);
  234. validate(DISTORT_OMT,valid);
  235. validate(DISTORT_MLT,valid);
  236. validate(DISTORT_DIV,valid);
  237. validate(DISTORT_HRM,valid);
  238. validate(DISTORT_FRC,valid);
  239. validate(DISTORT_REV,valid);
  240. validate(DISTORT_SHUF,valid);
  241. validate(DISTORT_RPT,valid);
  242. validate(DISTORT_RPT2,valid);
  243. validate(DISTORT_RPTFL,valid);
  244. validate(DISTORT_INTP,valid);
  245. validate(DISTORT_DEL,valid);
  246. validate(DISTORT_RPL,valid);
  247. validate(DISTORT_TEL,valid);
  248. validate(DISTORT_FLT,valid);
  249. validate(DISTORT_INT,valid);
  250. validate(DISTORT_CYCLECNT,valid);
  251. validate(DISTORT_PCH,valid);
  252. validate(DISTORT_OVERLOAD,valid);
  253. //TW NEW CASES
  254. validate(DISTORT_PULSED,valid);
  255. validate(NOISE_SUPRESS,valid);
  256. validate(CYCINBETWEEN,valid);
  257. validate(GREV,valid);
  258. }
  259. validate(ZIGZAG,valid);
  260. validate(LOOP,valid);
  261. validate(SCRAMBLE,valid);
  262. validate(ITERATE,valid);
  263. validate(ITERATE_EXTEND,valid);
  264. validate(DRUNKWALK,valid);
  265. //TW NEW CASES
  266. validate(TIME_GRID,valid);
  267. validate(SEQUENCER2,valid);
  268. validate(SEQUENCER,valid);
  269. validate(CONVOLVE,valid);
  270. validate(BAKTOBAK,valid);
  271. if(channels==MONO) {
  272. validate(SIMPLE_TEX,valid);
  273. validate(GROUPS,valid);
  274. validate(MOTIFS,valid);
  275. validate(MOTIFSIN,valid);
  276. validate(DECORATED,valid);
  277. validate(PREDECOR,valid);
  278. validate(POSTDECOR,valid);
  279. validate(ORNATE,valid);
  280. validate(PREORNATE,valid);
  281. validate(POSTORNATE,valid);
  282. validate(TIMED,valid);
  283. validate(TGROUPS,valid);
  284. validate(TMOTIFS,valid);
  285. validate(TMOTIFSIN,valid);
  286. validate(PVOC_ANAL,valid);
  287. validate(PVOC_EXTRACT,valid);
  288. validate(RRRR_EXTEND,valid);
  289. validate(SSSS_EXTEND,valid);
  290. }
  291. validate(GRAIN_COUNT,valid);
  292. validate(GRAIN_OMIT,valid);
  293. validate(GRAIN_DUPLICATE,valid);
  294. validate(GRAIN_REORDER,valid);
  295. validate(GRAIN_REPITCH,valid);
  296. validate(GRAIN_RERHYTHM,valid);
  297. validate(GRAIN_REMOTIF,valid);
  298. validate(GRAIN_TIMEWARP,valid);
  299. validate(GRAIN_GET,valid);
  300. validate(GRAIN_POSITION,valid);
  301. validate(GRAIN_ALIGN,valid);
  302. validate(GRAIN_REVERSE,valid);
  303. validate(ENV_EXTRACT,valid);
  304. validate(ENV_IMPOSE,valid);
  305. //TW NEW CASE
  306. validate(ENV_PROPOR,valid);
  307. validate(ENV_REPLACE,valid);
  308. validate(ENV_WARPING,valid);
  309. validate(ENV_DOVETAILING,valid);
  310. validate(ENV_CURTAILING,valid);
  311. validate(ENV_SWELL,valid);
  312. validate(ENV_ATTACK,valid);
  313. if(channels==1)
  314. validate(ENV_PLUCK,valid);
  315. validate(ENV_TREMOL,valid);
  316. validate(MIXTWO,valid);
  317. //TW NEW CASES
  318. validate(MIX_AT_STEP,valid);
  319. validate(MIXMANY,valid);
  320. validate(MIXBALANCE,valid);
  321. validate(MIXCROSS,valid);
  322. if(channels==1)
  323. validate(MIXINTERL,valid);
  324. validate(MIXINBETWEEN,valid);
  325. validate(EQ,valid);
  326. validate(LPHP,valid);
  327. validate(FSTATVAR,valid);
  328. validate(FLTBANKN,valid);
  329. validate(FLTBANKC,valid);
  330. validate(FLTBANKU,valid);
  331. validate(FLTBANKV,valid);
  332. validate(FLTBANKV2,valid);
  333. validate(FLTITER,valid);
  334. validate(FLTSWEEP,valid);
  335. validate(ALLPASS,valid);
  336. validate(MOD_LOUDNESS,valid);
  337. validate(MOD_SPACE,valid);
  338. //TW NEW CASE
  339. validate(SCALED_PAN,valid);
  340. validate(MOD_PITCH,valid);
  341. validate(MOD_REVECHO,valid);
  342. validate(MOD_RADICAL,valid);
  343. validate(BRASSAGE,valid);
  344. validate(SAUSAGE,valid);
  345. if(channels==MONO) {
  346. validate(EDIT_ZCUT,valid);
  347. validate(MANY_ZCUTS,valid);
  348. }
  349. validate(EDIT_CUT,valid);
  350. validate(EDIT_CUTEND,valid);
  351. validate(EDIT_EXCISE,valid);
  352. validate(EDIT_EXCISEMANY,valid);
  353. validate(INSERTSIL_MANY,valid);
  354. validate(EDIT_INSERT,valid);
  355. //TW NEW CASE
  356. validate(EDIT_INSERT2,valid);
  357. validate(EDIT_INSERTSIL,valid);
  358. validate(EDIT_JOIN,valid);
  359. validate(JOIN_SEQ,valid);
  360. validate(JOIN_SEQDYN,valid);
  361. validate(HOUSE_COPY,valid);
  362. validate(HOUSE_SPEC,valid);
  363. validate(HOUSE_EXTRACT,valid);
  364. validate(INFO_TIMELIST,valid);
  365. validate(INFO_LOUDLIST,valid);
  366. validate(INFO_TIMESUM,valid);
  367. validate(INFO_TIMEDIFF,valid);
  368. validate(INFO_SAMPTOTIME,valid);
  369. validate(INFO_TIMETOSAMP,valid);
  370. validate(INFO_LOUDCHAN,valid);
  371. validate(INFO_FINDHOLE,valid);
  372. validate(INFO_CDIFF,valid);
  373. validate(INFO_PRNTSND,valid);
  374. validate(TWIXT,valid);
  375. validate(SPHINX,valid);
  376. validate(MIXDUMMY,valid);
  377. //TW NEW CASES
  378. validate(MIX_ON_GRID,valid);
  379. validate(AUTOMIX,valid);
  380. validate(DOUBLETS,valid);
  381. validate(SYLLABS,valid);
  382. validate(HOUSE_GATE2,valid);
  383. if(channels==2)
  384. validate(FIND_PANPOS,valid);
  385. validate(GRAIN_ASSESS,valid);
  386. validate(ZCROSS_RATIO,valid);
  387. validate(ACC_STREAM,valid);
  388. break;
  389. case(ENVFILE):
  390. validate(HOUSE_COPY,valid);
  391. validate(ENV_RESHAPING,valid);
  392. validate(ENV_ENVTOBRK,valid);
  393. validate(ENV_ENVTODBBRK,valid);
  394. break;
  395. case(SNDLIST_OR_SYNCLIST_LINELIST_OR_WORDLIST): /* list of snds AT SAME SRATE */
  396. case(SNDLIST_OR_SYNCLIST_OR_WORDLIST):
  397. validate(HOUSE_COPY,valid);
  398. validate(MIXSYNC,valid);
  399. validate(MIXSYNCATT,valid);
  400. validate(HOUSE_SORT,valid);
  401. validate(WORDCNT,valid);
  402. break;
  403. case(SNDLIST_OR_LINELIST_OR_WORDLIST): /* list of snds NOT ALL at same srate */
  404. case(SNDLIST_OR_WORDLIST):
  405. validate(HOUSE_COPY,valid);
  406. validate(HOUSE_SORT,valid);
  407. validate(WORDCNT,valid);
  408. break;
  409. case(MIXLIST_OR_LINELIST_OR_WORDLIST):
  410. validate(HOUSE_COPY,valid);
  411. validate(MIX,valid);
  412. validate(MIX_MODEL,valid);
  413. validate(MIXTEST,valid);
  414. validate(MIXMAX,valid);
  415. validate(MIXTWARP,valid);
  416. validate(MIXSWARP,valid);
  417. validate(MIXGAIN,valid);
  418. validate(MIXSHUFL,valid);
  419. validate(MIXSYNC,valid);
  420. validate(MIXSYNCATT,valid);
  421. //TW NEW CASES
  422. validate(ADDTOMIX,valid);
  423. validate(WORDCNT,valid);
  424. //TW NEW CASES
  425. validate(MIX_PAN,valid);
  426. break;
  427. case(MIXLIST_OR_WORDLIST):
  428. validate(HOUSE_COPY,valid);
  429. validate(MIX,valid);
  430. validate(MIX_MODEL,valid);
  431. validate(MIXTEST,valid);
  432. validate(MIXMAX,valid);
  433. validate(MIXTWARP,valid);
  434. validate(MIXSWARP,valid);
  435. validate(MIXGAIN,valid);
  436. validate(MIXSHUFL,valid);
  437. validate(MIXSYNC,valid);
  438. validate(MIXSYNCATT,valid);
  439. //TW NEW CASE
  440. validate(ADDTOMIX,valid);
  441. validate(WORDCNT,valid);
  442. //TW NEW CASE
  443. validate(MIX_PAN,valid);
  444. break;
  445. case(SYNCLIST_OR_LINELIST_OR_WORDLIST): /* i.e. NOT a sndlist */
  446. validate(HOUSE_COPY,valid);
  447. validate(MIXSYNCATT,valid);
  448. validate(HOUSE_SORT,valid);
  449. validate(WORDCNT,valid);
  450. break;
  451. case(SYNCLIST_OR_WORDLIST): /* i.e. NOT a sndlist */
  452. validate(HOUSE_COPY,valid);
  453. validate(MIXSYNCATT,valid);
  454. validate(HOUSE_SORT,valid);
  455. validate(WORDCNT,valid);
  456. break;
  457. case(LINELIST_OR_WORDLIST):
  458. validate(HOUSE_COPY,valid);
  459. validate(HOUSE_SORT,valid);
  460. validate(WORDCNT,valid);
  461. validate(BATCH_EXPAND,valid);
  462. break;
  463. case(WORDLIST):
  464. validate(HOUSE_COPY,valid);
  465. validate(HOUSE_SORT,valid);
  466. validate(WORDCNT,valid);
  467. break;
  468. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  469. validate(HOUSE_COPY,valid);
  470. validate(REPITCH,valid);
  471. validate(REPITCHB,valid);
  472. validate(ENV_REPLOTTING,valid);
  473. validate(ENV_BRKTOENV,valid);
  474. validate(ENV_BRKTODBBRK,valid);
  475. validate(MOD_SPACE,valid);
  476. validate(WORDCNT,valid);
  477. break;
  478. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  479. validate(HOUSE_COPY,valid);
  480. validate(REPITCH,valid);
  481. validate(REPITCHB,valid);
  482. validate(ENV_REPLOTTING,valid);
  483. validate(ENV_BRKTOENV,valid);
  484. validate(ENV_BRKTODBBRK,valid);
  485. validate(MOD_SPACE,valid);
  486. validate(WORDCNT,valid);
  487. break;
  488. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  489. validate(HOUSE_COPY,valid);
  490. validate(REPITCH,valid);
  491. validate(REPITCHB,valid);
  492. validate(MOD_SPACE,valid);
  493. validate(WORDCNT,valid);
  494. break;
  495. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  496. validate(HOUSE_COPY,valid);
  497. validate(REPITCH,valid);
  498. validate(REPITCHB,valid);
  499. validate(MOD_SPACE,valid);
  500. validate(WORDCNT,valid);
  501. break;
  502. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  503. validate(HOUSE_COPY,valid);
  504. validate(REPITCH,valid);
  505. validate(REPITCHB,valid);
  506. validate(MOD_SPACE,valid);
  507. validate(WORDCNT,valid);
  508. break;
  509. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  510. validate(HOUSE_COPY,valid);
  511. validate(REPITCH,valid);
  512. validate(REPITCHB,valid);
  513. validate(MOD_SPACE,valid);
  514. validate(WORDCNT,valid);
  515. break;
  516. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  517. validate(HF_PERM1,valid);
  518. validate(HF_PERM2,valid);
  519. validate(DEL_PERM,valid);
  520. validate(DEL_PERM2,valid);
  521. validate(ENV_IMPOSE,valid);
  522. /* fall thro */
  523. case(PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  524. validate(HOUSE_COPY,valid);
  525. validate(REPITCH,valid);
  526. validate(REPITCHB,valid);
  527. validate(MOD_SPACE,valid);
  528. validate(WORDCNT,valid);
  529. break;
  530. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  531. validate(HF_PERM1,valid);
  532. validate(HF_PERM2,valid);
  533. validate(DEL_PERM,valid);
  534. validate(DEL_PERM2,valid);
  535. validate(ENV_IMPOSE,valid);
  536. /* fall thro */
  537. case(PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  538. validate(HOUSE_COPY,valid);
  539. validate(REPITCH,valid);
  540. validate(REPITCHB,valid);
  541. validate(MOD_SPACE,valid);
  542. validate(WORDCNT,valid);
  543. break;
  544. case(NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  545. validate(HOUSE_COPY,valid);
  546. validate(ENV_REPLOTTING,valid);
  547. validate(ENV_BRKTOENV,valid);
  548. validate(ENV_BRKTODBBRK,valid);
  549. validate(MOD_SPACE,valid);
  550. validate(WORDCNT,valid);
  551. break;
  552. case(DB_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  553. validate(HOUSE_COPY,valid);
  554. validate(ENV_DBBRKTOENV,valid);
  555. validate(ENV_DBBRKTOBRK,valid);
  556. validate(MOD_SPACE,valid);
  557. validate(WORDCNT,valid);
  558. break;
  559. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  560. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  561. validate(HF_PERM1,valid);
  562. validate(HF_PERM2,valid);
  563. validate(DEL_PERM,valid);
  564. validate(DEL_PERM2,valid);
  565. /* fall thro */
  566. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  567. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  568. validate(HOUSE_COPY,valid);
  569. validate(MOD_SPACE,valid);
  570. validate(WORDCNT,valid);
  571. break;
  572. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  573. case(NUMLIST_OR_WORDLIST):
  574. validate(HOUSE_COPY,valid);
  575. validate(WORDCNT,valid);
  576. validate(HF_PERM1,valid);
  577. validate(HF_PERM2,valid);
  578. validate(DEL_PERM,valid);
  579. validate(DEL_PERM2,valid);
  580. validate(MAKE_VFILT,valid);
  581. break;
  582. default:
  583. sprintf(errstr,"Unknown filetype [%d]: establish_application_validities()\n",filetype);
  584. return(PROGRAM_ERROR);
  585. }
  586. return(FINISHED);
  587. }