Changeset 0a21024 in rtems-tools


Ignore:
Timestamp:
Aug 3, 2014, 11:50:56 PM (5 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, master
Children:
058d502
Parents:
b6d7f5f
Message:

rtems-tld: Add recursive parsing of headers and defines.

Location:
linkers
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • linkers/rld.h

    rb6d7f5f r0a21024  
    176176          if (e.front () != e.back ())
    177177            throw rld::error ("invalid quoting", "string: " + s);
    178           e = e.substr (1, e.length () - 1);
     178          e = e.substr (1, e.length () - (1 + 1));
    179179        }
    180180      }
  • linkers/rtems-tld.cpp

    rb6d7f5f r0a21024  
    122122
    123123      /**
     124       * Recursive parser for strings.
     125       */
     126      void parse (rld::config::config&        config,
     127                  const rld::config::section& section,
     128                  const std::string&          sec_name,
     129                  const std::string&          rec_name,
     130                  rld::strings&               items,
     131                  int                         depth = 0);
     132
     133      /**
    124134       * Dump the wrapper.
    125135       */
     
    262272      const rld::config::section& section = config.get_section (name);
    263273
     274      parse (config, section, "headers", "header", headers);
     275      parse (config, section, "defines", "define", defines);
     276
    264277      rld::strings sig_list;
    265278
    266       rld::config::parse_items (section, "header", headers);
    267       rld::config::parse_items (section, "define", defines);
    268       rld::config::parse_items (section, "signature", sig_list);
     279      rld::config::parse_items (section, "signatures", sig_list);
    269280
    270281      for (rld::strings::const_iterator sli = sig_list.begin ();
     
    280291          sigs[func.name] = func;
    281292        }
     293      }
     294    }
     295
     296    void
     297    wrapper::parse (rld::config::config&        config,
     298                    const rld::config::section& section,
     299                    const std::string&          sec_name,
     300                    const std::string&          rec_name,
     301                    rld::strings&               items,
     302                    int                         depth)
     303    {
     304      if (depth > 32)
     305        throw rld::error ("too deep", "parsing: " + sec_name + '/' + rec_name);
     306
     307      rld::config::parse_items (section, rec_name, items);
     308
     309      rld::strings sl;
     310
     311      rld::config::parse_items (section, sec_name, sl);
     312
     313      for (rld::strings::const_iterator sli = sl.begin ();
     314           sli != sl.end ();
     315           ++sli)
     316      {
     317        const rld::config::section& sec = config.get_section (*sli);
     318        parse (config, sec, sec_name, rec_name, items, depth + 1);
    282319      }
    283320    }
  • linkers/rtems.ini

    rb6d7f5f r0a21024  
    33;
    44[rtems-api]
    5 header = rtems-api-headers
    6 define = rtems-api-defines
    7 signature = rtems-api-signatures
     5headers = rtems-api-headers
     6defines = rtems-api-defines
     7signatures = rtems-api-signatures
    88
    99[rtems-api-headers]
  • linkers/test-trace.ini

    rb6d7f5f r0a21024  
    3636header = '#include "test-trace.h"'
    3737define = "#define TEST_TRACE 1"
    38 signature = test-signatures
     38signatures = test-signatures
     39
     40[test-headers]
     41header = '#include "test-trace.h"'
     42
     43[test-defines]
     44define = "#define TEST_TRACE 1"
    3945
    4046[test-signatures]
Note: See TracChangeset for help on using the changeset viewer.