I'm writing a C++ class, CBookSpellDef which has the following methods:
    int     GetIndexOf(const char *psz);
    char*   GetNameAtIndex(int index) { return m_spellTypes[index].szName; }
    char*   GetWeaponNameAtIndex(int index) { return m_spellTypes[index].szWeaponName; }
    int     GetBasePowerAtIndex(int index) { return m_spellTypes[index].iBasePower; }
    int     GetCostAtIndex(int index) { return m_spellTypes[index].iCost; }
    int     GetFlagsAtIndex(int index) { return m_spellTypes[index].iFlags; }
Compare to those of a very similar class, CAmmoDef from the Source SDK:
    int                 Index(const char *psz);
    int                 PlrDamage(int nAmmoIndex);
    int                 NPCDamage(int nAmmoIndex);
    int                 MaxCarry(int nAmmoIndex);
    int                 DamageType(int nAmmoIndex);
    int                 TracerType(int nAmmoIndex);
    float               DamageForce(int nAmmoIndex);
    int                 MinSplashSize(int nAmmoIndex);
    int                 MaxSplashSize(int nAmmoIndex);
    int                 Flags(int nAmmoIndex);
These are all simple methods which return values from an instance of a struct at an index of a member array of the class, said instance representing magic book spells in the case of CBookSpellDef, or ammunition types in the case of CAmmoDef.
Are my names "too descriptive" while the ones from the Source SDK are the right length? What would the appropriate length and level of "descriptiveness" for these method names be?

CBookSpellDef? How is it different from just aSpell?CAmmoDefmanages all of the ammo types in Half-Life 2 and other Source games,CBookSpellDefmanages the types of magic spells in my game, which work very similarly to ammo in other Source games.Cprefix andDefsuffix?