STR convarg4(STR a, STR s) { int i; s = newstr(s); if(is_empty(a)){ clrstr(a); return(s); } for(i=0;a[i];i++){ if(a[i] == '/'){ s = basestr(s); continue; } if(a[i] == '.'){ s = dotstr(s); continue; } clrstr(s); s = newstr("{"); s = catstr(s, a); s = catstr(s, "}"); clrstr(a); return(s); } clrstr(a); return(s); }
OSCL_EXPORT_REF PvmiKvpType GetTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPTYPE_UNKNOWN; } // Determine the type char* paramstr = NULL; OSCL_StackString<24> typestr; OSCL_StackString<10> basestr(PVMI_KVPTYPE_STRING_CONSTCHAR); // value typestr = basestr; typestr += PVMI_KVPTYPE_VALUE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_VALUE; } // pointer typestr = basestr; typestr += PVMI_KVPTYPE_POINTER_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_POINTER; } // aggregate typestr = basestr; typestr += PVMI_KVPTYPE_AGGREGATE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_AGGREGATE; } return PVMI_KVPTYPE_UNKNOWN; }
OSCL_EXPORT_REF PvmiKvpAttr GetAttrTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPATTR_UNKNOWN; } // Determine the attribute type char* paramstr = NULL; OSCL_StackString<16> attrstr; OSCL_StackString<8> basestr(PVMI_KVPATTR_STRING_CONSTCHAR); // cap attrstr = basestr; attrstr += PVMI_KVPATTR_CAP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_CAP; } // def attrstr = basestr; attrstr += PVMI_KVPATTR_DEF_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_DEF; } // cur attrstr = basestr; attrstr += PVMI_KVPATTR_CUR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_CUR; } return PVMI_KVPATTR_UNKNOWN; }
OSCL_EXPORT_REF PvmiKvpValueType GetValTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPVALTYPE_UNKNOWN; } // Determine the valtype char* paramstr = NULL; OSCL_StackString<64> valtypestr; OSCL_StackString<10> basestr(PVMI_KVPVALTYPE_STRING_CONSTCHAR); // bool valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BOOL_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BOOL; } // float valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_FLOAT_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_FLOAT; } // double valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_DOUBLE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_DOUBLE; } // uint8 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT8_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT8; } // int32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32; } // uint32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32; } // int64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32; } // uint64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32; } // wchar* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_WCHARPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_WCHARPTR; } // char* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_CHARPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_CHARPTR; } // uint8* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT8PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT8PTR; } // int32* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT32PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32PTR; } // uint32* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT32PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32PTR; } // int64* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT64PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT64PTR; } // uint64* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT64PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT64PTR; } // float* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_FLOATPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_FLOATPTR; } // double* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_DOUBLEPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_DOUBLEPTR; } // ksv valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_KSV_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_KSV; } // pKvp valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_PKVP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_PKVP; } // ppKvp valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_PPKVP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_PPKVP; } // range_float valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_FLOAT_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_FLOAT; } // range_double valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_DOUBLE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_DOUBLE; } // range_uint8 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT8_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT8; } // range_int32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_INT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_INT32; } // range_uint32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT32; } // range_int64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_INT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_INT64; } // range_uint64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT64; } // bitarray32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BITARRAY32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BITARRAY32; } // bitarray64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BITARRAY64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BITARRAY64; } return PVMI_KVPVALTYPE_UNKNOWN; }
if (r==0) { l1 = strlen((char *)name.buf()); l2 = strlen((char *)((Symbol *)ps)->name.buf()); if (l1 > l2) return 1; if (l1==l2) return 0; return -1; } return r; } // Print a single symbol. void Symbol::print(FILE *fp) { fprintf(fp, "%c %-32.32s %3.3s %4.4s %c %08lX%08lX %5d %s", phaseErr ? '*' : ' ', name.buf(), oclassstr(oclass), basestr(base), size, (__int32)(value >> 32), (__int32)(value & 0xffffffff), line, theAssembler.File[file].name.buf()); } int Symbol::print2(FILE *fp) { fprintf(fp, "%s 16'h%04lX", name.buf(), (__int32)(value & 0xffff)); return 1; } const char *Symbol::oclassstr(int n) const { static const char *str[5] = { "NON\0", "PUB\0", "PRI\0", "COM\0", "EXT\0" }; return (n < 5 && n >= 0) ? str[n] : (char *)"<?>"; }