00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "Translate/AMLParser.hpp"
00026 #include "AML/AMLReader.hpp"
00027
00028 using namespace std;
00029
00030
00031
00032
00033 AMLParser::AMLParser() : TranslateCore() {
00034 language = "AML";
00035 include_file_string = "'{http://www.w3.org/2001/XInclude}include':href";
00036 }
00037
00038 UAPNode* AMLParser::XFileToAMLRep (const string& file_name, UAPNode* uap_root) {
00039 AMLReader* reader = new AMLReader;
00040 UAPNode* node = reader->AMLFileToAMLRep (file_name);
00041 delete reader;
00042 return node;
00043 }
00044
00045 UAPNode* AMLParser::XFileToXRep (const string& file_name, UAPNode* uap_root) {
00046 AMLReader* reader = new AMLReader;
00047 UAPNode* node = reader->AMLFileToAMLRep (file_name);
00048 delete reader;
00049 return node;
00050 }
00051
00052 UAPNode* AMLParser::XRepToAMLRep (UAPNode* x_root, UAPNode* aml_root) {
00053 throw;
00054 }
00055
00056 UAPNode* AMLParser::AMLRepToXFile (UAPNode* aml_root, const string& file_name,
00057 const string& out_suffix, bool one_file) {
00058 return XRepToXFile (aml_root, file_name, out_suffix, one_file);
00059 }
00060
00061 UAPNode* AMLParser::AMLRepToXRep (UAPNode* aml_root, UAPNode* x_root) {
00062 throw;
00063 }
00064
00065 UAPNode* AMLParser::XRepToXFile (UAPNode* x_root, const string& file_name,
00066 const string& out_suffix, bool one_file) {
00067
00068
00069 UAPNode* aml_rep = x_root;
00070 if (aml_rep->getName() == "UAP_root") aml_rep = x_root->getChildByName("AML_representation");
00071
00072 string this_file;
00073
00074 if (file_name == "*") {
00075 string old_name = aml_rep->getAttributeString("filename");
00076 size_t n = old_name.find_last_of(".");
00077 if (n == string::npos)
00078 this_file = old_name + out_suffix;
00079 else
00080 this_file = old_name.substr(0,n) + out_suffix;
00081 } else if (file_name != "") {
00082 this_file = file_name;
00083 }
00084
00085 aml_rep->addAttribute("filename", this_file);
00086
00087
00088
00089 if (out_suffix != "") {
00090 Twig tinfo(include_file_string);
00091 include_filename_replace_suffix (aml_rep, out_suffix, tinfo);
00092 }
00093
00094
00095
00096 AMLReader* reader = new AMLReader;
00097 aml_rep = reader->AMLRepToAMLFile (aml_rep, this_file, one_file);
00098 delete reader;
00099 return aml_rep;
00100 }