#include "../WindowsDefines.h"
#include <stdlib.h>
#include <stdio.h>
#include <float.h>
#include <math.h>
#include "ScripterExport.h"
#include "kernel/exceptions.h"
#include "kernel/interupts.h"
#include "../strbasic.h"
#include "../ref.h"
#include "../DefaultActions.h"
#include "../dllutilities.h"
#include "../iFnPub.h"
#include "../IParamm2.h"
#include "kernel/value.h"
#include "util/sceneio.h"
#include "foundation/arrays.h"
#include "foundation/hashtable.h"
#include "foundation/name.h"
#include "foundation/streams.h"
#include "foundation/strings.h"
#include "foundation/functions.h"
#include "compiler/thunks.h"
#include "kernel/MAXScript_TLS.h"
#include "macros/value_locals.h"
#include "kernel/MaxscriptTypedefs.h"
Classes | |
struct | message_box_data |
class | mxs_notify_ref_data |
class | ScopedErrorTracebackDisable |
Class that uses the RAII idiom to push/pop the error traceback disable state. More... | |
class | MAXScriptPrefs |
class | ActiveXLicensor |
class | TempQuietMode |
class | TempBitmapManagerSilentMode |
struct | mxs_value_id_pair |
Namespaces | |
MAXScript | |
Macros | |
#define | WIN32_LEAN_AND_MEAN |
#define | NOT_SUPPORTED_BY_PRODUCT(fn) throw RuntimeError (_M("Feature not available: "), _M(#fn)); |
#define | END NULL |
#define | MAXSCRIPT_UTILITY_CLASS_ID Class_ID(0x4d64858, 0x16d1751d) |
#define | MAX_SCRIPT_DIR _M("scripts") |
#define | SCRIPT_AUTOLOAD_DIR _M("Startup\\") |
#define | no_mb_chars (MB_CUR_MAX == 1) |
#define | bytelen(s) strlen(s) |
#define | MXS_ADD_ROLLOUT_PAGE (WM_USER + 0x100) |
#define | MXS_DELETE_ROLLOUT_PAGE (WM_USER + 0x101) |
#define | MXS_REDRAW_VIEWS (WM_USER + 0x102) |
#define | MXS_EDIT_SCRIPT (WM_USER + 0x103) |
#define | MXS_NEW_SCRIPT (WM_USER + 0x104) |
#define | MXS_DISPLAY_BITMAP (WM_USER + 0x105) |
#define | MXS_ERROR_MESSAGE_BOX (WM_USER + 0x106) |
#define | MXS_PRINT_STRING (WM_USER + 0x107) |
#define | MXS_LISTENER_EVAL (WM_USER + 0x108) |
#define | MXS_MESSAGE_BOX (WM_USER + 0x109) |
#define | MXS_INITIALIZE_MAXSCRIPT (WM_USER + 0x10A) |
#define | MXS_KEYBOARD_INPUT (WM_USER + 0x10B) |
#define | MXS_SHOW_SOURCE (WM_USER + 0x10C) |
#define | MXS_TAKE_FOCUS (WM_USER + 0x10D) |
#define | MXS_STOP_CREATING (WM_USER + 0x10E) |
#define | MXS_CLOSE_DOWN (WM_USER + 0x10F) |
#define | MXS_STOP_EDITING (WM_USER + 0x110) |
#define | MXS_LOAD_STARTUP_SCRIPTS (WM_USER + 0x111) |
#define | MXS_EXECUTE_MACRO (WM_USER + 0x112) |
#define | MXS_RESTART_EDITING (WM_USER + 0x113) |
#define | MXS_NOTIFY_REF_DEPENDENTS (WM_USER + 0x114) |
#define | MSPLUGINCLASS_STOPEDITING (WM_USER + 0x115) |
#define | MSPLUGINCLASS_RESTARTEDITING (WM_USER + 0x116) |
#define | key_arg(key) _get_key_arg(arg_list, count, n_##key) |
#define | key_arg_or_default(key, def) _get_key_arg_or_default(arg_list, count, n_##key##, def) |
#define | int_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_int()) |
#define | intptr_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_intptr()) |
#define | float_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_float()) |
#define | bool_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_bool()) |
#define | interval_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_interval()) |
#define | timevalue_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_timevalue()) |
#define | node_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_node()) |
#define | string_key_arg(key, var, def) ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_string()) |
#define | check_arg_count(fn, w, g) if ((w) != (g)) throw ArgCountError (_M(#fn), w, g) |
#define | check_gen_arg_count(fn, w, g) if ((w) != (g + 1)) throw ArgCountError (_M(#fn), w, g + 1) |
#define | check_arg_count_with_keys(fn, w, g) if (!(g == w || (g > w && arg_list[w] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys()) |
#define | check_gen_arg_count_with_keys(fn, w, g) if (!(g == w || (g > w && arg_list[w-1] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys() + 1) |
#define | count_with_keys() _count_with_keys(arg_list, count) |
#define | bool_result(val) ((val) ? &true_value : &false_value) |
#define | MXS_range_check(_val, _lowerLimit, _upperLimit, _desc) |
#define | mputs thread_local(current_stdout)->puts /* current MAXScript stdout output... */ |
#define | mputch thread_local(current_stdout)->putch /* current MAXScript stdout output... */ |
#define | mprintf thread_local(current_stdout)->printf |
#define | mflush thread_local(current_stdout)->flush |
#define | INTERRUPT_EVAL 0x0001 |
#define | type_check(val, cl, where) if (val->tag != class_tag(cl)) throw TypeError (where, val, &cl##_class); |
#define | set_english_numerics() |
#define | reset_numerics() |
#define | SOURCE_STREAM_ENCRYPTED_FLAG 1 /* flag set in thread local source_flags when source is encrypted */ |
Typedefs | |
typedef void(* | utility_installer) (Rollout *ro) |
typedef Value *(* | autocad_point_reader) (MCHAR *str) |
#define WIN32_LEAN_AND_MEAN |
#define NOT_SUPPORTED_BY_PRODUCT | ( | fn | ) | throw RuntimeError (_M("Feature not available: "), _M(#fn)); |
#define END NULL |
#define MAXSCRIPT_UTILITY_CLASS_ID Class_ID(0x4d64858, 0x16d1751d) |
#define MAX_SCRIPT_DIR _M("scripts") |
#define SCRIPT_AUTOLOAD_DIR _M("Startup\\") |
#define no_mb_chars (MB_CUR_MAX == 1) |
#define bytelen | ( | s | ) | strlen(s) |
#define MXS_ADD_ROLLOUT_PAGE (WM_USER + 0x100) |
#define MXS_DELETE_ROLLOUT_PAGE (WM_USER + 0x101) |
#define MXS_REDRAW_VIEWS (WM_USER + 0x102) |
#define MXS_EDIT_SCRIPT (WM_USER + 0x103) |
#define MXS_NEW_SCRIPT (WM_USER + 0x104) |
#define MXS_DISPLAY_BITMAP (WM_USER + 0x105) |
#define MXS_ERROR_MESSAGE_BOX (WM_USER + 0x106) |
#define MXS_PRINT_STRING (WM_USER + 0x107) |
#define MXS_LISTENER_EVAL (WM_USER + 0x108) |
#define MXS_MESSAGE_BOX (WM_USER + 0x109) |
#define MXS_INITIALIZE_MAXSCRIPT (WM_USER + 0x10A) |
#define MXS_KEYBOARD_INPUT (WM_USER + 0x10B) |
#define MXS_SHOW_SOURCE (WM_USER + 0x10C) |
#define MXS_TAKE_FOCUS (WM_USER + 0x10D) |
#define MXS_STOP_CREATING (WM_USER + 0x10E) |
#define MXS_CLOSE_DOWN (WM_USER + 0x10F) |
#define MXS_STOP_EDITING (WM_USER + 0x110) |
#define MXS_LOAD_STARTUP_SCRIPTS (WM_USER + 0x111) |
#define MXS_EXECUTE_MACRO (WM_USER + 0x112) |
#define MXS_RESTART_EDITING (WM_USER + 0x113) |
#define MXS_NOTIFY_REF_DEPENDENTS (WM_USER + 0x114) |
#define MSPLUGINCLASS_STOPEDITING (WM_USER + 0x115) |
#define MSPLUGINCLASS_RESTARTEDITING (WM_USER + 0x116) |
#define key_arg | ( | key | ) | _get_key_arg(arg_list, count, n_##key) |
#define key_arg_or_default | ( | key, | |
def | |||
) | _get_key_arg_or_default(arg_list, count, n_##key##, def) |
#define int_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_int()) |
#define intptr_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_intptr()) |
#define float_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_float()) |
#define bool_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_bool()) |
#define interval_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_interval()) |
#define timevalue_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_timevalue()) |
#define node_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_node()) |
#define string_key_arg | ( | key, | |
var, | |||
def | |||
) | ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_string()) |
#define check_arg_count | ( | fn, | |
w, | |||
g | |||
) | if ((w) != (g)) throw ArgCountError (_M(#fn), w, g) |
#define check_gen_arg_count | ( | fn, | |
w, | |||
g | |||
) | if ((w) != (g + 1)) throw ArgCountError (_M(#fn), w, g + 1) |
#define check_arg_count_with_keys | ( | fn, | |
w, | |||
g | |||
) | if (!(g == w || (g > w && arg_list[w] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys()) |
#define check_gen_arg_count_with_keys | ( | fn, | |
w, | |||
g | |||
) | if (!(g == w || (g > w && arg_list[w-1] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys() + 1) |
#define count_with_keys | ( | ) | _count_with_keys(arg_list, count) |
#define bool_result | ( | val | ) | ((val) ? &true_value : &false_value) |
#define MXS_range_check | ( | _val, | |
_lowerLimit, | |||
_upperLimit, | |||
_desc | |||
) |
#define mputs thread_local(current_stdout)->puts /* current MAXScript stdout output... */ |
#define mputch thread_local(current_stdout)->putch /* current MAXScript stdout output... */ |
#define mprintf thread_local(current_stdout)->printf |
#define mflush thread_local(current_stdout)->flush |
#define INTERRUPT_EVAL 0x0001 |
#define type_check | ( | val, | |
cl, | |||
where | |||
) | if (val->tag != class_tag(cl)) throw TypeError (where, val, &cl##_class); |
#define set_english_numerics | ( | ) |
#define reset_numerics | ( | ) |
#define SOURCE_STREAM_ENCRYPTED_FLAG 1 /* flag set in thread local source_flags when source is encrypted */ |
|
inline |
|
inline |
|
inline |
void out_of_memory | ( | ) |
void bad_delete | ( | ) |
ScripterExport Value* _get_key_arg | ( | Value ** | arg_list, |
int | count, | ||
Value * | key_name | ||
) |
ScripterExport Value* _get_key_arg_or_default | ( | Value ** | arg_list, |
int | count, | ||
Value * | key_name, | ||
Value * | def | ||
) |
ScripterExport MCHAR* save_string | ( | const MCHAR * | str | ) |
ScripterExport Object* Get_Object_Or_XRef_BaseObject | ( | Object * | obj | ) |
ScripterExport int namify | ( | MCHAR * | n, |
int | type, | ||
bool | bStripTrailing = true |
||
) |
ScripterExport void install_utility_page | ( | Rollout * | rollout | ) |
ScripterExport int mxs_rand | ( | ) |
ScripterExport INT64 mxs_rand64 | ( | ) |
ScripterExport void mxs_seed | ( | int | ) |
ScripterExport int random_range | ( | int | from, |
int | to | ||
) |
ScripterExport INT64 random_range | ( | INT64 | from, |
INT64 | to | ||
) |
ScripterExport float random_range | ( | float | from, |
float | to | ||
) |
ScripterExport double random_range | ( | double | from, |
double | to | ||
) |
ScripterExport void dlx_detaching | ( | HINSTANCE | hinstance | ) |
ScripterExport void define_system_global | ( | const MCHAR * | name, |
Value *(*)() | getter, | ||
Value *(*)(Value *) | setter | ||
) |
ScripterExport void define_system_global_replace | ( | const MCHAR * | name, |
Value *(*)() | getter, | ||
Value *(*)(Value *) | setter | ||
) |
ScripterExport void define_struct_global | ( | const MCHAR * | name, |
const MCHAR * | struct_name, | ||
Value *(*)() | getter, | ||
Value *(*)(Value *) | setter | ||
) |
ScripterExport void printable_name | ( | MSTR & | name | ) |
ScripterExport void show_source_pos | ( | ) |
ScripterExport void show_listener | ( | ) |
ScripterExport void init_MAXScript | ( | ) |
ScripterExport void set_utility_installer | ( | utility_installer | ui | ) |
ScripterExport void reset_utility_installer | ( | ) |
ScripterExport void error_message_box | ( | MAXScriptException & | e, |
const MCHAR * | caption | ||
) |
ScripterExport void set_autocad_point_reader | ( | autocad_point_reader | apr | ) |
ScripterExport BOOL get_error_trace_back_disabled | ( | ) |
ScripterExport void set_error_trace_back_disabled | ( | BOOL | isTraceBackDisabled | ) |
ScripterExport BOOL ExecuteMAXScriptScript | ( | const MCHAR * | s, |
BOOL | quietErrors = FALSE , |
||
FPValue * | fpv = NULL |
||
) |
Function compiles and evaluates the specified string.
If the string is successfully compiled and evaluated, and a pointer to an FPValue is provided, the return value is converted to an FPValue and returned through the referenced FPValue. If the string is not successfully compiled and evaluated, error messages are logged to LogSys if net rendering. If not net rendering, error messages are written to Listener or logged to LogSys. Note: This must be called from the main max thread (That contains UI Controls). This is due to the possibility that results from the Maxscript actions can cause the UI to be updated. And since Much of the UI contains WPF Elements which will throw an exception if NOT updated from the main thread.
s | - Points to a null-terminated string that specifies the MAXScript commands to compile and evaluate. This expects a string containing Maxscript expressions, NOT a file path. |
quietErrors | - If TRUE, or net rendering, errors are logged to LogSys. If FALSE and not net rendering, errors are logged to Listener. |
fpv | - Optionally points to an FPValue. If not NULL, the result of the script evaluation is converted to an FPValue and stored in the specified FPValue. |
ScripterExport Value* ExecuteScript | ( | CharStream * | source, |
bool * | res | ||
) |
Functions compiles and evaluates a CharStream Maxscript expression.
Returns Value* resulting from evaluating source. If res is non-NULL, will contain TRUE on return if script was executed successfully, FALSE if not. Evaluation is within a try/catch, so this function will not throw.
ScripterExport void filein_script | ( | const MCHAR * | filename = NULL | ) |
Executes the given Maxscript file.
Internally this calls filein_script_ex.
filename | - If filename is NULL, this will open a dialog prompting the user to choose a file path to an existing script. If the parameter is non-null, then the given file will be evaluated and compiled. |
ScripterExport BOOL filein_script_ex | ( | const MCHAR * | filename, |
MCHAR * | error_message | ||
) |
Executes the given Maxscript file.
[in] | filename | - The fully qualified path to the existing file. This can be either maxscript files (*.ms), or maxscript zip files (*.mzp), or encrypted maxscript files (*.mse). |
[out] | error_message | - String containing error messages if any. |
ScripterExport void open_script_editor | ( | const MCHAR * | filename = NULL | ) |
Opens the specified file in the Maxscript editor.
filename | - If filename is NULL, this will open a dialog prompting the user to choose a file path to an existing script. If the filename is not found, and empty script is opened in the script editor with the specified filename. If the parameter is non-null, then the given file will be opened in the Maxscript editor. |
ScripterExport DWORD ProcessDefaultActionVal | ( | Value * | inpActionVal, |
DWORD | defaultAction = DEFAULTACTIONS_LOGMSG |
||
) |
ScripterExport void listener_message | ( | UINT | iMsg, |
WPARAM | wParam, | ||
LPARAM | lParam, | ||
BOOL | block_flag | ||
) |
ScripterExport BOOL GetPrintAllElements | ( | ) |
ScripterExport BOOL SetPrintAllElements | ( | BOOL | ) |
ScripterExport bool GetDontRepeatMessages | ( | ) |
ScripterExport bool SetDontRepeatMessages | ( | bool | ) |
ScripterExport bool CanChangeGroupFlags | ( | INode * | node | ) |
ScripterExport BOOL Find_MXS_Name_For_Obj | ( | Animatable * | obj, |
MSTR & | name, | ||
BOOL | explicitName = TRUE |
||
) |
ScripterExport void Replace_LF_with_CRLF | ( | MSTR & | string | ) |
ScripterExport void Replace_CRLF_with_LF | ( | MSTR & | string | ) |
ScripterExport void checkFileOpenModeValidity | ( | const MCHAR * | mode | ) |
ScripterExport BOOL max_name_match | ( | const MCHAR * | max_name, |
const MCHAR * | pattern, | ||
bool | caseSensitive = false |
||
) |
ScripterExport Bitmap* CreateBitmapFromBitmapInfo | ( | BitmapInfo & | bitmapInfo | ) |
ScripterExport int GetStorableBitmapInfoTypeForBitmapInfoType | ( | int | type | ) |
ScripterExport int ConvertValueToID | ( | mxs_value_id_pair | pairs[], |
int | count, | ||
Value * | val, | ||
int | def_id = -1 |
||
) |
ScripterExport Value* ConvertIDToValue | ( | mxs_value_id_pair | pairs[], |
int | count, | ||
int | id, | ||
Value * | def_val = NULL |
||
) |
|
static |
|
static |
|
static |
ScripterExport HashTable* english_to_local |
ScripterExport HashTable* local_to_english |
ScripterExport BOOL non_english_numerics |
ScripterExport Interface* MAXScript_interface |
ScripterExport Interface7* MAXScript_interface7 |
ScripterExport Interface8* MAXScript_interface8 |
ScripterExport Interface9* MAXScript_interface9 |
ScripterExport Interface11* MAXScript_interface11 |
ScripterExport Interface13* MAXScript_interface13 |
ScripterExport Interface14* MAXScript_interface14 |
ScripterExport BOOL escape_enabled |
ScripterExport BOOL MAXScript_detaching |
ScripterExport BOOL MAXScript_running |
ScripterExport HWND main_thread_window |
ScripterExport BOOL progress_bar_up |
ScripterExport IMXSDebugger* theMXSDebugger |
The MXS debugger interface. A Singleton.
ScripterExport HashTable* globals |
ScripterExport HashTable* persistents |
ScripterExport Listener* the_listener |
ScripterExport HWND the_listener_window |
ScripterExport RandGenerator* ClassIDRandGenerator |