Back to index

im-sdk  12.3.91
Classes | Typedefs | Functions
iiimpDL.h File Reference
#include <X11/Xlib.h>
#include "guiIM.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _XIMDLRec

Typedefs

typedef struct _XIMDLRec XIMDLRec

Functions

XIMDLRecOpenDynamicObject (XLCd lcd)
void CloseDynamicObject (XIMDLRec *dl_object)

Class Documentation

struct _XIMDLRec

Definition at line 48 of file iiimpDL.h.

Class Members
ChangeLookupProc change_lookup
ChangePreeditProc change_preedit
ChangeStatusProc change_status
void * dl_module
RegisterForwardEventProc register_forwardevent
XIMStyles * styles

Typedef Documentation

typedef struct _XIMDLRec XIMDLRec

Function Documentation

void CloseDynamicObject ( XIMDLRec dl_object)

Definition at line 191 of file iiimpDL.c.

                                        {
  if (dl_object->styles) Xfree(dl_object->styles);
  dlclose(dl_object->dl_module);
  return;
}

Here is the caller graph for this function:

Definition at line 133 of file iiimpDL.c.

                            {
  void *module = NULL;
  XIMDLRec *dl_object = (XIMDLRec*)NULL;
  DIR *dir = NULL;
  struct dirent *entry;
  char *lc_name = lcd->core->name;
  char *filename;
  const size_t xlclocaledir_len = strlen (XLOCALEDIR);

  dir = opendir (XLOCALEDIR);
  if (dir == NULL)
    return NULL;

  while ((entry = readdir (dir)))
    {
      while (entry
            && (0 == strcmp (entry->d_name, ".") ||
               0 == strcmp (entry->d_name, "..")))
       entry = readdir (dir);
      if (entry && (filename = has_so_suffix (entry->d_name)) != NULL)
       {
         size_t len = xlclocaledir_len + strlen (filename) + 2;
         char *path = Xmalloc (len);
         strcpy (path, XLOCALEDIR);
         strcat (path, "/");
         strcat (path, filename);
         module = dlopen((char*)path, RTLD_LAZY);
         XFree (path);
         if (module)
           {
             dl_object = (XIMDLRec*)Xmalloc(sizeof(XIMDLRec));
             dl_object->dl_module = module;
             dl_object->styles = GetInputStyles(lc_name, module);
             dl_object->change_status =
              (ChangeStatusProc)GetProc(module,
                                     "ChangeStatus");
             dl_object->change_preedit =
              (ChangePreeditProc)GetProc(module,
                                      "ChangePreedit");
             dl_object->change_lookup =
              (ChangeLookupProc)GetProc(module,
                                     "ChangeLookup");
             dl_object->register_forwardevent =
              (RegisterForwardEventProc)GetProc(module,
                                            "RegisterForwardEvent");
           }
       }
      if (dl_object)
       break;
    }

  if (dir)
    closedir(dir);

  return dl_object;
}

Here is the call graph for this function:

Here is the caller graph for this function: