PageRenderTime 55ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/usr/src/suites/os/smf/tests/include/create_piece.pm

https://bitbucket.org/illumos/illumos-stc
Perl | 1564 lines | 1065 code | 324 blank | 175 comment | 41 complexity | e00b757987bbe32a7e3b67b3b97f7d63 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception
  1. #
  2. # CDDL HEADER START
  3. #
  4. # The contents of this file are subject to the terms of the
  5. # Common Development and Distribution License (the "License").
  6. # You may not use this file except in compliance with the License.
  7. #
  8. # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  9. # or http://www.opensolaris.org/os/licensing.
  10. # See the License for the specific language governing permissions
  11. # and limitations under the License.
  12. #
  13. # When distributing Covered Code, include this CDDL HEADER in each
  14. # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15. # If applicable, add the following below this CDDL HEADER, with the
  16. # fields enclosed by brackets "[]" replaced with your own identifying
  17. # information: Portions Copyright [yyyy] [name of copyright owner]
  18. #
  19. # CDDL HEADER END
  20. #
  21. #
  22. # Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  23. #
  24. #
  25. use strict;
  26. use warnings;
  27. use lib "$ENV{STF_SUITE}/tests/include";
  28. use Class::Struct;
  29. use piece_types;
  30. use write_piece;
  31. struct value => { reverse qw{
  32. $ leftside
  33. $ rightside
  34. $ middle
  35. }};
  36. struct piece => { reverse qw{
  37. $ type
  38. $ ident
  39. $ write
  40. $ close
  41. @ values
  42. @ associations
  43. }};
  44. our $template_piece;
  45. our $pieces;
  46. our $p;
  47. our $v;
  48. #
  49. # A number of functions to create each of the different pieces
  50. # that will make up a manifest.
  51. #
  52. #
  53. # Create a service_bundle piece
  54. #
  55. sub SERVICEBUNDLE() {
  56. my $values = shift;
  57. if (!defined($pieces) || $pieces eq "uninitialized") {
  58. our $pieces = piece->new();
  59. }
  60. $p = $pieces;
  61. $p->type($piece_types::SERVICEBUNDLE);
  62. $p->write(\&write_service_bundle);
  63. @{$p->associations} = ();
  64. my $setident = 0;
  65. my @vals = split(/,/, $values);
  66. foreach my $val (@vals) {
  67. my ($l, $r) = split(/=/, $val);
  68. if ($l eq "name") {
  69. $setident = 1;
  70. $p->ident($r);
  71. }
  72. $v = value->new();
  73. $v->leftside($l);
  74. $v->rightside($r);
  75. push(@{$p->values}, $v);
  76. }
  77. }
  78. #
  79. # Create a service piece
  80. #
  81. sub SERVICE() {
  82. my $association = shift;
  83. my $values = shift;
  84. $p = piece->new();
  85. $p->type($piece_types::SERVICE);
  86. $p->write(\&write_service);
  87. @{$p->associations} = ();
  88. my $setident = 0;
  89. my @vals = split(/,/, $values);
  90. foreach my $val (@vals) {
  91. my ($l, $r) = split(/=/, $val);
  92. if ($l eq "name") {
  93. $setident = 1;
  94. $p->ident($r);
  95. }
  96. $v = value->new();
  97. $v->leftside($l);
  98. $v->rightside($r);
  99. push(@{$p->values}, $v);
  100. }
  101. my ($asstype, $assname) = split(/:/, $association);
  102. &associate_piece($asstype, $assname, $p);
  103. }
  104. #
  105. # Create a exec_method piece
  106. #
  107. sub EXECMETHOD() {
  108. my $association = shift;
  109. my $values = shift;
  110. $p = piece->new();
  111. $p->type($piece_types::EXECMETHOD);
  112. $p->write(\&write_exec_method);
  113. @{$p->associations} = ();
  114. my $setident = 0;
  115. my @vals = split(/,/, $values);
  116. foreach my $val (@vals) {
  117. my ($l, $r) = split(/=/, $val);
  118. if ($l eq "name") {
  119. $setident = 1;
  120. $p->ident($r);
  121. }
  122. $v = value->new();
  123. $v->leftside($l);
  124. $v->rightside($r);
  125. push(@{$p->values}, $v);
  126. }
  127. my ($asstype, $assname) = split(/:/, $association);
  128. &associate_piece($asstype, $assname, $p);
  129. }
  130. #
  131. # Create a property group piece
  132. #
  133. sub PROPERTYGROUP() {
  134. my $association = shift;
  135. my $values = shift;
  136. $p = piece->new();
  137. $p->type($piece_types::PROPERTYGROUP);
  138. $p->write(\&write_property_group);
  139. @{$p->associations} = ();
  140. my $setident = 0;
  141. my @vals = split(/,/, $values);
  142. foreach my $val (@vals) {
  143. my ($l, $r) = split(/=/, $val);
  144. if ($l eq "name") {
  145. $setident = 1;
  146. $p->ident($r);
  147. }
  148. $v = value->new();
  149. $v->leftside($l);
  150. $v->rightside($r);
  151. push(@{$p->values}, $v);
  152. }
  153. my ($asstype, $assname) = split(/:/, $association);
  154. &associate_piece($asstype, $assname, $p);
  155. }
  156. #
  157. # Create a createdefaultinstance piece
  158. #
  159. sub CREATEDEFAULTINSTANCE() {
  160. my $association = shift;
  161. my $values = shift;
  162. $p = piece->new();
  163. $p->type($piece_types::CREATEDEFAULTINSTANCE);
  164. $p->write(\&write_create_default_instance);
  165. @{$p->associations} = ();
  166. my $setident = 0;
  167. if ($values ne "true" && $values ne "false") {
  168. return();
  169. }
  170. $v = value->new();
  171. $v->leftside($values);
  172. push(@{$p->values}, $v);
  173. my ($asstype, $assname) = split(/:/, $association);
  174. &associate_piece($asstype, $assname, $p);
  175. }
  176. #
  177. # Create a single_instance piece
  178. #
  179. sub SINGLEINSTANCE() {
  180. my $association = shift;
  181. my $values = shift;
  182. $p = piece->new();
  183. $p->type($piece_types::SINGLEINSTANCE);
  184. $p->write(\&write_single_instance);
  185. @{$p->associations} = ();
  186. my $setident = 0;
  187. my @vals = split(/,/, $values);
  188. foreach my $val (@vals) {
  189. my ($l, $r) = split(/=/, $val);
  190. if ($l eq "name") {
  191. $setident = 1;
  192. $p->ident($r);
  193. }
  194. $v = value->new();
  195. $v->leftside($l);
  196. $v->rightside($r);
  197. push(@{$p->values}, $v);
  198. }
  199. my ($asstype, $assname) = split(/:/, $association);
  200. &associate_piece($asstype, $assname, $p);
  201. }
  202. #
  203. # Create a restarter piece
  204. #
  205. sub RESTARTER() {
  206. my $association = shift;
  207. my $values = shift;
  208. $p = piece->new();
  209. $p->type($piece_types::RESTARTER);
  210. $p->write(\&write_restarter);
  211. @{$p->associations} = ();
  212. my $setident = 0;
  213. my @vals = split(/,/, $values);
  214. foreach my $val (@vals) {
  215. my ($l, $r) = split(/=/, $val);
  216. if ($l eq "name") {
  217. $setident = 1;
  218. $p->ident($r);
  219. }
  220. $v = value->new();
  221. $v->leftside($l);
  222. $v->rightside($r);
  223. push(@{$p->values}, $v);
  224. }
  225. my ($asstype, $assname) = split(/:/, $association);
  226. &associate_piece($asstype, $assname, $p);
  227. }
  228. #
  229. # Create a dependency piece
  230. #
  231. sub DEPENDENCY() {
  232. my $association = shift;
  233. my $values = shift;
  234. $p = piece->new();
  235. $p->type($piece_types::DEPENDENCY);
  236. $p->write(\&write_dependency);
  237. @{$p->associations} = ();
  238. my $setident = 0;
  239. my @vals = split(/,/, $values);
  240. foreach my $val (@vals) {
  241. my ($l, $r) = split(/=/, $val);
  242. if ($l eq "name") {
  243. $setident = 1;
  244. $p->ident($r);
  245. }
  246. $v = value->new();
  247. $v->leftside($l);
  248. $v->rightside($r);
  249. push(@{$p->values}, $v);
  250. }
  251. my ($asstype, $assname) = split(/:/, $association);
  252. &associate_piece($asstype, $assname, $p);
  253. }
  254. #
  255. # Create a dependent piece
  256. #
  257. sub DEPENDENT() {
  258. my $association = shift;
  259. my $values = shift;
  260. $p = piece->new();
  261. $p->type($piece_types::DEPENDENT);
  262. $p->write(\&write_dependent);
  263. @{$p->associations} = ();
  264. my $setident = 0;
  265. my @vals = split(/,/, $values);
  266. foreach my $val (@vals) {
  267. my ($l, $r) = split(/=/, $val);
  268. if ($l eq "name") {
  269. $setident = 1;
  270. $p->ident($r);
  271. }
  272. $v = value->new();
  273. $v->leftside($l);
  274. $v->rightside($r);
  275. push(@{$p->values}, $v);
  276. }
  277. my ($asstype, $assname) = split(/:/, $association);
  278. &associate_piece($asstype, $assname, $p);
  279. }
  280. #
  281. # Create a method_context piece
  282. #
  283. sub METHODCONTEXT() {
  284. my $association = shift;
  285. my $values = shift;
  286. $p = piece->new();
  287. $p->type($piece_types::METHODCONTEXT);
  288. $p->write(\&write_method_context);
  289. @{$p->associations} = ();
  290. my $setident = 0;
  291. my @vals = split(/,/, $values);
  292. foreach my $val (@vals) {
  293. my ($l, $r) = split(/=/, $val);
  294. if ($l eq "name") {
  295. $setident = 1;
  296. $p->ident($r);
  297. }
  298. $v = value->new();
  299. $v->leftside($l);
  300. $v->rightside($r);
  301. push(@{$p->values}, $v);
  302. }
  303. my ($asstype, $assname) = split(/:/, $association);
  304. &associate_piece($asstype, $assname, $p);
  305. }
  306. #
  307. # Create a instance piece
  308. #
  309. sub INSTANCE() {
  310. my $association = shift;
  311. my $values = shift;
  312. $p = piece->new();
  313. $p->type($piece_types::INSTANCE);
  314. $p->write(\&write_instance);
  315. @{$p->associations} = ();
  316. my $setident = 0;
  317. my @vals = split(/,/, $values);
  318. foreach my $val (@vals) {
  319. my ($l, $r) = split(/=/, $val);
  320. if ($l eq "name") {
  321. $setident = 1;
  322. $p->ident($r);
  323. }
  324. $v = value->new();
  325. $v->leftside($l);
  326. $v->rightside($r);
  327. push(@{$p->values}, $v);
  328. }
  329. my ($asstype, $assname) = split(/:/, $association);
  330. &associate_piece($asstype, $assname, $p);
  331. }
  332. #
  333. # Create a stability piece
  334. #
  335. sub STABILITY() {
  336. my $association = shift;
  337. my $values = shift;
  338. $p = piece->new();
  339. $p->type($piece_types::STABILITY);
  340. $p->write(\&write_stability);
  341. @{$p->associations} = ();
  342. my $setident = 0;
  343. my @vals = split(/,/, $values);
  344. foreach my $val (@vals) {
  345. my ($l, $r) = split(/=/, $val);
  346. if ($l eq "name") {
  347. $setident = 1;
  348. $p->ident($r);
  349. }
  350. $v = value->new();
  351. $v->leftside($l);
  352. $v->rightside($r);
  353. push(@{$p->values}, $v);
  354. }
  355. my ($asstype, $assname) = split(/:/, $association);
  356. &associate_piece($asstype, $assname, $p);
  357. }
  358. #
  359. # Create a template piece
  360. #
  361. sub TEMPLATE() {
  362. my $association = shift;
  363. my $values = shift;
  364. $template_piece = 1;
  365. $p = piece->new();
  366. $p->type($piece_types::TEMPLATE);
  367. $p->write(\&write_template);
  368. @{$p->associations} = ();
  369. my $setident = 0;
  370. my @vals = split(/,/, $values);
  371. foreach my $val (@vals) {
  372. my ($l, $r) = split(/=/, $val);
  373. if ($l eq "name") {
  374. $setident = 1;
  375. $p->ident($r);
  376. }
  377. $v = value->new();
  378. $v->leftside($l);
  379. $v->rightside($r);
  380. push(@{$p->values}, $v);
  381. }
  382. if ($setident != 1) {
  383. $p->ident("DEFAULT");
  384. }
  385. my ($asstype, $assname) = split(/:/, $association);
  386. &associate_piece($asstype, $assname, $p);
  387. }
  388. #
  389. # Create a common_name piece
  390. #
  391. sub COMMONNAME() {
  392. my $association = shift;
  393. my $values = shift;
  394. $p = piece->new();
  395. $p->type($piece_types::COMMONNAME);
  396. $p->write(\&write_common_name);
  397. @{$p->associations} = ();
  398. my $setident = 0;
  399. my $cname;
  400. my $lang;
  401. while ($values) {
  402. ($lang, $cname, $values) = split(/,/, $values, 3);
  403. $v = value->new();
  404. $v->leftside("lang");
  405. $v->rightside($lang);
  406. push(@{$p->values}, $v);
  407. $v = value->new();
  408. $v->leftside("${lang}_cname");
  409. $v->rightside($cname);
  410. push(@{$p->values}, $v);
  411. }
  412. $p->ident("$cname");
  413. my ($asstype, $assname) = split(/:/, $association);
  414. &associate_piece($asstype, $assname, $p);
  415. }
  416. #
  417. # Create a description piece
  418. #
  419. sub DESCRIPTION() {
  420. my $association = shift;
  421. my $values = shift;
  422. $p = piece->new();
  423. $p->type($piece_types::DESCRIPTION);
  424. $p->write(\&write_description);
  425. @{$p->associations} = ();
  426. my $setident = 0;
  427. my @vals = split(/,/, $values);
  428. foreach my $val (@vals) {
  429. my ($l, $r) = split(/=/, $val);
  430. if ($l eq "name") {
  431. $setident = 1;
  432. $p->ident($r);
  433. }
  434. $v = value->new();
  435. $v->leftside($l);
  436. $v->rightside($r);
  437. push(@{$p->values}, $v);
  438. }
  439. my ($asstype, $assname) = split(/:/, $association);
  440. &associate_piece($asstype, $assname, $p);
  441. }
  442. #
  443. # Create a documentation piece
  444. #
  445. sub DOCUMENTATION() {
  446. my $association = shift;
  447. my $values = shift;
  448. $p = piece->new();
  449. $p->type($piece_types::DOCUMENTATION);
  450. $p->write(\&write_documentation);
  451. @{$p->associations} = ();
  452. my $setident = 0;
  453. my @vals = split(/,/, $values);
  454. foreach my $val (@vals) {
  455. my ($l, $r) = split(/=/, $val);
  456. if ($l eq "name") {
  457. $setident = 1;
  458. $p->ident($r);
  459. }
  460. $v = value->new();
  461. $v->leftside($l);
  462. $v->rightside($r);
  463. push(@{$p->values}, $v);
  464. }
  465. my ($asstype, $assname) = split(/:/, $association);
  466. &associate_piece($asstype, $assname, $p);
  467. }
  468. #
  469. # Create a pg_pattern piece
  470. #
  471. sub PGPATTERN() {
  472. my $association = shift;
  473. my $values = shift;
  474. $p = piece->new();
  475. $p->type($piece_types::PGPATTERN);
  476. $p->write(\&write_pg_pattern);
  477. @{$p->associations} = ();
  478. my $setident = 0;
  479. my @vals = split(/,/, $values);
  480. foreach my $val (@vals) {
  481. my ($l, $r) = split(/=/, $val);
  482. if ($l eq "name") {
  483. $setident = 1;
  484. $p->ident($r);
  485. }
  486. $v = value->new();
  487. $v->leftside($l);
  488. $v->rightside($r);
  489. push(@{$p->values}, $v);
  490. }
  491. my ($asstype, $assname) = split(/:/, $association);
  492. &associate_piece($asstype, $assname, $p);
  493. }
  494. #
  495. # Create a prop_pattern piece
  496. #
  497. sub PROPPATTERN() {
  498. my $association = shift;
  499. my $values = shift;
  500. $p = piece->new();
  501. $p->type($piece_types::PROPPATTERN);
  502. $p->write(\&write_prop_pattern);
  503. @{$p->associations} = ();
  504. my $setident = 0;
  505. my @vals = split(/,/, $values);
  506. foreach my $val (@vals) {
  507. my ($l, $r) = split(/=/, $val);
  508. if ($l eq "name") {
  509. $setident = 1;
  510. $p->ident($r);
  511. }
  512. $v = value->new();
  513. $v->leftside($l);
  514. $v->rightside($r);
  515. push(@{$p->values}, $v);
  516. }
  517. my ($asstype, $assname) = split(/:/, $association);
  518. &associate_piece($asstype, $assname, $p);
  519. }
  520. #
  521. # Create a units piece
  522. #
  523. sub UNITS() {
  524. my $association = shift;
  525. my $values = shift;
  526. $p = piece->new();
  527. $p->type($piece_types::UNITS);
  528. $p->write(\&write_units);
  529. @{$p->associations} = ();
  530. my $setident = 0;
  531. my @vals = split(/,/, $values);
  532. foreach my $val (@vals) {
  533. my ($l, $r) = split(/=/, $val);
  534. if ($l eq "name") {
  535. $setident = 1;
  536. $p->ident($r);
  537. }
  538. $v = value->new();
  539. $v->leftside($l);
  540. $v->rightside($r);
  541. push(@{$p->values}, $v);
  542. }
  543. my ($asstype, $assname) = split(/:/, $association);
  544. &associate_piece($asstype, $assname, $p);
  545. }
  546. #
  547. # Create a visibility piece
  548. #
  549. sub VISIBILITY() {
  550. my $association = shift;
  551. my $values = shift;
  552. $p = piece->new();
  553. $p->type($piece_types::VISIBILITY);
  554. $p->write(\&write_visibility);
  555. @{$p->associations} = ();
  556. my $setident = 0;
  557. my @vals = split(/,/, $values);
  558. foreach my $val (@vals) {
  559. my ($l, $r) = split(/=/, $val);
  560. if ($l eq "name") {
  561. $setident = 1;
  562. $p->ident($r);
  563. }
  564. $v = value->new();
  565. $v->leftside($l);
  566. $v->rightside($r);
  567. push(@{$p->values}, $v);
  568. }
  569. my ($asstype, $assname) = split(/:/, $association);
  570. &associate_piece($asstype, $assname, $p);
  571. }
  572. #
  573. # Create a cardinality piece
  574. #
  575. sub CARDINALITY() {
  576. my $association = shift;
  577. my $values = shift;
  578. $p = piece->new();
  579. $p->type($piece_types::CARDINALITY);
  580. $p->write(\&write_cardinality);
  581. @{$p->associations} = ();
  582. my $setident = 0;
  583. my @vals = split(/,/, $values);
  584. foreach my $val (@vals) {
  585. my ($l, $r) = split(/=/, $val);
  586. if ($l eq "name") {
  587. $setident = 1;
  588. $p->ident($r);
  589. }
  590. $v = value->new();
  591. $v->leftside($l);
  592. $v->rightside($r);
  593. push(@{$p->values}, $v);
  594. }
  595. my ($asstype, $assname) = split(/:/, $association);
  596. &associate_piece($asstype, $assname, $p);
  597. }
  598. #
  599. # Create a internal_separator piece
  600. #
  601. sub INTERNALSEPARATORS() {
  602. my $association = shift;
  603. my $values = shift;
  604. $p = piece->new();
  605. $p->type($piece_types::INTERNALSEPARATORS);
  606. $p->write(\&write_internal_separators);
  607. @{$p->associations} = ();
  608. my $setident = 0;
  609. my @vals = split(/,/, $values);
  610. foreach my $val (@vals) {
  611. my ($l, $r) = split(/=/, $val);
  612. if ($l eq "name") {
  613. $setident = 1;
  614. $p->ident($r);
  615. }
  616. $v = value->new();
  617. $v->leftside($l);
  618. $v->rightside($r);
  619. push(@{$p->values}, $v);
  620. }
  621. my ($asstype, $assname) = split(/:/, $association);
  622. &associate_piece($asstype, $assname, $p);
  623. }
  624. #
  625. # Create a values piece
  626. #
  627. sub VALUES() {
  628. my $association = shift;
  629. my $values = shift;
  630. $p = piece->new();
  631. $p->type($piece_types::VALUES);
  632. $p->write(\&write_values);
  633. @{$p->associations} = ();
  634. my $setident = 0;
  635. my @vals = split(/,/, $values);
  636. foreach my $val (@vals) {
  637. my ($l, $r) = split(/=/, $val);
  638. if ($l eq "ident") {
  639. $setident = 1;
  640. $p->ident($r);
  641. }
  642. }
  643. my ($asstype, $assname) = split(/:/, $association);
  644. &associate_piece($asstype, $assname, $p);
  645. }
  646. #
  647. # Create a constraints piece
  648. #
  649. sub CONSTRAINTS() {
  650. my $association = shift;
  651. my $values = shift;
  652. $p = piece->new();
  653. $p->type($piece_types::CONSTRAINTS);
  654. $p->write(\&write_constraints);
  655. @{$p->associations} = ();
  656. my $setident = 0;
  657. my @vals = split(/,/, $values);
  658. foreach my $val (@vals) {
  659. my ($l, $r) = split(/=/, $val);
  660. if ($l eq "ident") {
  661. $setident = 1;
  662. $p->ident($r);
  663. }
  664. }
  665. my ($asstype, $assname) = split(/:/, $association);
  666. &associate_piece($asstype, $assname, $p);
  667. }
  668. #
  669. # Create a value piece
  670. #
  671. sub VALUE() {
  672. my $association = shift;
  673. my $values = shift;
  674. $p = piece->new();
  675. $p->type($piece_types::VALUE);
  676. $p->write(\&write_value);
  677. @{$p->associations} = ();
  678. my $setident = 0;
  679. my @vals = split(/,/, $values);
  680. foreach my $val (@vals) {
  681. my ($l, $r) = split(/=/, $val);
  682. if ($l eq "name") {
  683. $setident = 1;
  684. $p->ident($r);
  685. }
  686. $v = value->new();
  687. $v->leftside($l);
  688. $v->rightside($r);
  689. push(@{$p->values}, $v);
  690. }
  691. my ($asstype, $assname) = split(/:/, $association);
  692. &associate_piece($asstype, $assname, $p);
  693. }
  694. #
  695. # Create a range piece
  696. #
  697. sub RANGE() {
  698. my $association = shift;
  699. my $values = shift;
  700. $p = piece->new();
  701. $p->type($piece_types::RANGE);
  702. $p->write(\&write_range);
  703. @{$p->associations} = ();
  704. my $setident = 0;
  705. my @vals = split(/,/, $values);
  706. foreach my $val (@vals) {
  707. my ($l, $r) = split(/=/, $val);
  708. if ($l eq "name") {
  709. $setident = 1;
  710. $p->ident($r);
  711. }
  712. $v = value->new();
  713. $v->leftside($l);
  714. $v->rightside($r);
  715. push(@{$p->values}, $v);
  716. }
  717. my ($asstype, $assname) = split(/:/, $association);
  718. &associate_piece($asstype, $assname, $p);
  719. }
  720. #
  721. # Create a value_set piece
  722. #
  723. sub VALUESET() {
  724. my $association = shift;
  725. my $values = shift;
  726. $p = piece->new();
  727. $p->type($piece_types::VALUESET);
  728. $p->write(\&write_valueset);
  729. @{$p->associations} = ();
  730. my $setident = 0;
  731. my @vals = split(/,/, $values);
  732. foreach my $val (@vals) {
  733. my ($l, $r) = split(/=/, $val);
  734. if ($l eq "name") {
  735. $setident = 1;
  736. $p->ident($r);
  737. }
  738. $v = value->new();
  739. $v->leftside($l);
  740. $v->rightside($r);
  741. push(@{$p->values}, $v);
  742. }
  743. my ($asstype, $assname) = split(/:/, $association);
  744. &associate_piece($asstype, $assname, $p);
  745. }
  746. #
  747. # Create a all_values piece
  748. #
  749. sub ALLVALUES() {
  750. my $association = shift;
  751. my $values = shift;
  752. $p = piece->new();
  753. $p->type($piece_types::ALLVALUES);
  754. $p->write(\&write_allvalues);
  755. @{$p->associations} = ();
  756. my $setident = 0;
  757. my @vals = split(/,/, $values);
  758. foreach my $val (@vals) {
  759. my ($l, $r) = split(/=/, $val);
  760. if ($l eq "name") {
  761. $setident = 1;
  762. $p->ident($r);
  763. }
  764. $v = value->new();
  765. $v->leftside($l);
  766. $v->rightside($r);
  767. push(@{$p->values}, $v);
  768. }
  769. my ($asstype, $assname) = split(/:/, $association);
  770. &associate_piece($asstype, $assname, $p);
  771. }
  772. #
  773. # Create a doclink piece
  774. #
  775. sub DOCLINK() {
  776. my $association = shift;
  777. my $values = shift;
  778. $p = piece->new();
  779. $p->type($piece_types::DOCLINK);
  780. $p->write(\&write_doclink);
  781. @{$p->associations} = ();
  782. my $setident = 0;
  783. my @vals = split(/,/, $values);
  784. foreach my $val (@vals) {
  785. my ($l, $r) = split(/=/, $val);
  786. if ($l eq "name") {
  787. $setident = 1;
  788. $p->ident($r);
  789. }
  790. $v = value->new();
  791. $v->leftside($l);
  792. $v->rightside($r);
  793. push(@{$p->values}, $v);
  794. }
  795. my ($asstype, $assname) = split(/:/, $association);
  796. &associate_piece($asstype, $assname, $p);
  797. }
  798. #
  799. # Create a manpage piece
  800. #
  801. sub MANPAGE() {
  802. my $association = shift;
  803. my $values = shift;
  804. $p = piece->new();
  805. $p->type($piece_types::MANPAGE);
  806. $p->write(\&write_manpage);
  807. @{$p->associations} = ();
  808. my $setident = 0;
  809. my @vals = split(/,/, $values);
  810. foreach my $val (@vals) {
  811. my ($l, $r) = split(/=/, $val);
  812. if ($l eq "name") {
  813. $setident = 1;
  814. $p->ident($r);
  815. }
  816. $v = value->new();
  817. $v->leftside($l);
  818. $v->rightside($r);
  819. push(@{$p->values}, $v);
  820. }
  821. my ($asstype, $assname) = split(/:/, $association);
  822. &associate_piece($asstype, $assname, $p);
  823. }
  824. #
  825. # Create a service_fmri piece
  826. #
  827. sub SERVICEFMRI() {
  828. my $association = shift;
  829. my $values = shift;
  830. $p = piece->new();
  831. $p->type($piece_types::SERVICEFMRI);
  832. $p->write(\&write_service_fmri);
  833. @{$p->associations} = ();
  834. my $setident = 0;
  835. my @vals = split(/,/, $values);
  836. foreach my $val (@vals) {
  837. my ($l, $r) = split(/=/, $val);
  838. if ($l eq "name") {
  839. $setident = 1;
  840. $p->ident($r);
  841. }
  842. $v = value->new();
  843. $v->leftside($l);
  844. $v->rightside($r);
  845. push(@{$p->values}, $v);
  846. }
  847. my ($asstype, $assname) = split(/:/, $association);
  848. &associate_piece($asstype, $assname, $p);
  849. }
  850. #
  851. # Create a method_profile piece
  852. #
  853. sub METHODPROFILE() {
  854. my $association = shift;
  855. my $values = shift;
  856. $p = piece->new();
  857. $p->type($piece_types::METHODPROFILE);
  858. $p->write(\&write_method_profile);
  859. @{$p->associations} = ();
  860. my $setident = 0;
  861. my @vals = split(/,/, $values);
  862. foreach my $val (@vals) {
  863. my ($l, $r) = split(/=/, $val);
  864. if ($l eq "name") {
  865. $setident = 1;
  866. $p->ident($r);
  867. }
  868. $v = value->new();
  869. $v->leftside($l);
  870. $v->rightside($r);
  871. push(@{$p->values}, $v);
  872. }
  873. my ($asstype, $assname) = split(/:/, $association);
  874. &associate_piece($asstype, $assname, $p);
  875. }
  876. #
  877. # Create a method_credential piece
  878. #
  879. sub METHODCREDENTIAL() {
  880. my $association = shift;
  881. my $values = shift;
  882. $p = piece->new();
  883. $p->type($piece_types::METHODCREDENTIAL);
  884. $p->write(\&write_method_credential);
  885. @{$p->associations} = ();
  886. my $setident = 0;
  887. my @vals = split(/,/, $values);
  888. foreach my $val (@vals) {
  889. my ($l, $r) = split(/=/, $val);
  890. if ($l eq "name") {
  891. $setident = 1;
  892. $p->ident($r);
  893. }
  894. $v = value->new();
  895. $v->leftside($l);
  896. $v->rightside($r);
  897. push(@{$p->values}, $v);
  898. }
  899. my ($asstype, $assname) = split(/:/, $association);
  900. &associate_piece($asstype, $assname, $p);
  901. }
  902. #
  903. # Create a method_environment piece
  904. #
  905. sub METHODENVIRONMENT() {
  906. my $association = shift;
  907. my $values = shift;
  908. $p = piece->new();
  909. $p->type($piece_types::METHODENVIRONMENT);
  910. $p->write(\&write_method_environment);
  911. @{$p->associations} = ();
  912. my $setident = 0;
  913. my @vals = split(/,/, $values);
  914. foreach my $val (@vals) {
  915. my ($l, $r) = split(/=/, $val);
  916. if ($l eq "name") {
  917. $setident = 1;
  918. $p->ident($r);
  919. }
  920. $v = value->new();
  921. $v->leftside($l);
  922. $v->rightside($r);
  923. push(@{$p->values}, $v);
  924. }
  925. my ($asstype, $assname) = split(/:/, $association);
  926. &associate_piece($asstype, $assname, $p);
  927. }
  928. #
  929. # Create a prop_val piece
  930. #
  931. sub PROPVAL() {
  932. my $association = shift;
  933. my $values = shift;
  934. $p = piece->new();
  935. $p->type($piece_types::PROPVAL);
  936. $p->write(\&write_propval);
  937. @{$p->associations} = ();
  938. my $setident = 0;
  939. my @vals = split(/,/, $values);
  940. foreach my $val (@vals) {
  941. my ($l, $r) = split(/=/, $val);
  942. if ($l eq "name") {
  943. $setident = 1;
  944. $p->ident($r);
  945. }
  946. $v = value->new();
  947. $v->leftside($l);
  948. $v->rightside($r);
  949. push(@{$p->values}, $v);
  950. }
  951. my ($asstype, $assname) = split(/:/, $association);
  952. &associate_piece($asstype, $assname, $p);
  953. }
  954. #
  955. # Create a property piece
  956. #
  957. sub PROPERTY() {
  958. my $association = shift;
  959. my $values = shift;
  960. $p = piece->new();
  961. $p->type($piece_types::PROPERTY);
  962. $p->write(\&write_property);
  963. @{$p->associations} = ();
  964. my $setident = 0;
  965. my @vals = split(/,/, $values);
  966. foreach my $val (@vals) {
  967. my ($l, $r) = split(/=/, $val);
  968. if ($l eq "name") {
  969. $setident = 1;
  970. $p->ident($r);
  971. }
  972. $v = value->new();
  973. $v->leftside($l);
  974. $v->rightside($r);
  975. push(@{$p->values}, $v);
  976. }
  977. my ($asstype, $assname) = split(/:/, $association);
  978. &associate_piece($asstype, $assname, $p);
  979. }
  980. #
  981. # Create a count_list piece
  982. #
  983. sub COUNTLIST() {
  984. my $association = shift;
  985. my $values = shift;
  986. $p = piece->new();
  987. $p->type($piece_types::COUNTLIST);
  988. $p->write(\&write_count_list);
  989. @{$p->associations} = ();
  990. my $setident = 0;
  991. my @vals = split(/,/, $values);
  992. foreach my $val (@vals) {
  993. $v = value->new();
  994. $v->rightside($val);
  995. push(@{$p->values}, $v);
  996. }
  997. my ($asstype, $assname) = split(/:/, $association);
  998. &associate_piece($asstype, $assname, $p);
  999. }
  1000. #
  1001. # Create a interger_list piece
  1002. #
  1003. sub INTEGERLIST() {
  1004. my $association = shift;
  1005. my $values = shift;
  1006. $p = piece->new();
  1007. $p->type($piece_types::INTEGERLIST);
  1008. $p->write(\&write_integer_list);
  1009. @{$p->associations} = ();
  1010. my $setident = 0;
  1011. my @vals = split(/,/, $values);
  1012. foreach my $val (@vals) {
  1013. $v = value->new();
  1014. $v->rightside($val);
  1015. push(@{$p->values}, $v);
  1016. }
  1017. my ($asstype, $assname) = split(/:/, $association);
  1018. &associate_piece($asstype, $assname, $p);
  1019. }
  1020. #
  1021. # Create a opaque_list piece
  1022. #
  1023. sub OPAQUELIST() {
  1024. my $association = shift;
  1025. my $values = shift;
  1026. $p = piece->new();
  1027. $p->type($piece_types::OPAQUELIST);
  1028. $p->write(\&write_opaque_list);
  1029. @{$p->associations} = ();
  1030. my $setident = 0;
  1031. my @vals = split(/,/, $values);
  1032. foreach my $val (@vals) {
  1033. $v = value->new();
  1034. $v->rightside($val);
  1035. push(@{$p->values}, $v);
  1036. }
  1037. my ($asstype, $assname) = split(/:/, $association);
  1038. &associate_piece($asstype, $assname, $p);
  1039. }
  1040. #
  1041. # Create a host_list piece
  1042. #
  1043. sub HOSTLIST() {
  1044. my $association = shift;
  1045. my $values = shift;
  1046. $p = piece->new();
  1047. $p->type($piece_types::HOSTLIST);
  1048. $p->write(\&write_host_list);
  1049. @{$p->associations} = ();
  1050. my $setident = 0;
  1051. my @vals = split(/,/, $values);
  1052. foreach my $val (@vals) {
  1053. $v = value->new();
  1054. $v->rightside($val);
  1055. push(@{$p->values}, $v);
  1056. }
  1057. my ($asstype, $assname) = split(/:/, $association);
  1058. &associate_piece($asstype, $assname, $p);
  1059. }
  1060. #
  1061. # Create a hostname_list piece
  1062. #
  1063. sub HOSTNAMELIST() {
  1064. my $association = shift;
  1065. my $values = shift;
  1066. $p = piece->new();
  1067. $p->type($piece_types::HOSTNAMELIST);
  1068. $p->write(\&write_host_name_list);
  1069. @{$p->associations} = ();
  1070. my $setident = 0;
  1071. my @vals = split(/,/, $values);
  1072. foreach my $val (@vals) {
  1073. $v = value->new();
  1074. $v->rightside($val);
  1075. push(@{$p->values}, $v);
  1076. }
  1077. my ($asstype, $assname) = split(/:/, $association);
  1078. &associate_piece($asstype, $assname, $p);
  1079. }
  1080. #
  1081. # Create a netaddress4_list piece
  1082. #
  1083. sub NETADDRESSV4LIST() {
  1084. my $association = shift;
  1085. my $values = shift;
  1086. $p = piece->new();
  1087. $p->type($piece_types::NETADDRESSV4LIST);
  1088. $p->write(\&write_net_address_v4_list);
  1089. @{$p->associations} = ();
  1090. my $setident = 0;
  1091. my @vals = split(/,/, $values);
  1092. foreach my $val (@vals) {
  1093. $v = value->new();
  1094. $v->rightside($val);
  1095. push(@{$p->values}, $v);
  1096. }
  1097. my ($asstype, $assname) = split(/:/, $association);
  1098. &associate_piece($asstype, $assname, $p);
  1099. }
  1100. #
  1101. # Create a netaddressv6_list piece
  1102. #
  1103. sub NETADDRESSV6LIST() {
  1104. my $association = shift;
  1105. my $values = shift;
  1106. $p = piece->new();
  1107. $p->type($piece_types::NETADDRESSV6LIST);
  1108. $p->write(\&write_net_address_v6_list);
  1109. @{$p->associations} = ();
  1110. my $setident = 0;
  1111. my @vals = split(/,/, $values);
  1112. foreach my $val (@vals) {
  1113. $v = value->new();
  1114. $v->rightside($val);
  1115. push(@{$p->values}, $v);
  1116. }
  1117. my ($asstype, $assname) = split(/:/, $association);
  1118. &associate_piece($asstype, $assname, $p);
  1119. }
  1120. #
  1121. # Create a time_list piece
  1122. #
  1123. sub TIMELIST() {
  1124. my $association = shift;
  1125. my $values = shift;
  1126. $p = piece->new();
  1127. $p->type($piece_types::TIMELIST);
  1128. $p->write(\&write_time_list);
  1129. @{$p->associations} = ();
  1130. my $setident = 0;
  1131. my @vals = split(/,/, $values);
  1132. foreach my $val (@vals) {
  1133. $v = value->new();
  1134. $v->rightside($val);
  1135. push(@{$p->values}, $v);
  1136. }
  1137. my ($asstype, $assname) = split(/:/, $association);
  1138. &associate_piece($asstype, $assname, $p);
  1139. }
  1140. #
  1141. # Create a astring_list piece
  1142. #
  1143. sub ASTRINGLIST() {
  1144. my $association = shift;
  1145. my $values = shift;
  1146. $p = piece->new();
  1147. $p->type($piece_types::ASTRINGLIST);
  1148. $p->write(\&write_astring_list);
  1149. @{$p->associations} = ();
  1150. my $setident = 0;
  1151. my @vals = split(/,/, $values);
  1152. foreach my $val (@vals) {
  1153. $v = value->new();
  1154. $v->rightside($val);
  1155. push(@{$p->values}, $v);
  1156. }
  1157. my ($asstype, $assname) = split(/:/, $association);
  1158. &associate_piece($asstype, $assname, $p);
  1159. }
  1160. #
  1161. # Create a ustring_list piece
  1162. #
  1163. sub USTRINGLIST() {
  1164. my $association = shift;
  1165. my $values = shift;
  1166. $p = piece->new();
  1167. $p->type($piece_types::USTRINGLIST);
  1168. $p->write(\&write_ustring_list);
  1169. @{$p->associations} = ();
  1170. my $setident = 0;
  1171. my @vals = split(/,/, $values);
  1172. foreach my $val (@vals) {
  1173. $v = value->new();
  1174. $v->rightside($val);
  1175. push(@{$p->values}, $v);
  1176. }
  1177. my ($asstype, $assname) = split(/:/, $association);
  1178. &associate_piece($asstype, $assname, $p);
  1179. }
  1180. #
  1181. # Create a boolean_list piece
  1182. #
  1183. sub BOOLEANLIST() {
  1184. my $association = shift;
  1185. my $values = shift;
  1186. $p = piece->new();
  1187. $p->type($piece_types::BOOLEANLIST);
  1188. $p->write(\&write_boolean_list);
  1189. @{$p->associations} = ();
  1190. my $setident = 0;
  1191. my @vals = split(/,/, $values);
  1192. foreach my $val (@vals) {
  1193. $v = value->new();
  1194. $v->rightside($val);
  1195. push(@{$p->values}, $v);
  1196. }
  1197. my ($asstype, $assname) = split(/:/, $association);
  1198. &associate_piece($asstype, $assname, $p);
  1199. }
  1200. #
  1201. # Create a fmri_list piece
  1202. #
  1203. sub FMRILIST() {
  1204. my $association = shift;
  1205. my $values = shift;
  1206. $p = piece->new();
  1207. $p->type($piece_types::FMRILIST);
  1208. $p->write(\&write_fmri_list);
  1209. @{$p->associations} = ();
  1210. my $setident = 0;
  1211. my @vals = split(/,/, $values);
  1212. foreach my $val (@vals) {
  1213. $v = value->new();
  1214. $v->rightside($val);
  1215. push(@{$p->values}, $v);
  1216. }
  1217. my ($asstype, $assname) = split(/:/, $association);
  1218. &associate_piece($asstype, $assname, $p);
  1219. }
  1220. #
  1221. # Create a uri_list piece
  1222. #
  1223. sub URILIST() {
  1224. my $association = shift;
  1225. my $values = shift;
  1226. $p = piece->new();
  1227. $p->type($piece_types::URILIST);
  1228. $p->write(\&write_uri_list);
  1229. @{$p->associations} = ();
  1230. my $setident = 0;
  1231. my @vals = split(/,/, $values);
  1232. foreach my $val (@vals) {
  1233. $v = value->new();
  1234. $v->rightside($val);
  1235. push(@{$p->values}, $v);
  1236. }
  1237. my ($asstype, $assname) = split(/:/, $association);
  1238. &associate_piece($asstype, $assname, $p);
  1239. }
  1240. return (1);