Erlang 21

erl_eterm




erlang

erl_eterm

C लाइब्रेरी

erl_eterm

लाइब्रेरी सारांश

Erlang अवधि के निर्माण के लिए कार्य।

विवरण

यह मॉड्यूल एर्लांग शब्दों को बनाने और हेरफेर करने के लिए कार्य प्रदान करता है।

ETERM को टाइप ETERM की C संरचना द्वारा ETERM । अनुप्रयोगों को सीधे इस संरचना में किसी भी फ़ील्ड का संदर्भ नहीं देना चाहिए, क्योंकि यह भविष्य के रिलीज में तेजी से और अधिक कॉम्पैक्ट टर्म स्टोरेज प्रदान करने के लिए बदला जा सकता है। इसके बजाय, अनुप्रयोगों को प्रदान किए गए मैक्रोज़ और फ़ंक्शन का उपयोग करना चाहिए।

निम्न मैक्रोज़ में से प्रत्येक एक तर्क के रूप में एकल ETERM पॉइंटर लेता है। मैक्रो गैर-शून्य मान लौटाता है यदि परीक्षण सत्य है, अन्यथा 0

ERL_IS_INTEGER(t)
सच है अगर t एक पूर्णांक है।
ERL_IS_UNSIGNED_INTEGER(t)
सच है अगर t एक पूर्णांक है।
ERL_IS_FLOAT(t)
सच है अगर t एक फ्लोटिंग पॉइंट नंबर है।
ERL_IS_ATOM(t)
सच है अगर t एक परमाणु है।
ERL_IS_PID(t)
सच है अगर t एक पिड (प्रक्रिया पहचानकर्ता) है।
ERL_IS_PORT(t)
सच है अगर t एक बंदरगाह है।
ERL_IS_REF(t)
सच है अगर t एक संदर्भ है।
ERL_IS_TUPLE(t)
सच है अगर t एक tuple है।
ERL_IS_BINARY(t)
सच है अगर t एक द्विआधारी है।
ERL_IS_LIST(t)
सच है अगर t शून्य या अधिक तत्वों के साथ एक सूची है।
ERL_IS_EMPTY_LIST(t)
सच है अगर t एक खाली सूची है।
ERL_IS_CONS(t)
सच है अगर t कम से कम एक तत्व के साथ एक सूची है।

निम्नलिखित मैक्रोज़ का उपयोग एर्लांग शब्दों के भागों को पुनः प्राप्त करने के लिए किया जा सकता है। इनमें से कोई भी किसी भी प्रकार की जाँच नहीं करता है। यदि आप ETERM* गलत प्रकार से पास करते हैं तो परिणाम अपरिभाषित हैं। उदाहरण के लिए, ERL_ATOM_PTR() में कचरा ERL_ATOM_PTR() संभावना है।

char *ERL_ATOM_PTR(t)
char *ERL_ATOM_PTR_UTF8(t)
एटम t प्रतिनिधित्व करने वाला एक स्ट्रिंग।
int ERL_ATOM_SIZE(t)
int ERL_ATOM_SIZE_UTF8(t)
परमाणु t की लंबाई (बाइट्स में)।
void *ERL_BIN_PTR(t)
t की सामग्री के लिए एक सूचक।
int ERL_BIN_SIZE(t)
बाइनरी ऑब्जेक्ट t की लंबाई (बाइट्स में) t
int ERL_INT_VALUE(t)
t का पूर्णांक।
unsigned int ERL_INT_UVALUE(t)
t का अहस्ताक्षरित पूर्णांक मान।
double ERL_FLOAT_VALUE(t)
t अस्थायी बिंदु मान।
ETERM *ERL_PID_NODE(t)
ETERM *ERL_PID_NODE_UTF8(t)
पिड t में नोड।
int ERL_PID_NUMBER(t)
Pid t में अनुक्रम संख्या।
int ERL_PID_SERIAL(t)
Pid t में क्रम संख्या।
int ERL_PID_CREATION(t)
Pid t में निर्माण संख्या।
int ERL_PORT_NUMBER(t)
पोर्ट t में अनुक्रम संख्या।
int ERL_PORT_CREATION(t)
पोर्ट t में निर्माण संख्या।
ETERM *ERL_PORT_NODE(t)
ETERM *ERL_PORT_NODE_UTF8(t)
पोर्ट t में नोड।
int ERL_REF_NUMBER(t)
रेफरी t में संदर्भ संख्या का पहला भाग। अनुकूलता के लिए ही उपयोग करें।
int ERL_REF_NUMBERS(t)
रेफरी t में संदर्भ संख्याओं के सरणी को इंगित करें।
int ERL_REF_LEN(t)
रेफरी t में प्रयुक्त संदर्भ संख्याओं की संख्या।
int ERL_REF_CREATION(t)
रेफरी t में निर्माण संख्या।
int ERL_TUPLE_SIZE(t)
टपल t में तत्वों की संख्या।
ETERM *ERL_CONS_HEAD(t)
सूची का मुख्य तत्व t
ETERM *ERL_CONS_TAIL(t)
सूची t के पूंछ तत्वों का प्रतिनिधित्व करने वाली एक सूची।

