Problem

What happens if the interface repository does not load properly?

Solution

A: Plenty of bad things!

First, why can the interface repository fail to load properly? The answer is quite simple - there is "bad" IDL somewhere inside your $IDL_PATH. What exactly is "bad" IDL you ask? There is no concrete definition on this but here are some of the typical problems one might encounter:

  • the IDL file does not have an include guard
  • the IDL file has a misspelled include guard. This could mean maybe you have the following:
#ifndef some_file_idl
#define some_file

Pay close attention to the missing _idl on the second line.

  • the IDL file has definitions named identically to definitions in a separate IDL file, but identical IDL module. For example, some_file.idl contains:
//...
module MyModule {
const static int FOO = 7;
//...


while some_other_file.idl contains:

//...
module MyModule {
enum MyEnums {FOO, BAR};
//...


Now that we know what causes the interface repository to break, it's important to know what consequences this can have:

  • the IDL simulator framework will break. It is completely dependent upon the interface repository working normally
  • the Python module Acspy.Util.BaciHelper will break. Specifically, the function used to automatically create BACI property implementations will no longer work
  • the objexp tool will not work at all as it gets all information about a component's methods and attributes from the interface repository
  • the C++ container will spit out a few error messages but will continue to function properly. The warning messages are just annoyances

-- DavidFugate - 05 Apr 2006