JFIF       %%-))-969KKd       %%-))-969KKd! f%eK_.T  v_/n6q>e}&Cx@t7OuqySN%y%tz@ Un(quo{tS]\~LzǚPk;fϛϹ2y-=_z.NWW7DW@'4`3w3rr;hP8B%ַBe]`7Ҽo1e)弆O|4Wk*}7Su[9=U 9 |_+:@}@˵u@ g<4N<@=/ I(~}qq=y- u|. y'`3S+4$e= k4P]M^_Nou*R-,X0EI}m&LtVȱa|R\@ ʟ+YeIlY`XV^HV/c-eb du ̈́_2+DpV ` ^^->t7JydE]I 8:7#j̀iiVbp~o݃[}zwGF@-(RTJY@ Ty}X 1!2AQaq"3BR`r@PSb #4CTs0DU$EFcd?Lc4\K#E1$@CV8OƂZ5g;.141;%]6e laǃpv8)80D1ŌxLgWYc+z%:( w^PtdԣV Z:qDsh W) ͷ+~FO]"բ?eN 4)WREZ;T+}]:FRtI ѱއ>'s_[\qNhK ' ^qJv9 ]ʜ1FMzwF8ѯBIp-g`?si;|Hr%>jOh29-+-gQmBH?3P9e')>[k^OaxtLiS30ҿ6*o--I$ 1 z2+OЪ+i˺,_n3(~}StUMc \xSmGD0jMB06%') #1c6s/iaIɉgC%Yoi**MHЛ=rh ĭ總 E>Jў2+ct/^$[_kAOʕicR4qm#Lw!Squ/:e%~zMBfa|e7PUC|"/)CD\cy gڰF9(?\jU+>Cwl#>x^'a7C}LYX<@X`W8P hۂx͍q֜?de1qe* NDuTm-ߣ y+pUy*9aĺ:P4n$2&BTϵ@ a>v3uc,(uF0jˊ́a~32f2=ήZe[r!F !Bu)b FŌt%41N/֑41n1|> 1^;1=IĖEpq%"{/~M.QWDdUA6~z>kPh2Oi?Uc[`+l;՚':۾ږtoZjQ7\:Z3}~ &ڮRQH{mDq0TaM5i:5sC0x<]=Mp c!C<6]~vpxeH[AmY'iԖ_~ a(Ȕ@+a< w] wbk1#aD 9. ?p$ Qؒi-8S㨸f45t:ʙѾ.{mMshU1k\z^*#It@ v:%#iSZ.{.Vemm,Z3*;HtU8E.v'e ޴ 4WwLDe)jY*R'?wM֣ b+IfO('Y J$o޼ l.蕁~ Y Em>Y^m"r^4w}2PI7R1gV\wtVT׿w'*N{ZGN8qzrM/LO~ O~|ڞ櫮o{\dV斀AJmn E#HQg$!{XM'{u* 4O)>F.";l2z3IJ2?Fh7)rjrv@ AJlУ 0`StpGD&nƒpxΡ}P늿D@cEH҆2[9a}U/biEzu)xYR>߹q (yA~ُp \U\L\6~" U'>GJOP,ko:JGI*٢C8f8굟m#GV̐Cj]}N_]aJulE.+I&y5 6*TGHZRů}efjv"\3/3_hq՝g !ir,ܐv%~*lXccyo) 拏Qp_tT3!,Dur!CH7;9GQQmE:ÑCaƅ;zeij;d+% z#e%gdI9E5BB&۟S"=C(>{֠ ɫNUळiu>;P}حW]ouBmJS0ktRtDm+$ԫU_dq)$ ʃnLGSፑf'vlzP/_]QԂ]ȗ|W\;wTSf!m,ri{w了enP(`*.1i2.}e@;HA&_N᷸1|:Gjڒj~i/֬]1(N +^ bQq:›m*o5Y(.JPV[3ޭj֭j+i(uָ]kV)A/%X Fa?8'o>ꝣKks\_k)S%zDTRw#h#e#1Euk&,Yw+Ap"PIZ*j*Ug">m>|ڇ(#FXzCi9%J'H3Xwi-9s0S`R^֮ YLJz+q^i}i1jLK+ [ NzDSq[+Q'ݖl=s<[iIWz=%}[jɁ֠$$N7IUm83SVŭw)#0$g C26^ʓW<=B>{R)&繻8j3cbbce7TE1r\'}FūLO+KʢXm/=H 6FaRHI^Lȹ83g9CM93쑑nE)=q4I$s'ݠajm]"O>L4Vb;(eHm$֫ӆyYtYYr(<Ɠ2Fm "f֒;Tξu8jZR$b!E*9 yy+V:Dm Œ9@-f*l2#ٿPt#T҂ӵ&;AȃWlf xϜZكfj%bs ,/uN{,Gz*kkP M6f/0[I;S)ml-؉)~q9v`ǣ4gZJ}h&dﺥ#{}uDa7j(I'2OҒMF7 .Ey<$5;2ժTI %)TwG54Ŭ Kb6rG;uq\[8DJ'i$?Pq-ݗs\JGkYO2%}b\9;Tk⾜3%qSd( [O4i'jQՃ &F Ҧ T2!G{N j~:Cz J3|xd(6TZ a b5gfK\I)WYARA(RVE$G8at̖qWq{B:Q^g3QzcAZrH|GMcjb{+)r=>:de:¹[QOe@>ISP1nIq!:3G).!ŶB꠲#0Eb2"Lt4ƺKCGn9P=PeoX8@fղ Gi9k ^aHAV<)GG*k_aUΜWsX4ʷ\%m,W*F}<1E/&NJIʳ:PmeRuń%A<ᶧ2s^s-9$PHw]ZB#[>9Fm*>Ut.HugK9uaAF.%fW&J~$k^S:iގT9_5`_bR`ܒ(8Fa?jMc4Pŭ!VB7 W+߀ i>b٠,]?<{aXgpJ]璹نrV53-)p:,R%>#W۲4K{%L%]ͅP,7"[NI:ܴ- AJr)#"=k#Eoa PP$C>7m_t ڠcJZymA [qwDw|*3(FMۭ\KP-'1WK, suu;~ZaTnyi$A =46i֑AUU"l:gA ]"8&ד<{z&O!WF^XGhViWM\q(*p#Fk?p\Ym*J3B3'%jn+ IG{VcVL-f7 #/u}5bD7XMi!{#b$U]q\RGa ;OZXv^WZ\ܭ( lhSˎ6 V'h GY{49$r8AIȃ#V$HL/~l.]:>29:EkSO%N$Ϋkͯ⫝̸yˮ0mE+IVwuIu>Xj%6@[k)aqJz|؏!Υ֔RP.l@tⵅkZg'5nrqDU^kJBEBfrG)+J$"dB3#ٔk4yQCz9S\8'#/5cˑYO(4dhIM<6BߢJNDZFEgD6vnl|^kr;^hϨ1!ʌ:įZBᝋx|T+'!c t"YH=)"g6-t+.Ur$+ZzRG s*f9_QY4El>DI[}B=>v)iTg[?oWwۿlWG69k{Qx]-*$<-=W¹nUĂ}G4tZ]^Q8m!])SyR)vOR(_Aiϵei#{$hਧ.SLN}߬e}EgZwgAWPBcZÖ']P ;2/hy}1M9Fj'.ӖZy-,r ND|jlC)jqSʚV)]p3;❀[:tBH##HqhZr\j"tG-тtHtB24PJ:w;xI0$ wEQ#)FejK rSw|">Tҙ#2Xc8g,(L`S2 tM>5@<)A71iXSlHڛ9(y4KUu:xARdf5\Zq|m{ӭjI8%. ڟ5pxvqd(9P$#"8CQ NKFۘ;RTPE8^`WãRxL髍{}ġͭ緗Ҍ/<xcKOVy0\{Uk85A07)_uCuopN>~3e e޽ytYnDm3)ܠ&,![y3CcؽK+raޱX~aRbm<wE #+ԺQXfGq+h[71_A* [V٣sCEXb\fNiXNݔz NҲ wrG"+ kлYI`ϼUՄ o9Vc7^[Y"E]W>(GSkt]Gcx~hM`?WV8q w< `bJb̑ NNG[xr̈>Kþ7<7H56pIEKgoE`?4e)ޛ)7M(-4ot}LDG6"qycg~x{>8.,7W_ɦ/nG|MFU^VYpa",BBBH;GC#2JerK*ZIqbIphت݉)c繥ՅVtLnEcf62:;\Rw@{ S5Q $ϑTz;EzFO5Pn.NA<~ҌoXR|Ig$^]A|^_mmҷj8mbMbՅHmvI_MqƊFCq&Б%z>ΧKEAg4y;/0f[|@$SG,h5@0RȁцEH-qm%Kb%Dx:0XNHWIᰵ$G)|^ χ,m,#%6צIpO FDFUH5JKlI>Vxn;ĶY;dZkarnƭaeG< W#9+؄l?jEmDo<~W++0#π*<.ۘZ+H$VfF|J&#N ?*<<⢌՞\.#I: !#Sh-4'F |-[WQFH7 )d`JFCbFɞ9N9vՅW4xPOBHc2a"*90Iv5IGI<hI I*'Ƿ.-m1ȼѹKF2ٷ;*A*T6FDSKsipI tGx f$9 Ǐzf{kd@r:/?(i^b 3)_g;&IEWu̓*2t7qL Ti5, wdXr&Gwmŏy)IJD+iE:v6[=9ʰ;q` =}#q:<>~mFU631TqQ (t2/c~ iK'y˴TlxsF_$ {a8[yfc>Y͘k8&9x\Նڻ{I&7+ fv F=,ꌼcCA[c:麑î6B겦&|mFm㪈Rfw .xJês1?_UnuQGǪ?6wR5b-:q{wK  !1A2Qq"@PRa #03BCSbr4$T`c?K)o<rzѸUL<6K4F̘E¹?Q7 QZtʄSV9iE$m6vU>8_F!zaS# j_4Jzm_bȚ;/:Iq7A9Qڜp͖!QTaOSTQzqS5U{LHOWc;TWUA}YWqUNKURѾĴ:gfYnQ*dv?F6i1G6[H?W*!Wl 8OlE?U$jv<&Rا@TG"X޺51?Ikymc{TLʧA4Y+#a=[#j Ge;@֍Xًv_(uVgJjbէz;5$۱ʡ)zv|eS u̎b{ean<6\;CQ<@΍b{ZM%[*n,z{EZR++e`w޹bh9cWF2ǴU:RMWd架;UJcDtK_G@y5GāYzF 8cWb㖈qw4ecqMis,)',o=ߘq5e-0j.}xNGq?d;D5T Dbng2!zN%i`IJ4]JN Kv ./iLZFOii h=yn%wdԲ:d뉆2 ]|1jnvBV@XkxN_;J Kӯ$ΟVlXm x[0'id =qcamjdӚȹaE4rY26!۩PS#U v{-51~q<'x;Z *'Fg"pojg9l:5W媴txyyUU%`_58Mngv[+jz>XwbIt$]ɞ*{ &b^F=C4ЏZ+ F\pR]9c1b * @@K,\ϔ =0<9N{U^ozﺊ<˒D4p2 ,Ƿ˗:#]j*&*jFTܪTdF@x8׭CX2U&y({9b駴to90\DUaaƏ@J:tš#x]d0pUiJ!Џ_1Ke9s$\t%ZiW-]ZVp[!c8OڋGPmM 'ÈX$I"s)Ȍ[ڦT ׫wJsn$QӨ]dJ[;~ԕ$lŧt}7RU@&778ܷK "$4C^iQ􄆺h(Cg#P QҤ1 7~V=6~8:#7/N5qz=8ȂiEʀJpnx8.9@~1m3sE? :zqGY}:O#yw23$1%m}8`E毑s_PznQ[LF%D;S)י -YW < quTݪҒl>I£$qG,Ȑf=g + `~}m5dO+ipyOfv]ishu*8tx"4n7putfV]D`i=ZHWIwȩ<[.P\xӊF)jbKfzASi{*u#8 9p뚰 H@ff>,`2 L6b8 mw{Hn3|b3Fg1e6C<eH /_~B#L *t0xbS% 웞: Aɔ89hjd[OY墪9sŎzNZ:&Yiu%MGw=Y ]QӍ -u@'p[wK%suԘse^wbiɫ:f䲯4ֶCP JFE32 X;yVeAbFyyX%H ,vgb~Ksʊ&V φ 5f̅2K7ZVԎBLǑ=zv-yq,nȇ'(:8$(rH*!S RI.Lj"9\W>])|›\o?-tEs#678PI:e5n$i0ScudA F(ET lq{讬3 28xۆ1IPԲ v0r$0{[J*cyA 1OQ-3f5;׆!`;mV[g{*d$221VR8jk.aH)7c=BO>~ T77XӇʧ _NاVV:Gye)NKk Ǵ`ՏS=Wy\cu`}@8C2su XqC Պ̜xEU ڭ{$KόI@F؛NLOA$F[X2rĔG L\wE2J3S8IJ2e`A7),b +noĐ<{XA"Lj%W̮RI7=e0O {F 3t6ǽN7aNHmo!_5G/GGz`ǻwl${wzd2X,!a/@X{wh]S MARIJUANA
— DIOS — NO — CREA — NADA — EN — VANO —
Linux vps-ed8565de 5.10.0-32-cloud-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64
  SOFT : Apache/2.4.65 (Debian) PHP : 7.4.33
/usr/include/
51.178.36.14

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
X11 dir drwxr-xr-x 2021-02-15 09:58 R D
iproute2 dir drwxr-xr-x 2021-12-20 04:34 R D
clif.h 4.439 KB -rw-r--r-- 2022-12-29 07:27 R E G D
emacs-module.h 17.185 KB -rw-r--r-- 2025-02-27 02:24 R E G D
gawkapi.h 39.692 KB -rw-r--r-- 2021-02-10 08:42 R E G D
sudo_plugin.h 11.639 KB -rw-r--r-- 2025-06-26 17:03 R E G D
REQUEST EXIT
©TheAlmightyZeus
/* emacs-module.h - GNU Emacs module API. Copyright (C) 2015-2020 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ /* This file defines the Emacs module API. Please see the chapter `Dynamic Modules' in the GNU Emacs Lisp Reference Manual for information how to write modules and use this header file. */ #ifndef EMACS_MODULE_H #define EMACS_MODULE_H #include #include #include #ifndef __cplusplus #include #endif #define EMACS_MAJOR_VERSION 27 #if defined __cplusplus && __cplusplus >= 201103L # define EMACS_NOEXCEPT noexcept #else # define EMACS_NOEXCEPT #endif #ifdef __has_attribute #if __has_attribute(__nonnull__) # define EMACS_ATTRIBUTE_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__))) #endif #endif #ifndef EMACS_ATTRIBUTE_NONNULL # define EMACS_ATTRIBUTE_NONNULL(...) #endif #ifdef __cplusplus extern "C" { #endif /* Current environment. */ typedef struct emacs_env_27 emacs_env; /* Opaque pointer representing an Emacs Lisp value. BEWARE: Do not assume NULL is a valid value! */ typedef struct emacs_value_tag *emacs_value; enum { emacs_variadic_function = -2 }; /* Struct passed to a module init function (emacs_module_init). */ struct emacs_runtime { /* Structure size (for version checking). */ ptrdiff_t size; /* Private data; users should not touch this. */ struct emacs_runtime_private *private_members; /* Return an environment pointer. */ emacs_env *(*get_environment) (struct emacs_runtime *ert) EMACS_ATTRIBUTE_NONNULL(1); }; /* Possible Emacs function call outcomes. */ enum emacs_funcall_exit { /* Function has returned normally. */ emacs_funcall_exit_return = 0, /* Function has signaled an error using `signal'. */ emacs_funcall_exit_signal = 1, /* Function has exit using `throw'. */ emacs_funcall_exit_throw = 2 }; /* Possible return values for emacs_env.process_input. */ enum emacs_process_input_result { /* Module code may continue */ emacs_process_input_continue = 0, /* Module code should return control to Emacs as soon as possible. */ emacs_process_input_quit = 1 }; /* Define emacs_limb_t so that it is likely to match GMP's mp_limb_t. This micro-optimization can help modules that use mpz_export and mpz_import, which operate more efficiently on mp_limb_t. It's OK (if perhaps a bit slower) if the two types do not match, and modules shouldn't rely on the two types matching. */ typedef size_t emacs_limb_t; #define EMACS_LIMB_MAX SIZE_MAX struct emacs_env_25 { /* Structure size (for version checking). */ ptrdiff_t size; /* Private data; users should not touch this. */ struct emacs_env_private *private_members; /* Memory management. */ emacs_value (*make_global_ref) (emacs_env *env, emacs_value any_reference) EMACS_ATTRIBUTE_NONNULL(1); void (*free_global_ref) (emacs_env *env, emacs_value global_reference) EMACS_ATTRIBUTE_NONNULL(1); /* Non-local exit handling. */ enum emacs_funcall_exit (*non_local_exit_check) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_clear) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); enum emacs_funcall_exit (*non_local_exit_get) (emacs_env *env, emacs_value *non_local_exit_symbol_out, emacs_value *non_local_exit_data_out) EMACS_ATTRIBUTE_NONNULL(1, 2, 3); void (*non_local_exit_signal) (emacs_env *env, emacs_value non_local_exit_symbol, emacs_value non_local_exit_data) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_throw) (emacs_env *env, emacs_value tag, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); /* Function registration. */ emacs_value (*make_function) (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity, emacs_value (*function) (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1), const char *documentation, void *data) EMACS_ATTRIBUTE_NONNULL(1, 4); emacs_value (*funcall) (emacs_env *env, emacs_value function, ptrdiff_t nargs, emacs_value args[]) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*intern) (emacs_env *env, const char *symbol_name) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Type conversion. */ emacs_value (*type_of) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*is_not_nil) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*eq) (emacs_env *env, emacs_value a, emacs_value b) EMACS_ATTRIBUTE_NONNULL(1); intmax_t (*extract_integer) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_integer) (emacs_env *env, intmax_t value) EMACS_ATTRIBUTE_NONNULL(1); double (*extract_float) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_float) (emacs_env *env, double value) EMACS_ATTRIBUTE_NONNULL(1); /* Copy the content of the Lisp string VALUE to BUFFER as an utf8 NUL-terminated string. SIZE must point to the total size of the buffer. If BUFFER is NULL or if SIZE is not big enough, write the required buffer size to SIZE and return true. Note that SIZE must include the last NUL byte (e.g. "abc" needs a buffer of size 4). Return true if the string was successfully copied. */ bool (*copy_string_contents) (emacs_env *env, emacs_value value, char *buffer, ptrdiff_t *size_inout) EMACS_ATTRIBUTE_NONNULL(1, 4); /* Create a Lisp string from a utf8 encoded string. */ emacs_value (*make_string) (emacs_env *env, const char *contents, ptrdiff_t length) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Embedded pointer type. */ emacs_value (*make_user_ptr) (emacs_env *env, void (*fin) (void *) EMACS_NOEXCEPT, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void *(*get_user_ptr) (emacs_env *env, emacs_value uptr) EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr)) (void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_finalizer) (emacs_env *env, emacs_value uptr, void (*fin) (void *) EMACS_NOEXCEPT) EMACS_ATTRIBUTE_NONNULL(1); /* Vector functions. */ emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i) EMACS_ATTRIBUTE_NONNULL(1); void (*vec_set) (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val) EMACS_ATTRIBUTE_NONNULL(1); ptrdiff_t (*vec_size) (emacs_env *env, emacs_value vec) EMACS_ATTRIBUTE_NONNULL(1); }; struct emacs_env_26 { /* Structure size (for version checking). */ ptrdiff_t size; /* Private data; users should not touch this. */ struct emacs_env_private *private_members; /* Memory management. */ emacs_value (*make_global_ref) (emacs_env *env, emacs_value any_reference) EMACS_ATTRIBUTE_NONNULL(1); void (*free_global_ref) (emacs_env *env, emacs_value global_reference) EMACS_ATTRIBUTE_NONNULL(1); /* Non-local exit handling. */ enum emacs_funcall_exit (*non_local_exit_check) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_clear) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); enum emacs_funcall_exit (*non_local_exit_get) (emacs_env *env, emacs_value *non_local_exit_symbol_out, emacs_value *non_local_exit_data_out) EMACS_ATTRIBUTE_NONNULL(1, 2, 3); void (*non_local_exit_signal) (emacs_env *env, emacs_value non_local_exit_symbol, emacs_value non_local_exit_data) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_throw) (emacs_env *env, emacs_value tag, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); /* Function registration. */ emacs_value (*make_function) (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity, emacs_value (*function) (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1), const char *documentation, void *data) EMACS_ATTRIBUTE_NONNULL(1, 4); emacs_value (*funcall) (emacs_env *env, emacs_value function, ptrdiff_t nargs, emacs_value args[]) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*intern) (emacs_env *env, const char *symbol_name) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Type conversion. */ emacs_value (*type_of) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*is_not_nil) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*eq) (emacs_env *env, emacs_value a, emacs_value b) EMACS_ATTRIBUTE_NONNULL(1); intmax_t (*extract_integer) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_integer) (emacs_env *env, intmax_t value) EMACS_ATTRIBUTE_NONNULL(1); double (*extract_float) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_float) (emacs_env *env, double value) EMACS_ATTRIBUTE_NONNULL(1); /* Copy the content of the Lisp string VALUE to BUFFER as an utf8 NUL-terminated string. SIZE must point to the total size of the buffer. If BUFFER is NULL or if SIZE is not big enough, write the required buffer size to SIZE and return true. Note that SIZE must include the last NUL byte (e.g. "abc" needs a buffer of size 4). Return true if the string was successfully copied. */ bool (*copy_string_contents) (emacs_env *env, emacs_value value, char *buffer, ptrdiff_t *size_inout) EMACS_ATTRIBUTE_NONNULL(1, 4); /* Create a Lisp string from a utf8 encoded string. */ emacs_value (*make_string) (emacs_env *env, const char *contents, ptrdiff_t length) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Embedded pointer type. */ emacs_value (*make_user_ptr) (emacs_env *env, void (*fin) (void *) EMACS_NOEXCEPT, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void *(*get_user_ptr) (emacs_env *env, emacs_value uptr) EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr)) (void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_finalizer) (emacs_env *env, emacs_value uptr, void (*fin) (void *) EMACS_NOEXCEPT) EMACS_ATTRIBUTE_NONNULL(1); /* Vector functions. */ emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i) EMACS_ATTRIBUTE_NONNULL(1); void (*vec_set) (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val) EMACS_ATTRIBUTE_NONNULL(1); ptrdiff_t (*vec_size) (emacs_env *env, emacs_value vec) EMACS_ATTRIBUTE_NONNULL(1); /* Returns whether a quit is pending. */ bool (*should_quit) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); }; struct emacs_env_27 { /* Structure size (for version checking). */ ptrdiff_t size; /* Private data; users should not touch this. */ struct emacs_env_private *private_members; /* Memory management. */ emacs_value (*make_global_ref) (emacs_env *env, emacs_value any_reference) EMACS_ATTRIBUTE_NONNULL(1); void (*free_global_ref) (emacs_env *env, emacs_value global_reference) EMACS_ATTRIBUTE_NONNULL(1); /* Non-local exit handling. */ enum emacs_funcall_exit (*non_local_exit_check) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_clear) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); enum emacs_funcall_exit (*non_local_exit_get) (emacs_env *env, emacs_value *non_local_exit_symbol_out, emacs_value *non_local_exit_data_out) EMACS_ATTRIBUTE_NONNULL(1, 2, 3); void (*non_local_exit_signal) (emacs_env *env, emacs_value non_local_exit_symbol, emacs_value non_local_exit_data) EMACS_ATTRIBUTE_NONNULL(1); void (*non_local_exit_throw) (emacs_env *env, emacs_value tag, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); /* Function registration. */ emacs_value (*make_function) (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity, emacs_value (*function) (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1), const char *documentation, void *data) EMACS_ATTRIBUTE_NONNULL(1, 4); emacs_value (*funcall) (emacs_env *env, emacs_value function, ptrdiff_t nargs, emacs_value args[]) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*intern) (emacs_env *env, const char *symbol_name) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Type conversion. */ emacs_value (*type_of) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*is_not_nil) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); bool (*eq) (emacs_env *env, emacs_value a, emacs_value b) EMACS_ATTRIBUTE_NONNULL(1); intmax_t (*extract_integer) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_integer) (emacs_env *env, intmax_t value) EMACS_ATTRIBUTE_NONNULL(1); double (*extract_float) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL(1); emacs_value (*make_float) (emacs_env *env, double value) EMACS_ATTRIBUTE_NONNULL(1); /* Copy the content of the Lisp string VALUE to BUFFER as an utf8 NUL-terminated string. SIZE must point to the total size of the buffer. If BUFFER is NULL or if SIZE is not big enough, write the required buffer size to SIZE and return true. Note that SIZE must include the last NUL byte (e.g. "abc" needs a buffer of size 4). Return true if the string was successfully copied. */ bool (*copy_string_contents) (emacs_env *env, emacs_value value, char *buffer, ptrdiff_t *size_inout) EMACS_ATTRIBUTE_NONNULL(1, 4); /* Create a Lisp string from a utf8 encoded string. */ emacs_value (*make_string) (emacs_env *env, const char *contents, ptrdiff_t length) EMACS_ATTRIBUTE_NONNULL(1, 2); /* Embedded pointer type. */ emacs_value (*make_user_ptr) (emacs_env *env, void (*fin) (void *) EMACS_NOEXCEPT, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void *(*get_user_ptr) (emacs_env *env, emacs_value uptr) EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr) EMACS_ATTRIBUTE_NONNULL(1); void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr)) (void *) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1); void (*set_user_finalizer) (emacs_env *env, emacs_value uptr, void (*fin) (void *) EMACS_NOEXCEPT) EMACS_ATTRIBUTE_NONNULL(1); /* Vector functions. */ emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i) EMACS_ATTRIBUTE_NONNULL(1); void (*vec_set) (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val) EMACS_ATTRIBUTE_NONNULL(1); ptrdiff_t (*vec_size) (emacs_env *env, emacs_value vec) EMACS_ATTRIBUTE_NONNULL(1); /* Returns whether a quit is pending. */ bool (*should_quit) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL(1); /* Processes pending input events and returns whether the module function should quit. */ enum emacs_process_input_result (*process_input) (emacs_env *env) EMACS_ATTRIBUTE_NONNULL (1); struct timespec (*extract_time) (emacs_env *env, emacs_value value) EMACS_ATTRIBUTE_NONNULL (1); emacs_value (*make_time) (emacs_env *env, struct timespec time) EMACS_ATTRIBUTE_NONNULL (1); bool (*extract_big_integer) (emacs_env *env, emacs_value arg, int *sign, ptrdiff_t *count, emacs_limb_t *magnitude) EMACS_ATTRIBUTE_NONNULL (1); emacs_value (*make_big_integer) (emacs_env *env, int sign, ptrdiff_t count, const emacs_limb_t *magnitude) EMACS_ATTRIBUTE_NONNULL (1); }; /* Every module should define a function as follows. */ extern int emacs_module_init (struct emacs_runtime *ert) EMACS_NOEXCEPT EMACS_ATTRIBUTE_NONNULL(1); #ifdef __cplusplus } #endif #endif /* EMACS_MODULE_H */