Erlang 21

erl_marshal




erlang

erl_marshal

C लाइब्रेरी

erl_marshal

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

एर्लांग शब्दों की एन्कोडिंग और डिकोडिंग।

विवरण

इस मॉड्यूल में बाइट के अनुक्रम में एर्लैंग की शर्तों को एन्कोडिंग के लिए और बाइट्स के अनुक्रम से एर्लैंग की शर्तों को डिकोड करने के लिए कार्य शामिल हैं।

निर्यात

int erl_compare_ext(bufp1, bufp2)

प्रकार

दो एन्कोडेड शब्दों की तुलना करता है।

  • bufp1 एक बफर है जिसमें एन्कोडेड bufp1 टर्म टर्म 1 है।
  • bufp2 एक बफर है जिसमें एक एन्कोडेड Erlang term bufp2 होता है।

अगर रिटर्न समान हो तो रिटर्न 0 , -1 अगर टर्म 1 < term2 , या 1 अगर term2 < term1 1

ETERM *erl_decode(bufp) ETERM *erl_decode_buf(bufpp)

प्रकार

erl_decode() और erl_decode_buf() एक बफर की सामग्री को डीकोड करते हैं और संबंधित erl_decode_buf() शब्द को वापस करते हैं। erl_decode_buf() बफर में लगातार संग्रहीत कई एन्कोडेड शर्तों से निपटने के लिए एक सरल तंत्र प्रदान करता है।

  • bufp एक पॉइंटर के लिए एक पॉइंटर होता है जिसमें एक या अधिक एन्कोडेड एरलैंग शब्द होते हैं।

  • bufpp एक बफर पॉइंटर का पता है। बफ़र में एक या अधिक लगातार एन्कोडेड शब्द होते हैं। erl_decode_buf() लिए एक सफल कॉल के बाद, bufpp को अपडेट किया जाता है ताकि यह अगले एन्कोड किए गए शब्द को इंगित करे।

erl_decode() सफलता पर bufp की सामग्री के अनुरूप एक Erlang शब्द देता है, अन्यथा NULL erl_decode_buf() में लगातार शर्तों के अनुसार एक Erlang शब्द देता है और बफर में अगले शब्द को इंगित करने के लिए bufpp आगे bufpp । विफलता पर, प्रत्येक फ़ंक्शन NULL वापस करता NULL

int erl_encode(term, bufp) int erl_encode_buf(term, bufpp)

प्रकार

erl_encode() और erl_encode_buf() स्टोरेज या ट्रांसमिशन के लिए Erlang शब्दों को बाहरी प्रारूप में एनकोड करें। erl_encode_buf() एक ही बफर में लगातार कई शब्दों को एन्कोडिंग के लिए एक सरल तंत्र प्रदान करता है।

  • term एक एरलांग शब्द है जिसे एनकोड किया जाना है।

  • bufp एक पॉइंटर के लिए एक पॉइंटर होता है जिसमें एक या अधिक एन्कोडेड एरलैंग शब्द होते हैं।

  • bufpp एक पॉइंटर को एक पॉइंटर को एक पॉइंटर होता है जिसमें एक या एक से अधिक बार bufpp शब्द होते हैं। erl_encode_buf() लिए एक सफल कॉल के बाद, bufpp को अपडेट किया जाता है ताकि यह अगले एन्कोडेड शब्द के लिए स्थिति को इंगित करे।

ये फ़ंक्शन सफलता पर बफ़र को लिखे गए बाइट्स की संख्या वापस करते हैं, अन्यथा 0

ध्यान दें कि बफर पर कोई सीमा जाँच नहीं की जाती है। यह सुनिश्चित करने के लिए कॉलर की जिम्मेदारी है कि बफर एन्कोडेड शर्तों को धारण करने के लिए पर्याप्त है। आप या तो एक स्थिर बफर का उपयोग कर सकते हैं जो आपके प्रोग्राम में अपेक्षित शर्तों को रखने के लिए काफी बड़ा है, या किसी दिए गए पद के लिए सटीक आवश्यकताओं को निर्धारित करने के लिए erl_term_len() का उपयोग करें।