निर्यात

ETERM *erl_cons(head, tail)

प्रकार

दो एर्लैंग शब्द सम्‍मिलित करते हैं, tail पर head आगे बढ़ाते हैं और इस तरह एक cons सेल बनाते हैं। एक उचित सूची बनाने के लिए, tail हमेशा एक सूची या एक खाली सूची होनी चाहिए। ध्यान दें कि NULL एक मान्य सूची नहीं है।

  • head नया शब्द जोड़ा जाना है।
  • tail मौजूदा सूची है जिसमें head को समतल किया जाता है।

फ़ंक्शन एक नई सूची देता है।

ERL_CONS_HEAD(list) और ERL_CONS_TAIL(list) का उपयोग ERL_CONS_TAIL(list) से सिर और पूंछ के घटकों को पुनः प्राप्त करने के लिए किया जा सकता है। erl_hd(list) और erl_tl(list) एक ही काम करते हैं, लेकिन जांच लें कि तर्क वास्तव में एक सूची है।

उदाहरण:

ETERM *list,*anAtom,*anInt;
anAtom = erl_mk_atom("madonna");
anInt  = erl_mk_int(21);
list   = erl_mk_empty_list();
list   = erl_cons(anAtom, list);
list   = erl_cons(anInt, list);
 ... /* do some work */
erl_free_compound(list);

ETERM *erl_copy_term(term)

प्रकार

एर्लैंग टर्म term की एक प्रति बनाता और वापस करता है।

ETERM *erl_element(position, tuple)

प्रकार

एक Erlang tuple से एक निर्दिष्ट तत्व निकालता है।

  • position निर्दिष्ट करती है कि कौन सा तत्व tuple से प्राप्त करना है। तत्वों को 1 से शुरू किया गया है।
  • tuple कम से कम position तत्वों से युक्त एक एरलंग शब्द है।

अनुरोधित तत्व के अनुरूप एक नया Erlang शब्द लौटाता है, या NULL अगर position tuple की arity से अधिक थी।

ETERM *erl_hd(list)

प्रकार

किसी सूची से पहला तत्व निकालता है।

list एक एरलंग शब्द है जिसमें एक सूची है।

यदि list में कोई सूची नहीं थी, तो list में मुख्य शीर्ष तत्व या एक NULL सूचक के अनुरूप एक इरलांग शब्द लौटाता है।

void erl_init(NULL, 0)

प्रकार

लाइब्रेरी फ़ंक्शन को प्रारंभ करने के लिए इस फ़ंक्शन को Erl_Interface लाइब्रेरी में किसी भी अन्य से पहले बुलाया जाना चाहिए। तर्क को erl_init(NULL,0) रूप में निर्दिष्ट किया जाना चाहिए।

int erl_iolist_length(list)

प्रकार

I / O सूची की लंबाई लौटाता है।

list एक इरलांग शब्द है जिसमें I / O सूची है।

list की लंबाई लौटाता है, या -1 यदि list I / O सूची नहीं है।

