---
name: "m17nSymbol"
section: "3m17n"
platform: "linux"
package: "m17n-docs"
version: "1.8.4-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/m17nSymbol"
---

# m17nSymbol(3m17n)

\- Symbol objects and API for them.

## NAME

m17nSymbol\_-\_Sy -  - Symbol objects and API for them.

## SYNOPSIS

### Functions

MSymbol **msymbol** (const char \*name)\
 Get a symbol.  MSymbol **msymbol\_as\_managing\_key** (const char \*name)\
 Create a managing key.  int **msymbol\_is\_managing\_key** (MSymbol symbol)\
 Check if a symbol is a managing key.  MSymbol **msymbol\_exist** (const char \*name)\
 char \* **msymbol\_name** (MSymbol symbol)\
 int **msymbol\_put** (MSymbol symbol, MSymbol key, void \*val)\
 Set the value of a symbol property.  void \* **msymbol\_get** (MSymbol symbol, MSymbol key)\
 Get the value of a symbol property.  int **msymbol\_put\_func** (MSymbol symbol, MSymbol key, **M17NFunc** func)\
 Set the value (function pointer) of a symbol property.  **M17NFunc** **msymbol\_get\_func** (MSymbol symbol, MSymbol key)\
 Get the value (function pointer) of a symbol property.

### Variables

MSymbol **Mnil**\
 Symbol whose name is 'nil'.  MSymbol **Mt**\
 Symbol whose name is 't'.  MSymbol **Mstring**\
 Symbol whose name is 'string'.  MSymbol **Msymbol**\
 Symbol whose name is 'symbol'.

## Detailed Description

Symbol objects and API for them.

The m17n library uses objects called *symbols* as unambiguous identifiers. Symbols are similar to atoms in the X library, but a symbol can have zero or more *symbol* *properties*. A symbol property consists of a *key* and a *value*, where key is also a symbol and value is anything that can be cast to `(void *)`. \
\
  'The symbol property that belongs to the symbol S and whose key is K' may be shortened to 'K property of S'.

Symbols are used mainly in the following three ways.

- •

  As keys of symbol properties and other properties.

- •

  To represent various objects, e.g. charsets, coding systems, fontsets.

- •

  As arguments of the m17n library functions to control their behavior.

There is a special kind of symbol, a *managing* *key*. The value of a property whose key is a managing key must be a *managed* *object*. See **Managed Object** for the detail.

## Variable Documentation

### MSymbol Mnil

Symbol whose name is 'nil'. The symbol **Mnil** has the name `'nil'` and, in general, represents *false* or *no*. When coerced to 'int', its value is zero. **Mnil** can't have any symbol property. \

### MSymbol Mt

Symbol whose name is 't'. The symbol **Mt** has the name `'t'` and, in general, represents *true* or *yes*. \

### MSymbol Mstring

Symbol whose name is 'string'. The symbol **Mstring** has the name `'string'` and is used as an argument of the functions **mchar\_define\_property()**, etc. \

### MSymbol Msymbol

Symbol whose name is 'symbol'. The symbol **Msymbol** has the name `'symbol'` and is used as an argument of the functions **mchar\_define\_property()**, etc. \

## Author

Generated automatically by Doxygen for The m17n Library from the source code.

## COPYRIGHT

Copyright (C) 2001 Information-technology Promotion Agency (IPA)\
 Copyright (C) 2001-2011 National Institute of Advanced Industrial Science and Technology (AIST)\
 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License  \<http://www.gnu.org/licenses/fdl.html\>.