निम्नलिखित आप टर्म के लिए बफर आवश्यकताओं का अनुमान लगाने में मदद कर सकते हैं। ध्यान दें कि यह जानकारी कार्यान्वयन-विशिष्ट है, और भविष्य के संस्करणों में बदल सकती है। यदि आप अनिश्चित हैं, तो erl_term_len() उपयोग करें।

Erlang शब्द 1 बाइट टैग के साथ एन्कोड किए गए हैं जो ऑब्जेक्ट के प्रकार, 2- या 4-बाइट लंबाई क्षेत्र और फिर स्वयं डेटा की पहचान करता है। विशेष रूप से:

Tuples
5 बाइट्स की आवश्यकता है, साथ ही प्रत्येक तत्व के लिए जगह।
Lists
5 बाइट्स, प्रत्येक तत्व के लिए स्थान और अंत में खाली सूची के लिए 1 और बाइट की आवश्यकता है।
Strings and atoms
3 बाइट्स की आवश्यकता है, प्रत्येक चरित्र के लिए 1 बाइट (समाप्ति 0 एन्कोडेड नहीं है)। वास्तव में लंबे तार (64k से अधिक अक्षर) सूचियों के रूप में एन्कोड किए गए हैं। परमाणुओं में 256 से अधिक वर्ण नहीं हो सकते।
Integers
5 बाइट चाहिए।
Characters
(इंटेगर <256) को 2 बाइट चाहिए।
Floating point numbers
32 बाइट चाहिए।
Pids
10 बाइट्स की आवश्यकता है, साथ ही नोड नाम के लिए स्थान, जो एक परमाणु है।
Ports and Refs
6 बाइट्स की आवश्यकता है, साथ ही नोड नाम के लिए स्थान, जो एक परमाणु है।

आवश्यक कुल स्थान उपरोक्त जानकारी से गणना की गई है, साथ ही एक संस्करण पहचानकर्ता के लिए 1 और बाइट।

int erl_ext_size(bufp)

प्रकार

एन्कोडेड अवधि में तत्वों की संख्या देता है।

unsigned char erl_ext_type(bufp)

प्रकार

एक बफर में एन्कोडेड शब्द के प्रकार को पहचानता और लौटाता है। यह एक अनुगामी जादू पहचानकर्ता को छोड़ देता है।

रिटर्न 0 यदि प्रकार निर्धारित नहीं किया जा सकता है या इनमें से एक:

  • ERL_INTEGER
  • ERL_ATOM
  • ERL_PID (Erlang प्रक्रिया पहचानकर्ता)
  • ERL_PORT
  • ERL_REF ( ERL_REF संदर्भ)
  • ERL_EMPTY_LIST
  • ERL_LIST
  • ERL_TUPLE
  • ERL_FLOAT
  • ERL_BINARY
  • ERL_FUNCTION

unsigned char *erl_peek_ext(bufp, pos)

प्रकार

इस फ़ंक्शन का उपयोग बफर में एक या अधिक एन्कोड किए गए शब्दों को सीधे बाद में सीधे एक्सेस करने के लिए किया जाता है।

  • bufp एक पॉइंटर के लिए एक पॉइंटर होता है जिसमें एक या अधिक एन्कोडेड एरलैंग शब्द होते हैं।
  • pos यह बताता है कि बफर में कितने पद भरने हैं।

एक पॉटर को एक पॉइंटर लौटाता है जिसे बाद में कॉल करने के लिए उस स्थिति में शब्द को पुनः प्राप्त करने के लिए erl_decode() में उपयोग किया जा सकता है। यदि कोई शब्द नहीं है, या pos बफर में शर्तों के आकार को पार कर जाएगा, तो NULL वापस आ जाएगा।

int erl_term_len(t)

प्रकार

यदि यह Erlang बाहरी प्रारूप में erl_encode() द्वारा एन्कोड किया गया था, तो t द्वारा आवश्यक बफर स्थान निर्धारित करेगा।

आकार बाइट्स में देता है।