I / O सूची की परिभाषा के लिए, erl_iolist_to_binary देखें।

ETERM *erl_iolist_to_binary(term)

प्रकार

एक I / O सूची को एक बाइनरी टर्म में परिवर्तित करता है।

list एक एरलंग शब्द है जिसमें एक सूची है।

यदि कोई list I / O सूची नहीं थी, तो एक Erlang बाइनरी शब्द, या NULL लौटाता है।

अनौपचारिक रूप से, I / O सूची पात्रों और बायनेरिज़ की एक गहरी सूची है जिसे एक एरलांग बंदरगाह पर भेजा जा सकता है। BNF में, I / O सूची औपचारिक रूप से निम्नानुसार परिभाषित की गई है:

iolist ::= []
        |   Binary
        |   [iohead | iolist]
        ;
iohead ::= Binary
        |   Byte (integer in the range [0..255])
        |   iolist
        ;

char *erl_iolist_to_string(list)

प्रकार

एक I / O सूची को एक पूर्ण-सी-सी स्ट्रिंग में परिवर्तित करता है।

list एक इरलांग शब्द है जिसमें I / O सूची है। I / O सूची में पूर्णांक 0 नहीं होना चाहिए, क्योंकि C स्ट्रिंग्स में यह मान नहीं हो सकता है सिवाय एक समाप्ति मार्कर के।

एक स्ट्रिंग को युक्त गतिशील रूप से आवंटित बफर को एक पॉइंटर लौटाता है। यदि list I / O सूची नहीं है, या यदि list में पूर्णांक 0 है, तो NULL वापस आ जाता है। यह कॉलर की जिम्मेदारी है कि वह आवंटित बफर को erl_free() साथ मुक्त करे।

I / O सूची की परिभाषा के लिए, erl_iolist_to_binary देखें।

int erl_length(list)

प्रकार

एक उचित सूची की लंबाई निर्धारित करता है।

list एक एरलंग शब्द है जिसमें एक उचित सूची है। एक उचित सूची में, अंतिम सूची को छोड़कर अन्य सभी पूंछ एक अन्य सूची सेल और अंतिम पूंछ एक खाली सूची को इंगित करती है।

रिटर्न -1 अगर list एक उचित सूची नहीं है।

ETERM *erl_mk_atom(string)

प्रकार

परमाणु बनाता है।

string पात्रों का अनुक्रम है जो परमाणु बनाने के लिए उपयोग किया जाएगा।

एक एरांग शब्द रखता है जिसमें एक परमाणु होता है। ध्यान दें कि यह सुनिश्चित करने के लिए कॉलर की जिम्मेदारी है कि string में एक परमाणु का वैध नाम है।

ERL_ATOM_PTR(atom) और ERL_ATOM_PTR_UTF8(atom) का उपयोग परमाणु नाम (एक पूर्ण-स्ट्रिंग के रूप में) को पुनः प्राप्त करने के लिए किया जा सकता है। ERL_ATOM_SIZE(atom) और ERL_ATOM_SIZE_UTF8(atom) परमाणु नाम की लंबाई लौटाते हैं।

ध्यान दें

UTF-8 वेरिएंट को Erlang / OTP R16 में पेश किया गया था और ERL_ATOM_PTR(atom) द्वारा लौटाए गए तार पुराने रिलीज पर पूर्ण नहीं थे।

ETERM *erl_mk_binary(bptr, size)

प्रकार

बाइट्स के अनुक्रम वाले बफर से एक एरलांग बाइनरी ऑब्जेक्ट का उत्पादन करता है।

  • bptr एक बफ़र के लिए एक संकेतक है जिसमें डेटा को परिवर्तित किया जाना है।
  • size bptr की लंबाई इंगित करता है।

एक Erlang बाइनरी ऑब्जेक्ट लौटाता है।

ERL_BIN_PTR(bin) बाइनरी डेटा के लिए एक पॉइंटर को पुनः प्राप्त करता है। ERL_BIN_SIZE(bin) आकार को पुनः प्राप्त करता है।

ETERM *erl_mk_empty_list()

