Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന perlmroapi കമാൻഡ് ആണിത്.
പട്ടിക:
NAME
perlmroapi - പേൾ രീതി റെസലൂഷൻ പ്ലഗിൻ ഇന്റർഫേസ്
വിവരണം
Perl 5.10.1 മുതൽ, പ്ലഗ്ഗിംഗ് ചെയ്യുന്നതിനും രീതി റെസലൂഷൻ ഓർഡറുകൾ ഉപയോഗിക്കുന്നതിനുമായി ഒരു പുതിയ ഇന്റർഫേസ് ഉണ്ട്.
ഡിഫോൾട്ട് അല്ലാതെ (ലീനിയർ ഡെപ്ത് ഫസ്റ്റ് സെർച്ച്). C3 രീതി റെസലൂഷൻ ക്രമം ചേർത്തു
5.10.0-ൽ അതിന്റെ Perl-സ്പെയ്സ് ഇന്റർഫേസ് മാറ്റാതെ തന്നെ ഒരു പ്ലഗിൻ ആയി വീണ്ടും നടപ്പിലാക്കി.
ഓരോ പ്ലഗിനും ഇനിപ്പറയുന്ന ഘടന നൽകിക്കൊണ്ട് സ്വയം രജിസ്റ്റർ ചെയ്യണം
struct mro_alg {
AV *(* പരിഹരിക്കുക)(pTHX_ HV *stash, U32 ലെവൽ);
കോൺസ്റ്റ് ചാർ *പേര്;
U16 നീളം;
U16 kflags;
U32 ഹാഷ്;
};
കൂടാതെ "Perl_mro_register" എന്ന് വിളിക്കുന്നു:
Perl_mro_register(aTHX_ &my_mro_alg);
തീരുമാനമെടുക്കുക
താഴെ വിവരിച്ചിരിക്കുന്ന ലീനിയറൈസേഷൻ ഫംഗ്ഷനിലേക്കുള്ള പോയിന്റർ.
പേര്
MRO-യുടെ പേര്, ഒന്നുകിൽ ISO-8859-1 അല്ലെങ്കിൽ UTF-8.
നീളം
പേരിന്റെ നീളം.
kflags
UTF-8-ൽ പേര് നൽകിയിട്ടുണ്ടെങ്കിൽ, ഇത് "HVhek_UTF8" ആയി സജ്ജമാക്കുക. മൂല്യം ഇതായി നേരിട്ട് കൈമാറുന്നു
പരാമീറ്റർ kflags "hv_common()" എന്നതിലേക്ക്.
ഹാഷ്
എംആർഒയുടെ പേരിന് ഒരു പ്രീകംപ്യൂട്ടഡ് ഹാഷ് മൂല്യം അല്ലെങ്കിൽ 0.
കോൾബാക്കുകൾ
"റിസോൾവ്" ഫംഗ്ഷൻ നൽകിയിരിക്കുന്ന സ്റ്റാഷിനായി ഒരു ലീനിയറൈസ്ഡ് ഐഎസ്എ ജനറേറ്റ് ചെയ്യാൻ വിളിക്കുന്നു
ഈ MRO. സ്റ്റാഷിലേക്കുള്ള ഒരു പോയിന്റർ ഉപയോഗിച്ച് ഇതിനെ വിളിക്കുന്നു, കൂടാതെ എ ലെവൽ 0. കോർ എപ്പോഴും സജ്ജീകരിക്കുന്നു
ലെവൽ അത് നിങ്ങളുടെ ഫംഗ്ഷനെ വിളിക്കുമ്പോൾ 0-ലേക്ക് - നിങ്ങളുടെ അനുവദിക്കുന്നതിന് പരാമീറ്റർ നൽകിയിരിക്കുന്നു
ഡെപ്ത് ട്രാക്ക് ചെയ്യാനുള്ള നടപ്പാക്കൽ, അത് ആവർത്തിക്കണമെങ്കിൽ.
ഫംഗ്ഷൻ ക്രമത്തിൽ പാരന്റ് ക്ലാസുകൾ അടങ്ങുന്ന ഒരു അറേയിലേക്ക് ഒരു റഫറൻസ് നൽകണം.
ക്ലാസുകളുടെ പേരുകൾ സ്റ്റാഷിൽ "HvENAME()" എന്ന് വിളിക്കുന്നതിന്റെ ഫലമായിരിക്കണം. ഇൻ
"HvENAME()" അസാധുവായി നൽകുന്ന സന്ദർഭങ്ങളിൽ, പകരം "HvNAME()" ഉപയോഗിക്കേണ്ടതാണ്.
അറേ തിരികെ നൽകിയാൽ അതിന്റെ റഫറൻസ് എണ്ണം വർദ്ധിപ്പിക്കുന്നതിന് കോളർ ഉത്തരവാദിയാണ്
ഘടന നിലനിർത്താൻ ആഗ്രഹിക്കുന്നു. അതിനാൽ, നിങ്ങൾ ഒരു താൽക്കാലിക മൂല്യം സൃഷ്ടിച്ചിട്ടുണ്ടെങ്കിൽ, അത് നിങ്ങൾ ഇല്ലെന്ന് സൂക്ഷിക്കുക
"sv_2mortal()" എന്നതിലേക്ക് പോയിന്റർ, അത് ശരിയായി വിനിയോഗിക്കപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുക. നിങ്ങൾ കാഷെ ചെയ്തിട്ടുണ്ടെങ്കിൽ
നിങ്ങളുടെ റിട്ടേൺ മൂല്യം, റഫറൻസ് എണ്ണം മാറ്റാതെ അതിലേക്ക് ഒരു പോയിന്റർ തിരികെ നൽകുക.
കാഷെ
എംആർഒകൾ കമ്പ്യൂട്ടിംഗ് ചെയ്യുന്നത് ചെലവേറിയതായിരിക്കും. നടപ്പിലാക്കൽ ഒരു കാഷെ നൽകുന്നു, അതിൽ നിങ്ങൾക്ക് കഴിയും
ഒരൊറ്റ "SV *" അല്ലെങ്കിൽ "AV *" പോലെ "SV *" ലേക്ക് കാസ്റ്റ് ചെയ്യാൻ കഴിയുന്ന എന്തും സംഭരിക്കുക. വായിക്കാൻ
നിങ്ങളുടെ സ്വകാര്യ മൂല്യം, മാക്രോ "MRO_GET_PRIVATE_DATA()" ഉപയോഗിക്കുക, അത് "mro_meta" കടന്നു
സ്റ്റാഷിൽ നിന്നുള്ള ഘടനയും നിങ്ങളുടെ "mro_alg" ഘടനയിലേക്കുള്ള ഒരു പോയിന്ററും:
മെറ്റാ = HvMROMETA(സ്റ്റാഷ്);
private_sv = MRO_GET_PRIVATE_DATA(മെറ്റാ, &my_mro_alg);
നിങ്ങളുടെ സ്വകാര്യ മൂല്യം സജ്ജീകരിക്കാൻ, "Perl_mro_set_private_data()" എന്ന് വിളിക്കുക:
Perl_mro_set_private_data(aTHX_ meta, &c3_alg, private_sv);
സ്വകാര്യ ഡാറ്റ കാഷെ, private_sv-ലേക്കുള്ള ഒരു റഫറൻസിന്റെ ഉടമസ്ഥാവകാശം ഏറ്റെടുക്കും, അതേ രീതിയിൽ
"hv_store()" നിങ്ങൾ കൈമാറുന്ന മൂല്യത്തിലേക്കുള്ള ഒരു റഫറൻസിന്റെ ഉടമസ്ഥാവകാശം ഏറ്റെടുക്കുന്നു.
ഉദാഹരണങ്ങൾ
MRO നടപ്പിലാക്കലുകളുടെ ഉദാഹരണങ്ങൾക്ക്, "S_mro_get_linear_isa_c3()", "BOOT:" എന്നിവ കാണുക
വിഭാഗം mro/mro.xs, കൂടാതെ "S_mro_get_linear_isa_dfs()" എന്നിവയിലും mro.c
AUTHORS
C3 MRO-യും സ്വിച്ച് ചെയ്യാവുന്ന MRO-കളും പേൾ കോറിനുള്ളിൽ നടപ്പിലാക്കിയത് എഴുതിയത്
ബ്രാൻഡൻ എൽ ബ്ലാക്ക്. നിക്കോളാസ് ക്ലാർക്ക് പ്ലഗ്ഗബിൾ ഇന്റർഫേസ് സൃഷ്ടിച്ചു, ബ്രാൻഡന്റെ പുനർനിർമ്മാണം
അതുമായി പ്രവർത്തിക്കാൻ നടപ്പിലാക്കൽ, ഈ പ്രമാണം എഴുതി.
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് perlmroapi ഓൺലൈനായി ഉപയോഗിക്കുക