#define _INCLUDE_INTERFACE_H // driver abstraction kit -- abstraction layer from driver details // generic string replacer #define prereplace(s) (" "+s+" ") #define replace(s, o, n) implode(explode(s, o), n) #define postreplace(s) (s = s[1..<2]) // let's use index() for strings and arrays // to avoid confusion with mapping-member semantics // in fact, with mudos we cant use member() // #define index strsrch //efine rindex TODO // amylaar provides strstr() to find a string in an other string // in mudos this is done using strsrch #define strstr strsrch // rexxism: is small an abbreviation of big? #define abbrev(SMALL, BIG) (strstr(BIG, SMALL) == 0) // the same thing at the tail of the string #define trail(SMALL, BIG) (strstr(BIG, SMALL, -strlen(SMALL)) != -1) // the way i use member is usually to see if a key is defined // in a mapping, so here goes: // #define member(map, key) (!undefinedp(map[key])) // compare strings ignoring case #define stricmp(one, two) (lower_case(one) != lower_case(two)) // amylaar mappings have other efun names than mudos (why?) #define m_delete map_delete #define m_indices keys #define mappingp mapp #define walk_mapping map_mapping // debugging disabled for now :-( #define D(text) // efuns mudos doesn't support #define regreplace(str, patt, repl, f) \ ... #pragma save_binary // #pragma warnings #pragma optimize all #if DEBUG > 1 # pragma error_context #endif // this is said to work, but doesn't // #pragma no_save_types // #pragma no_strict_types // MudOS doesnt have this: #define __EFUN_DEFINED__(whatever) 0 // every lpc dialect has its own foreach syntax. aint that cute? #define each(ITERATOR, LIST) foreach(ITERATOR in LIST) #define mapeach(KEY, VALUE, MAPPING) foreach(KEY, VALUE in MAPPING)