एक खाली एर्लांग सूची बनाता और वापस करता है। ध्यान दें कि NULL सूची का प्रतिनिधित्व करने के लिए NULL का उपयोग नहीं किया जाता है; इसके बजाय इस फ़ंक्शन का उपयोग करें।

ETERM *erl_mk_estring(string, len)

प्रकार

बाइट्स के एक क्रम से एक सूची बनाता है।

  • string एक बफ़र है जिसमें बाइट्स का क्रम होता है। बफर को NULL -minminated होने की आवश्यकता नहीं है।
  • len string की लंबाई है।

string में वर्ण अनुक्रम के अनुरूप एक एरलांग सूची वस्तु देता है।

ETERM *erl_mk_float(f)

प्रकार

एक एरलांग फ्लोट बनाता है।

f एक एर्लांग फ्लोट में परिवर्तित होने वाला मान है।

यदि कोई परिमित राशि नहीं है तो f या NULL में निर्दिष्ट मान के साथ एक एरलांग फ्लोट ऑब्जेक्ट लौटाता है।

ERL_FLOAT_VALUE(t) उपयोग ERL_FLOAT_VALUE(t) फ्लोट से मान प्राप्त करने के लिए किया जा सकता है।

ETERM *erl_mk_int(n)

प्रकार

एक एरलैंग पूर्णांक बनाता है।

n एक एरलैंग पूर्णांक में परिवर्तित होने वाला मान है।

n में निर्दिष्ट मान के साथ एक एरलैंग पूर्णांक ऑब्जेक्ट लौटाता है।

ERL_INT_VALUE(t) उपयोग ERL_INT_VALUE(t) पूर्णांक से मान प्राप्त करने के लिए किया जा सकता है।

ETERM *erl_mk_list(array, arrsize)

प्रकार

Erlang शब्दों की एक सरणी से एक Erlang सूची बनाता है, जैसे कि सूची में प्रत्येक तत्व सरणी में एक तत्व से मेल खाता है।

  • array Erlang शब्दों की एक सरणी है।
  • array में तत्वों की संख्या है।

फ़ंक्शन एक arrsize सूची ऑब्जेक्ट बनाता है, जिसकी लंबाई arrsize और जिनके तत्व array में शर्तों से लिए जाते हैं।

ETERM *erl_mk_long_ref(node, n1, n2, n3, creation)

प्रकार

82 बिट्स के साथ एक एरलांग संदर्भ बनाता है।

  • node सी-नोड का नाम है।
  • n1 , n2 , और n3 को एक बड़ी संख्या n1*2^64+n2*2^32+n3 में देखा जा सकता है, जिसे किसी दिए गए सी-नोड के लिए बनाए गए प्रत्येक संदर्भ के लिए विशिष्ट रूप से चुना जाना है।
  • creation एक मनमानी संख्या है।

ध्यान दें कि n3 और creation परिशुद्धता में सीमित हैं, इसलिए इन संख्याओं में से केवल 18 और 2 बिट्स का उपयोग किया जाता है।

एक Erlang संदर्भ वस्तु देता है।

संदर्भ बनाने के लिए उपयोग किए गए मानों को पुनः प्राप्त करने के लिए ERL_REF_NODE(ref) , ERL_REF_NUMBERS(ref) , ERL_REF_LEN(ref) , और ERL_REF_CREATION(ref) का उपयोग किया जा सकता है।

ETERM *erl_mk_pid(node, number, serial, creation)

प्रकार

एक Erlang प्रक्रिया पहचानकर्ता (pid) बनाता है। परिणामी पीआईडी ​​का उपयोग सी-नोड के साथ संवाद करने के इच्छुक एरलांग प्रक्रियाओं द्वारा किया जा सकता है।

  • node सी-नोड का नाम है।
  • number , serial और creation मनमानी संख्याएँ हैं। ध्यान दें कि ये परिशुद्धता में सीमित हैं, इसलिए इन संख्याओं के केवल 15, 3 और 2 बिट्स का उपयोग किया जाता है।

एक Erlang pid ऑब्जेक्ट देता है।

