### Naming Files

All files provided by the Open Class Library begin with the letter "i", for IBM, and use lowercase letters.

The following table lists the file names, file extensions, and a brief description.

File Name and Extension | Description
--- | ---
ixxxxxxx.cpp | Source code
ixxxxxxx.hpp | Class interface file
ixxxxxxx.h | Constant definitions file
ixxxxxxx.inl | Inline functions

The Open Class Library product files for this release begin with the letters "cpp." The following table lists some file names, files extensions, and a brief description.

File Name and Extension | Description
--- | ---
cpp*i36.lib | Generic import library files for each DLL.
cpp*i36.dll | Generic multithreaded dynamic-link library files containing the Open Class Library classes.
cpp*S36.lib | Generic static object library.
cppfgi36.dll | Old graphics library. New graphics library is cppogi36.dll.
cpporr36.dll | Contains the resources used with tool bars and other Open Class Library classes.
cppoai36.msg | Exception messages for the User Interface Classes.
cppobi36.dll | Multithreaded dynamic link library file containing the base library classes (Collection, Data Types, and Exceptions)
cppodi36.dll | Multithreaded dynamic link library file containing the Dynamic Data Exchange classes.
cppofi36.dll | Multithreaded dynamic link library file containing the iostream-dependent library.
cppogi36.dll | Multithreaded dynamic link library file containing the Graphics classes.
cppoki36.dll | Multithreaded dynamic link library file containing the Test Framework classes.
cppomi36.dll | Multithreaded dynamic link library file containing the Multimedia classes
cppoqi36.dll | Multithreaded dynamic link library file containing the CUA '91 controls.
cppoui36.dll | Multithreaded dynamic link library file containing the User Interface Base Library classes.

Note: The first four letters of the CCL controls library (CPPOQI36.DLL) should be the same as the first four letters of the UI classes library (CPPOUI36.DLL) in dynamically linked applications. If your application statically links with the CCL controls library, you may also use the first four letters of your executables instead of those of the UI classes library.

The following table lists some other file names used by the Open Class Library for AIX, their extensions, and a brief description.

File Name and Extension | Description | Installed Location
--- | --- | ---
libcxxfstrmns.a | Static library for iostream-dependent filesystem classes | /usr/ibmcxx/lib
libcxxbasens.a | Static library for Base library classes | /usr/ibmcxx/lib
libcxxtestfwns.a | Static library for Test Framework classes | /usr/ibmcxx/lib
libcxxgraph2dns.a | Static library for Graphic classes | /usr/ibmcxx/lib
libcxxuins.a | Static library for User Interface classes | /usr/ibmcxx/lib
libcxxfstrm.a | Shared library for iostream-dependent filesystem classes | /usr/ibmcxx/lib
libcxxbase.a | Shared library for Base library classes | /usr/ibmcxx/lib
libcxxtestfw.a | Shared library for Test Framework classes | /usr/ibmcxx/lib
libcxxgraph2d.a | Shared library for Graphic classes | /usr/ibmcxx/lib
libcxxui.a | Shared library for User Interface classes | /usr/ibmcxx/lib

### Naming Classes and Members

The following rules were used for naming the Open Class Library classes and members:

- Type names begin with a capital letter.
- Global type names begin with the letter "I," as in ICurrentApplication.
- Member names, including member functions, member data, and enumerations, begin with lowercase letters, as in autoSize data member.

  Note: | In this book, single-word member functions have ClassName:: added to them; for example, the member function "show" appears as IWindow::show.

### Returning Values and Passing Function Arguments

To follow the Open Class Library conventions, pass objects by reference preferable as const references and return objects by value rather than by reference. Pass objects by pointer rather than by reference when you want a parameter to use its default.

Function return types for the various functions are as follows:

- A "bool" (true or false). Use IBase::"bool" because it is portable between Windows, OS/2, and Motif. The following is an example of a testing function:

      bool isValid() const;

  Note: | The Open Class Library returns a 0 if false and a nonzero if true, so do not test for the following:
      isValid()== true
  Instead, use the following:
      if(isValid())

- An object. Accessor functions typically return an object. An accessor returns information about the elements of a data type. The following example returns a pointer to an IWindow object.

      IWindow* owner();                   //Returns a pointer to an object

Function arguments are passed in the following ways:

- Built-in types (integers or doubles, for example) and enumerations are passed in by value.
- Objects are passed by reference. If the argument is not modified by the function, it is passed as a const reference.
- Optional objects are passed by pointer. This allows a 0 pointer to signify that no object is being passed.
- IWindow objects are passed by pointer.
- IContainerObjects are passed by pointer.
- Strings are passed as a const char *. This enables you to pass either an IString object or an array of characters.