acs_sc::msg_type::parse_spec (private)

 acs_sc::msg_type::parse_spec -name name -spec spec

Defined in packages/acs-service-contract/tcl/msg-type-procs.tcl

#The specification for the message type could be like this! #case_id:integer #foobar:string,multiple

Switches:
-name
(required)
Name of new msg_type
-spec
(required)
Spec in ad_page_contract style format, namely { foo:integer bar:string,multiple }

Partial Call Graph (max 5 caller/called nodes):
%3 acs_sc::contract::operation::new acs_sc::contract::operation::new (public) acs_sc::msg_type::parse_spec acs_sc::msg_type::parse_spec acs_sc::contract::operation::new->acs_sc::msg_type::parse_spec acs_sc::msg_type::element::new acs_sc::msg_type::element::new (public) acs_sc::msg_type::parse_spec->acs_sc::msg_type::element::new acs_sc::msg_type::new acs_sc::msg_type::new (public) acs_sc::msg_type::parse_spec->acs_sc::msg_type::new db_transaction db_transaction (public) acs_sc::msg_type::parse_spec->db_transaction

Testcases:
No testcase defined.
Source code:
    db_transaction { 

        # First, create the msg_type
        acs_sc::msg_type::new -name $name
    
        set nargs 0 
    
        # Then create the elements
        foreach element $spec {
            incr nargs
    
            # element:flag,flag
            set elementv [split $element :]
            set flagsv [split [lindex $elementv 1] ","]
    
            set element_name [string trim [lindex $elementv 0]]
    
            if { [llength $flagsv] > 1 } {
                set idx [lsearch $flagsv "multiple"]
    
                if { [llength $flagsv] > 2 || $idx == -1 } {
                    error "Only one modified flag allowed, and that's multiple as in foo:integer,multiple"
                }
    
                # Remove the 'multiple' flag
                set flagsv [lreplace $flagsv $idx $idx]
                set element_type "[lindex $flagsv 0]"
                set isset_p "t"
            } else {
                set element_type [lindex $flagsv 0]
                set isset_p "f"
            }
    
            acs_sc::msg_type::element::new  -msg_type_name $name  -element_name $element_name  -element_msg_type_name $element_type  -element_msg_type_isset_p $isset_p  -element_pos $nargs
        }
    }

    return $nargs
Generic XQL file:
packages/acs-service-contract/tcl/msg-type-procs.xql

PostgreSQL XQL file:
packages/acs-service-contract/tcl/msg-type-procs-postgresql.xql

Oracle XQL file:
packages/acs-service-contract/tcl/msg-type-procs-oracle.xql

[ hide source ] | [ make this the default ]
Show another procedure: