diff --git a/include/mgba/script/macros.h b/include/mgba/script/macros.h index 34b59e0e3..42710f9e8 100644 --- a/include/mgba/script/macros.h +++ b/include/mgba/script/macros.h @@ -233,6 +233,10 @@ CXX_GUARD_START } \ }, +#define mSCRIPT_DEFINE_INTERNAL { \ + .type = mSCRIPT_CLASS_INIT_INTERNAL \ +}, + #define _mSCRIPT_STRUCT_METHOD_POP(TYPE, S, NPARAMS, ...) \ _mCALL(_mCAT(mSCRIPT_POP_, _mSUCC_ ## NPARAMS), &frame->arguments, _mCOMMA_ ## NPARAMS(S(TYPE), __VA_ARGS__)); \ if (mScriptListSize(&frame->arguments)) { \ diff --git a/include/mgba/script/types.h b/include/mgba/script/types.h index 8b7503849..470ed40ce 100644 --- a/include/mgba/script/types.h +++ b/include/mgba/script/types.h @@ -154,6 +154,7 @@ enum mScriptClassInitType { mSCRIPT_CLASS_INIT_DEINIT, mSCRIPT_CLASS_INIT_GET, mSCRIPT_CLASS_INIT_SET, + mSCRIPT_CLASS_INIT_INTERNAL, }; enum { @@ -245,6 +246,7 @@ struct mScriptTypeClass { const struct mScriptClassInitDetails* details; const struct mScriptType* parent; const char* docstring; + bool internal; struct Table instanceMembers; struct Table castToMembers; struct mScriptClassMember* alloc; // TODO diff --git a/src/script/docgen.c b/src/script/docgen.c index ba740e6aa..b088b7c96 100644 --- a/src/script/docgen.c +++ b/src/script/docgen.c @@ -208,6 +208,9 @@ void explainClass(struct mScriptTypeClass* cls, int level) { if (cls->parent) { fprintf(out, "%sparent: %s\n", indent, cls->parent->name); } + if (cls->internal) { + fprintf(out, "%sinternal: true\n", indent); + } if (cls->docstring) { if (strchr(cls->docstring, '\n')) { fprintf(out, "%scomment: |-\n", indent); diff --git a/src/script/socket.c b/src/script/socket.c index 588fa7006..6177a2d6c 100644 --- a/src/script/socket.c +++ b/src/script/socket.c @@ -204,6 +204,7 @@ mSCRIPT_DECLARE_STRUCT_METHOD(mScriptSocket, WSTR, recv, _mScriptSocketRecv, 1, mSCRIPT_DECLARE_STRUCT_METHOD(mScriptSocket, S32, select, _mScriptSocketSelectOne, 1, S64, timeoutMillis); mSCRIPT_DEFINE_STRUCT(mScriptSocket) + mSCRIPT_DEFINE_INTERNAL mSCRIPT_DEFINE_CLASS_DOCSTRING("An internal implementation of a TCP network socket.") mSCRIPT_DEFINE_STRUCT_DEINIT_NAMED(mScriptSocket, close) mSCRIPT_DEFINE_DOCSTRING("Closes the socket. If the socket is already closed, this function does nothing.") diff --git a/src/script/types.c b/src/script/types.c index 8ce4df461..b63fed4a5 100644 --- a/src/script/types.c +++ b/src/script/types.c @@ -1088,6 +1088,9 @@ static void _mScriptClassInit(struct mScriptTypeClass* cls, const struct mScript docstring = NULL; } break; + case mSCRIPT_CLASS_INIT_INTERNAL: + cls->internal = true; + break; } } }