void postmaster_receive_mail (struct char_data *ch, struct char_data *mailman, int cmd, char *arg) { char buf[256]; struct obj_data *obj; if (!has_mail (GET_IDNUM (ch))) { sprintf (buf, "$n tells you, 'Sorry, you don't have any mail waiting.'"); act (buf, FALSE, mailman, 0, ch, TO_VICT); return; } while (has_mail (GET_IDNUM (ch))) { obj = create_obj (); obj->item_number = NOTHING; obj->name = str_dup ("mail paper letter"); obj->short_description = str_dup ("a piece of mail"); obj->description = str_dup ("Someone has left a piece of mail here."); GET_OBJ_TYPE (obj) = ITEM_NOTE; GET_OBJ_WEAR (obj) = ITEM_WEAR_TAKE | ITEM_WEAR_HOLD; GET_OBJ_WEIGHT (obj) = 1; GET_OBJ_COST (obj) = 30; GET_OBJ_RENT (obj) = 10; obj->action_description = read_delete (GET_IDNUM (ch)); if (obj->action_description == NULL) obj->action_description = str_dup ("Mail system error - please report. Error #11.\r\n"); obj_to_char (obj, ch); act ("$n gives you a piece of mail.", FALSE, mailman, 0, ch, TO_VICT); act ("$N gives $n a piece of mail.", FALSE, ch, 0, mailman, TO_ROOM); } }
AST_stmt* readASTStmt(BufferedReader* reader) { uint8_t type = reader->readByte(); if (VERBOSITY("parsing") >= 2) printf("type = %d\n", type); if (type == 0) return NULL; uint8_t checkbyte = reader->readByte(); assert(checkbyte == 0xae); switch (type) { case AST_TYPE::Assert: return read_assert(reader); case AST_TYPE::Assign: return read_assign(reader); case AST_TYPE::AugAssign: return read_augassign(reader); case AST_TYPE::Break: return read_break(reader); case AST_TYPE::ClassDef: return read_classdef(reader); case AST_TYPE::Continue: return read_continue(reader); case AST_TYPE::Delete: return read_delete(reader); case AST_TYPE::Expr: return read_expr(reader); case AST_TYPE::For: return read_for(reader); case AST_TYPE::FunctionDef: return read_functiondef(reader); case AST_TYPE::Global: return read_global(reader); case AST_TYPE::If: return read_if(reader); case AST_TYPE::Import: return read_import(reader); case AST_TYPE::ImportFrom: return read_importfrom(reader); case AST_TYPE::Pass: return read_pass(reader); case AST_TYPE::Print: return read_print(reader); case AST_TYPE::Raise: return read_raise(reader); case AST_TYPE::Return: return read_return(reader); case AST_TYPE::TryExcept: return read_tryexcept(reader); case AST_TYPE::TryFinally: return read_tryfinally(reader); case AST_TYPE::While: return read_while(reader); case AST_TYPE::With: return read_with(reader); default: fprintf(stderr, "Unknown stmt node type (parser.cpp:" STRINGIFY(__LINE__) "): %d\n", type); exit(1); break; } }