Mercurial > ecos
comparison host/libcdl/parse.cxx @ 163:0d2b193a635f
Merge from eCos master repository on 2001-06-22-17:38:39-BST
| author | jlarmour |
|---|---|
| date | Fri, 22 Jun 2001 18:18:44 +0000 |
| parents | 6ed91473a1cd |
| children | fbfd52cf7976 |
comparison
equal
deleted
inserted
replaced
| 162:2395031e7a66 | 163:0d2b193a635f |
|---|---|
| 799 if (0 != new_property) { | 799 if (0 != new_property) { |
| 800 delete new_property; | 800 delete new_property; |
| 801 } | 801 } |
| 802 throw; | 802 throw; |
| 803 } | 803 } |
| 804 | 804 |
| 805 CYG_REPORT_RETURN(); | |
| 805 return TCL_OK; | 806 return TCL_OK; |
| 806 } | 807 } |
| 807 | 808 |
| 808 //}}} | 809 //}}} |
| 809 //{{{ parse_tclcode_property() | 810 //{{{ parse_tclcode_property() |
| 899 // ---------------------------------------------------------------------------- | 900 // ---------------------------------------------------------------------------- |
| 900 | 901 |
| 901 int | 902 int |
| 902 CdlParse::parse_reference_property(CdlInterpreter interp, int argc, char** argv, std::string name, | 903 CdlParse::parse_reference_property(CdlInterpreter interp, int argc, char** argv, std::string name, |
| 903 char** options_desc, void (*final_parser)(CdlInterpreter, CdlProperty_Reference), | 904 char** options_desc, void (*final_parser)(CdlInterpreter, CdlProperty_Reference), |
| 904 CdlUpdateHandler update_handler) | 905 bool allow_empty, CdlUpdateHandler update_handler) |
| 905 { | 906 { |
| 906 CYG_REPORT_FUNCNAME("parse_reference_property"); | 907 CYG_REPORT_FUNCNAME("parse_reference_property"); |
| 907 CYG_PRECONDITION_CLASSC(interp); | 908 CYG_PRECONDITION_CLASSC(interp); |
| 908 | 909 |
| 909 CdlProperty_Reference new_property = 0; | 910 CdlProperty_Reference new_property = 0; |
| 915 CdlParse::report_property_parse_error(interp, argv[0], "Missing argument."); | 916 CdlParse::report_property_parse_error(interp, argv[0], "Missing argument."); |
| 916 } else if ((data_index + 1) < argc) { | 917 } else if ((data_index + 1) < argc) { |
| 917 CdlParse::report_property_parse_error(interp, argv[0], "Too many arguments, expecting just one."); | 918 CdlParse::report_property_parse_error(interp, argv[0], "Too many arguments, expecting just one."); |
| 918 } else { | 919 } else { |
| 919 std::string refname = argv[data_index]; | 920 std::string refname = argv[data_index]; |
| 920 if (!Cdl::is_valid_cdl_name(refname)) { | 921 if (!(Cdl::is_valid_cdl_name(refname) || (allow_empty && ("" == refname)))) { |
| 921 CdlParse::report_property_parse_error(interp, argv[0], "`" + refname + "' is not a valid CDL name"); | 922 CdlParse::report_property_parse_error(interp, argv[0], "`" + refname + "' is not a valid CDL name"); |
| 922 } else { | 923 } else { |
| 923 CdlNode current_node = interp->get_node(); | 924 CdlNode current_node = interp->get_node(); |
| 924 CYG_ASSERTC(0 != current_node); | 925 CYG_ASSERTC(0 != current_node); |
| 925 new_property = CdlProperty_ReferenceBody::make(current_node, name, refname, | 926 new_property = CdlProperty_ReferenceBody::make(current_node, name, refname, |