ERL_PID_NODE(pid) , ERL_PID_NUMBER(pid) , ERL_PID_SERIAL(pid) , और ERL_PID_CREATION(pid) का उपयोग pid बनाने के लिए उपयोग किए गए चार मानों को प्राप्त करने के लिए किया जा सकता है।

ETERM *erl_mk_port(node, number, creation)

प्रकार

एक एरलांग बंदरगाह पहचानकर्ता बनाता है।

  • node सी-नोड का नाम है।
  • number और creation मनमानी संख्याएँ हैं। ध्यान दें कि ये परिशुद्धता में सीमित हैं, इसलिए इन संख्याओं के केवल 18 और 2 बिट्स का उपयोग किया जाता है।

एक Erlang पोर्ट ऑब्जेक्ट देता है।

ERL_PORT_NODE(port) , ERL_PORT_NUMBER(port) और ERL_PORT_CREATION का उपयोग पोर्ट बनाने के लिए उपयोग किए गए तीन मानों को प्राप्त करने के लिए किया जा सकता है।

ETERM *erl_mk_ref(node, number, creation)

प्रकार

एक पुराना Erlang संदर्भ बनाता है, जिसमें केवल 18 बिट्स हैं - इसके बजाय erl_mk_long_ref उपयोग करें।

  • node सी-नोड का नाम है।
  • किसी दिए गए C- नोड के लिए बनाए गए प्रत्येक संदर्भ के लिए number को विशिष्ट रूप से चुना जाना है।
  • creation एक मनमानी संख्या है।

ध्यान दें कि number और creation परिशुद्धता में सीमित हैं, इसलिए इन संख्याओं में से केवल 18 और 2 बिट्स का उपयोग किया जाता है।

एक Erlang संदर्भ वस्तु देता है।

संदर्भ बनाने के लिए उपयोग किए गए तीन मानों को पुनः प्राप्त करने के लिए ERL_REF_NODE(ref) , ERL_REF_NUMBER(ref) , और ERL_REF_CREATION(ref) का उपयोग किया जा सकता है।

ETERM *erl_mk_string(string)

प्रकार

एक पूर्ण-स्ट्रिंग स्ट्रिंग से एक सूची बनाता है।

string वर्णों का एक पूर्ण-क्रमबद्ध अनुक्रम है (अर्थात, C स्ट्रिंग) जिसमें से सूची बनाई जाएगी।

एक एर्लांग सूची लौटाता है।

ETERM *erl_mk_tuple(array, arrsize)

प्रकार

Erlang शब्दों की एक सरणी से एक Erlang tuple बनाता है।

  • array Erlang शब्दों की एक सरणी है।
  • array में तत्वों की संख्या है।

फ़ंक्शन एक एर्लैंग टपल बनाता है, जिसकी समरूपता size और जिनके तत्व array में शर्तों से लिए गए हैं।

टपल के आकार को पुनः प्राप्त करने के लिए, या तो फ़ंक्शन erl_size उपयोग करें (जो चेक किए गए शब्द के प्रकार की जांच करता है और एक द्विआधारी के साथ-साथ एक ERL_TUPLE_SIZE(tuple) लिए काम करता है) या ERL_TUPLE_SIZE(tuple) एक ट्यूपल की ERL_TUPLE_SIZE(tuple) देता है। erl_size() वही काम करता है, लेकिन यह जांचता है कि तर्क एक तुक है। erl_element(index,tuple) में दिए गए स्थान के अनुरूप तत्व देता है।

ETERM *erl_mk_uint(n)

प्रकार

एक एरलैंग अहस्ताक्षरित पूर्णांक बनाता है।

n एक Erlang अहस्ताक्षरित पूर्णांक में परिवर्तित किया जाने वाला मान है।

n में निर्दिष्ट मान के साथ एक इरलैंग अहस्ताक्षरित पूर्णांक ऑब्जेक्ट लौटाता है।

ERL_INT_UVALUE(t) उपयोग ERL_INT_UVALUE(t) अहस्ताक्षरित पूर्णांक से मान प्राप्त करने के लिए किया जा सकता है।

