name.h

Go to the documentation of this file.
00001 /*  
00002  *      Name.h - Name class for MAXScript
00003  *
00004  *          Copyright (c) John Wainwright 1996
00005  *
00006  */
00007 
00008 #pragma once
00009 
00010 #include "..\ScripterExport.h"
00011 #include "..\kernel\value.h"
00012 // forward declarations
00013 class HashTable;
00014 
00015 visible_class_debug_ok (Name)
00016 
00017 class Name : public Value
00018 {
00019 public:
00020     MCHAR*      string;
00021     static      HashTable* intern_table;
00022                 Name(const MCHAR* init_string);
00023     ScripterExport ~Name();
00024 
00025 #   define      is_name(v) ((DbgVerify(!is_sourcepositionwrapper(v)), (v))->tag == class_tag(Name))
00026     static void setup();
00027     static ScripterExport Value* intern(const MCHAR* str);
00028     static ScripterExport Value* find_intern(const MCHAR* str);
00029                 classof_methods (Name, Value);
00030     
00031     ScripterExport void sprin1(CharStream* s);
00032     void        collect() { delete this; }
00033     MCHAR*      to_string();
00034     MSTR        to_filename();
00035     void        to_fpvalue(FPValue& v) { v.s = to_string(); v.type = TYPE_NAME; }
00036 
00037 #include "..\macros\define_implementations.h"
00038     use_generic( coerce,    "coerce");
00039     use_generic( gt,        ">");
00040     use_generic( lt,        "<");
00041     use_generic( ge,        ">=");
00042     use_generic( le,        "<=");
00043     use_generic( copy,      "copy");
00044 
00045     // scene I/O 
00046     IOResult Save(ISave* isave);
00047     static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
00048 
00049 };
00050 
00051 /* core interned names */
00052 
00053 #include "..\macros\define_external_functions.h"
00054 #   include "..\protocols\corenames.inl"
00055 
00056