ETERM *erl_mk_var(name)

प्रकार

एक अनबाउंड Erlang चर बनाता है। चर को बाद में पैटर्न मिलान या असाइनमेंट के माध्यम से बांधा जा सकता है।

name चर के लिए एक name निर्दिष्ट करता है।

नाम के साथ एक Erlang चर वस्तु देता है।

int erl_print_term(stream, term)

प्रकार

निर्दिष्ट Erlang शब्द को निर्दिष्ट आउटपुट स्ट्रीम पर प्रिंट करता है।

  • stream इंगित करता है कि फ़ंक्शन अपने आउटपुट को कहां भेजना है।
  • term प्रिंट करने के लिए एर्लैंग शब्द है।

सफलता पर लिखे गए पात्रों की संख्या लौटाता है, अन्यथा एक नकारात्मक मूल्य।

void erl_set_compat_rel(release_number)

प्रकार

डिफ़ॉल्ट रूप से, Erl_Interface लाइब्रेरी की गारंटी केवल Erl_Interface लाइब्रेरी के समान रिलीज़ से अन्य Erlang / OTP घटकों के साथ संगत होने की गारंटी है। उदाहरण के लिए, Erlang / OTP R10 से Erl_Interface डिफ़ॉल्ट रूप से Erlang / OTP R9 से Erlang एमुलेटर के साथ संगत नहीं है।

erl_set_compat_rel(release_number) लिए कॉल erl_set_compat_rel(release_number) Erl_Interface संगतता मोड में Erl_Interface लाइब्रेरी release_number release_number की वैध सीमा [7, वर्तमान रिलीज़] है। इससे पहले रिलीज़ से Erlang / OTP घटकों के साथ संवाद करना संभव हो जाता है।

ध्यान दें

यदि इस फ़ंक्शन को कॉल किया जाता है, तो इसे erl_init() फ़ंक्शन को कॉल करने के बाद केवल एक बार सीधे कॉल किया जा सकता है।

चेतावनी

यदि आप इस सुविधा का लापरवाही से उपयोग करते हैं तो आप मुश्किल में पड़ सकते हैं। हमेशा सुनिश्चित करें कि सभी संचार घटक या तो एक ही एरलंग / ओटीपी रिलीज़ से हैं, या रिलीज़ एक्स और रिलीज़ वाई से हैं जहाँ रिलीज़ वाई से सभी घटक रिलीज़ एक्स की संगतता मोड में हैं।

int erl_size(term)

प्रकार

या तो एक इरलंग ट्यूल की धमनी या एक इरलंग बाइनरी ऑब्जेक्ट में बाइट्स की संख्या देता है।

term एक एरलैंग टपल या एक एरलैंग बाइनरी ऑब्जेक्ट है।

ऊपर वर्णित term का आकार लौटाता है, या -1 यदि term दो समर्थित प्रकारों में से एक नहीं है।

ETERM *erl_tl(list)

प्रकार

सूची से पूंछ निकालता है।

list एक एरलंग शब्द है जिसमें एक सूची है।

यदि कोई सूची नहीं थी, तो मूल सूची के पहले तत्व, या NULL पॉइंटर के अनुरूप एक एरलंग सूची देता है।

ETERM *erl_var_content(term, name)

प्रकार

एक Erlang अवधि में निर्दिष्ट चर की सामग्री लौटाता है।

  • term एर्लैंग टर्म है। इस फ़ंक्शन को सफल होने के लिए, term या तो निर्दिष्ट नाम के साथ एक एरलैंग चर होना चाहिए, या यह एर्लांग सूची या टपल होना चाहिए जिसमें निर्दिष्ट नाम के साथ एक चर हो। अन्य Erlang प्रकारों में चर नहीं हो सकते।
  • name एर्लांग चर का name है।

term में name के मूल्य के अनुरूप एरलांग वस्तु लौटाता है। यदि नाम के साथ कोई चर term में नहीं मिला है, या यदि term वैध एर्लैंग शब्द नहीं है, तो NULL वापस किया जाता है।